From 6510a1b0c435d63fe86ad8348102c25598b9a161 Mon Sep 17 00:00:00 2001 From: Dmitry Date: Mon, 1 Jun 2026 15:06:31 +0300 Subject: [PATCH] vault backup: 2026-06-01 15:06:31 --- .obsidian/workspace.json | 16 +- 00 Inbox/Экзамен - Полный конспект.md | 1371 +++++++++++++++++++++++++ 99 System/INDEX.md | 4 +- 3 files changed, 1381 insertions(+), 10 deletions(-) create mode 100644 00 Inbox/Экзамен - Полный конспект.md diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index fe14a74..46407de 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -28,13 +28,13 @@ "state": { "type": "markdown", "state": { - "file": "99 System/Archive/Экзамен - MOC.md", + "file": "00 Inbox/Экзамен - Полный конспект.md", "mode": "source", "source": false, "backlinks": false }, "icon": "lucide-file", - "title": "Экзамен - MOC" + "title": "Экзамен - Полный конспект" } } ], @@ -159,7 +159,7 @@ "profileSourceId": "7004edff-76db-412f-95d3-5fd8e180d055", "serial": { "columns": 27, - "data": "\u001b[5C\u001b[38;5;231;2m \u001b[4C\u001b[22m ]\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m |\r\n\u001b[5C\u001b[2m 551\u001b[1C\u001b[22m |\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m [\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m [\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m A\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m c\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m t\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m i\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m v\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m e\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m S\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m t\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m o\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m r\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m a\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m g\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m e\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m ]\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m ]\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m |\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m A\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m c\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m t\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m i\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m v\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m e\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m S\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m t\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m o\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m r\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m a\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m g\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m e\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m |\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m p\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m r\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m o\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m c\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m e\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m s\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m s\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m i\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m n\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m g\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m |\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m c\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m o\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m n\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m c\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m e\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m p\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m t\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m |\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m [\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m p\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m r\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m o\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m g\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m r\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m a\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m m\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m m\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m i\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m n\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m g\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m ,\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m r\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m u\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m b\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m y\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m -\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m o\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m n\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m -\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m r\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m a\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m i\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m l\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m s\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m ]\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m |\r\n\u001b[5C\u001b[2m 552\u001b[1C\u001b[22m |\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m [\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m [\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m C\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m a\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m p\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m i\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m s\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m t\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m r\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m a\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m n\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m o\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m d\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m e\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m p\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m l\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m o\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m y\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m ч\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m е\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m р\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m е\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m з\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m s\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m y\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m s\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m t\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m e\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m m\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m d\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m ]\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m ]\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m |\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m C\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m a\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m p\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m i\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m s\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m t\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m r\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m a\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m n\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m o\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m d\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m e\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m p\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m l\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m o\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m y\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m ч\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m е\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m р\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m е\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m з\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m s\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m y\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m s\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m t\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m e\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m m\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m d\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m |\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m s\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m e\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m e\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m d\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m |\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m g\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m u\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m i\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m d\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m e\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m |\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m [\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m p\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m r\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m o\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m g\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m r\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m a\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m m\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m m\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m i\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m n\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m g\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m ,\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m r\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m u\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m b\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m y\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m -\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m o\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m n\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m -\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m r\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m a\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m i\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m l\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m s\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m ,\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m d\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m e\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m p\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m l\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m o\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m y\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m ]\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m |\r\n\u001b[5C\u001b[38;5;77;48;5;22m 553 +\u001b[38;5;231m|\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m \u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m[\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m[\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mD\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231me\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mp\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231ml\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mo\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231my\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m \u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m-\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m \u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mf\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mi\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mn\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mr\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231me\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mp\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mo\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mr\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mt\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m-\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231ma\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mn\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231ma\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231ml\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231my\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mz\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231me\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mr\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m]\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m]\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m \u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m|\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m \u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mИ\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mн\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mс\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mт\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mр\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mу\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mк\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mц\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mи\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mя\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m \u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mп\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mо\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m \u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mд\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mе\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mп\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mл\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mо\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mю\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m \u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mf\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mi\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mn\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mr\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231me\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mp\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mo\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mr\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mt\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m-\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231ma\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mn\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231ma\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231ml\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231my\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mz\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231me\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mr\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m \u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m|\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m \u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231ms\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231me\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231me\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231md\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m \u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m|\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m \u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mg\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mu\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mi\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231md\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231me\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m \u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m|\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m \u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m[\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mp\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mr\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mo\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mg\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mr\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231ma\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mm\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mm\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mi\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mn\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mg\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m,\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m \u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mr\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mu\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mb\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231my\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m-\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mo\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mn\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m-\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mr\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231ma\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mi\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231ml\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231ms\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m,\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m \u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231md\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231me\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mp\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231ml\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mo\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231my\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m,\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m \u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231ml\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mi\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mn\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mu\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mx\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m]\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m \u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m|\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m 554 +\u001b[38;5;231m|\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m \u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m[\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m[\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mR\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231ma\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mi\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231ml\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231ms\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m \u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m8\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m \u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mM\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mi\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mg\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mr\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231ma\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mt\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mi\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mo\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mn\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m \u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mG\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mu\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mi\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231md\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231me\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m]\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m]\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m \u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m|\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m \u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mR\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231ma\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mi\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231ml\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231ms\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m \u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m8\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m \u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mM\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mi\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mg\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mr\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231ma\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mt\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mi\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mo\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mn\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m \u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mG\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mu\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mi\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231md\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231me\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m \u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m(\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mf\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mi\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mn\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mr\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231me\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mp\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mo\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mr\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mt\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m-\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231ma\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mn\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231ma\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231ml\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231my\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mz\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231me\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mr\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m)\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m \u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m|\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m \u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231ms\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231me\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231me\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231md\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m \u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m|\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m \u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mg\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mu\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mi\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231md\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231me\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m \u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m|\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m \u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m[\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mp\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mr\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mo\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mg\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mr\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231ma\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mm\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mm\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mi\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mn\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mg\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m,\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m \u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mr\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mu\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mb\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231my\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m-\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mo\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mn\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m-\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mr\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231ma\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mi\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231ml\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231ms\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m,\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m \u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mr\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231ma\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mi\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231ml\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231ms\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m-\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m8\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m,\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m \u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mm\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mi\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mg\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mr\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231ma\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mt\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mi\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mo\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231mn\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m]\u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m \u001b[0m\r\n\u001b[5C\u001b[38;5;77;48;5;22m +\u001b[38;5;231m|\u001b[0m\r\n\u001b[5C\u001b[38;5;231;2m 555\u001b[1C\u001b[22m |\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m [\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m [\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m R\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m a\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m i\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m l\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m s\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m c\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m r\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m e\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m d\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m e\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m n\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m t\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m i\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m a\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m l\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m s\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m e\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m d\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m i\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m t\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m н\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m е\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m о\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m т\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m к\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m р\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m ы\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m в\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m а\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m е\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m т\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m р\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m е\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m д\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m а\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m к\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m т\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m о\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m р\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m ]\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m ]\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m |\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m R\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m a\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m i\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m l\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m s\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m c\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m r\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m e\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m d\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m e\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m n\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m t\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m i\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m a\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m l\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m s\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m e\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m d\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m i\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m t\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m н\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m е\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m о\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m т\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m к\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m р\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m ы\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m в\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m а\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m е\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m т\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m р\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m е\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m д\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m а\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m к\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m т\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m о\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m р\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m |\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m s\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m e\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m e\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m d\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m |\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m g\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m u\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m i\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m d\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m e\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m |\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m [\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m p\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m r\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m o\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m g\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m r\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m a\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m m\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m m\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m i\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m n\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m g\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m ,\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m r\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m u\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m b\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m y\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m -\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m o\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m n\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m -\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m r\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m a\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m i\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m l\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m s\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m ,\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m d\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m e\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m b\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m u\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m g\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m ]\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m |\r\n\u001b[5C\u001b[2m 556\u001b[1C\u001b[22m |\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m [\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m [\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m R\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m u\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m b\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m y\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m O\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m n\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m R\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m a\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m i\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m l\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m s\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m -\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m M\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m O\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m C\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m ]\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m ]\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m |\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m R\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m u\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m b\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m y\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m O\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m n\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m R\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m a\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m i\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m l\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m s\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m -\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m M\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m O\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m C\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m |\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m p\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m r\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m o\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m c\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m e\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m s\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m s\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m i\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m n\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m g\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m |\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m m\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m o\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m c\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m |\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m [\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m p\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m r\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m o\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m g\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m r\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m a\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m m\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m m\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m i\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m n\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m g\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m ,\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m r\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m u\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m b\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m y\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m -\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m o\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m n\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m -\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m r\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m a\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m i\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m l\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m s\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m ]\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m |\r\n\u001b[5C\u001b[2m 557\u001b[1C\u001b[22m |\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m [\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m [\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m S\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m i\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m d\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m e\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m k\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m i\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m q\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m -\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m о\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m с\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m н\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m о\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m в\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m а\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m р\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m а\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m б\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m о\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m т\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m ы\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m ]\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m ]\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m |\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m S\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m i\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m d\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m e\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m k\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m i\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m q\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m -\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m О\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m с\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m н\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m о\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m в\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m а\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m Р\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m а\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m б\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m о\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m т\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m ы\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m |\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m p\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m r\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m o\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m c\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m e\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m s\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m s\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m i\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m n\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m g\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m |\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m c\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m o\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m n\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m c\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m e\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m p\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m t\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m |\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m [\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m p\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m r\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m o\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m g\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m r\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m a\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m m\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m m\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m i\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m n\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m g\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m ,\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m r\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m u\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m b\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m y\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m -\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m o\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m n\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m -\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m r\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m a\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m i\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m l\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m s\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m ]\r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m \r\n\u001b[5C\u001b[2m \u001b[4C\u001b[22m |\r\n\r\n●\u001b[1C\u001b[0mТакже\u001b[1Cобновляю\r\n\u001b[2Cсчётчик\u001b[1Ctotal\r\n\u001b[2Cи\u001b[1Cдату\u001b[1Cв\r\n\u001b[2CINDEX.md\u001b[1C(было\r\n\u001b[2C468,\u001b[1Cстало\r\n\u001b[2C468\u001b[1C—\u001b[1Cфайлы\r\n\u001b[2Cпереехали,\u001b[1Cне\r\n\u001b[2Cдобавились;\u001b[1Cно\r\n\u001b[2C\u001b[38;5;153m00\u001b[1CInbox\r\n\u001b[2C\u001b[0mпотерял\u001b[1C2\r\n\u001b[2Cзаписи).\r\n\u001b[2CСчётчик\u001b[1Cне\r\n\u001b[2Cменяю\u001b[1C—\u001b[1Cфайлы\r\n\u001b[2Cбыли\u001b[1Cв\u001b[1Cvault\r\n\u001b[2Cраньше.\r\n\r\n\u001b[2CФинально\r\n\u001b[2Cубираю\u001b[1Cстроки\r\n\u001b[2Cо\u001b[1Cних\u001b[1Cиз\r\n\u001b[2Cсекции\u001b[1C\u001b[38;5;153m00\r\n\u001b[2CInbox\u001b[1C\u001b[0mв\u001b[1CINDEX\r\n\u001b[2C(там\u001b[1Cих\u001b[1Cнет\u001b[1C—\r\n\u001b[2Cони\u001b[1Cуже\u001b[1Cбыли\r\n\u001b[2Cудалены\u001b[1Cиз\r\n\u001b[2Cиндекса\u001b[1Cдо\r\n\u001b[2Cэтого).\r\n\u001b[2CПроверю\u001b[1Cсекцию\r\n\u001b[2CInbox\u001b[1Cещё\r\n\u001b[2Cраз.\r\n\r\n\u001b[2C\u001b[38;5;246mSearched\u001b[1Cfor\u001b[1C\u001b[1m1\r\n\u001b[2C\u001b[22mpattern\r\n\u001b[2C(ctrl+o\u001b[1Cto\r\n\u001b[2Cexpand)\r\n\r\n\u001b[38;5;231m●\u001b[1C\u001b[0mЧисто.\u001b[1CГотово:\r\n\r\n\u001b[2C-\u001b[1C\u001b[38;5;153mDeploy\u001b[1C-\r\n\u001b[2Cfinreport-anal\r\n\u001b[2Cyzer.md\u001b[1C\u001b[0m→\u001b[1C\u001b[38;5;153m90\r\n\u001b[2CLibrary/Progra\r\n\u001b[2Cmming/Ruby\u001b[1COn\r\n\u001b[2CRails/\r\n\u001b[2C\u001b[0m-\u001b[1C\u001b[38;5;153mRails\u001b[1C8\r\n\u001b[2CMigration\r\n\u001b[2CGuide.md\u001b[1C\u001b[0m→\u001b[1C\u001b[38;5;153m90\r\n\u001b[2CLibrary/Progra\r\n\u001b[2Cmming/Ruby\u001b[1COn\r\n\u001b[2CRails/\r\n\u001b[2C\u001b[0m-\u001b[1C\u001b[38;5;153msource:\u001b[1C\u001b[0mв\r\n\u001b[2Cобоих\r\n\r\n\u001b[2C-\u001b[1C\u001b[38;5;153mDeploy\u001b[1C-\r\n\u001b[2Cfinreport-analyzer.md\u001b[1C\u001b[0m→\u001b[1C\u001b[38;5;153m90\r\n\u001b[2CLibrary/Programming/Ruby\r\n\u001b[2C\u001b[0mубираю\u001b[1Cстроки\r\n\u001b[2Cо\u001b[1Cних\u001b[1Cиз\r\n\u001b[2Cсекции\u001b[1C\u001b[38;5;153m00\r\n\u001b[2CInbox\u001b[1C\u001b[0mв\u001b[1CINDEX\r\n\u001b[2C(там\u001b[1Cих\u001b[1Cнет\u001b[1C—\r\n\u001b[2Cони\u001b[1Cуже\u001b[1Cбыли\r\n\u001b[2Cудалены\u001b[1Cиз\r\n\u001b[2Cиндекса\u001b[1Cдо\r\n\u001b[2Cэтого).\r\n\u001b[2CПроверю\u001b[1Cсекцию\r\n\u001b[2CInbox\u001b[1Cещё\r\n\u001b[2Cраз.\r\n\r\n\u001b[2C\u001b[38;5;246mSearched\u001b[1Cfor\u001b[1C\u001b[1m1\u001b[22m pattern\r\n\u001b[2C(ctrl+o\u001b[1Cto\u001b[1Cexpand)\r\n\r\n\u001b[38;5;231m●\u001b[1C\u001b[0mЧисто.\u001b[1CГотово:\r\n\r\n\u001b[2C-\u001b[1C\u001b[38;5;153mDeploy\u001b[1C-\r\n\u001b[2Cfinreport-analyzer.md\u001b[1C\u001b[0m→\r\n\u001b[2C\u001b[38;5;153m90\r\n\u001b[2CLibrary/Programming/Ruby\r\n\u001b[2COn\u001b[1CRails/\r\n\u001b[2C\u001b[0m-\u001b[1C\u001b[38;5;153mRails\u001b[1C8\u001b[1CMigration\r\n\u001b[2CGuide.md\u001b[1C\u001b[0m→\u001b[1C\u001b[38;5;153m90\r\n\u001b[2CLibrary/Programming/Ruby\r\n\u001b[2COn\u001b[1CRails/\r\n\u001b[2C\u001b[0m-\u001b[1C\u001b[38;5;153msource:\u001b[1C\u001b[0mв\u001b[1Cобоих\r\n\u001b[2Cисправлен\u001b[1Cс\u001b[1Cwikilink\u001b[1Cна\r\n\u001b[2Cplain\u001b[1Ctext\r\n\u001b[2C-\u001b[1CINDEX.md\u001b[1Cобновлён\r\n\u001b[2C(добавлены\u001b[1C2\u001b[1Cзаписи\u001b[1Cв\r\n\u001b[2Cнужную\u001b[1Cсекцию)\r\n\r\n\u001b[2CВ\u001b[1C\u001b[38;5;153m00\u001b[1CInbox/\u001b[1C\u001b[0mостался\r\n\u001b[2Cтолько\u001b[1C\u001b[38;5;153mЭкзамен\u001b[1C-\u001b[1CMOC.md\u001b[1C\u001b[0m—\r\n\u001b[2Cне\u001b[1Cтронут.\r\n\r\n\u001b[2C\u001b[1mНезакрытые\u001b[1Cсвязи:\r\n\u001b[2C\u001b[38;5;153;22m[[Gitlab]]\u001b[1C\u001b[0mв\r\n\u001b[2CDeploy-заметке\u001b[1C—\u001b[1Cнет\r\n\u001b[2Cтакой\u001b[1Cзаметки\u001b[1Cв\u001b[1Cvault.\r\n\u001b[2CЕсли\u001b[1Cпланируешь\r\n\u001b[2Cсоздавать,\u001b[1Cможно\u001b[1Cоформить\r\n\u001b[2Cотдельно.\r\n\r\n\u001b[38;5;246m✻\u001b[1CWorked\u001b[1Cfor\u001b[1C56s\r\n\r\n\u001b[38;5;244m───────────────────────────\r\n\u001b[0m❯ \u001b[2mcommit\u001b[1Cthis\r\n\u001b[0m * Restored history at Mon Jun 01 2026 14:58:35 GMT+0300 (Москва, стандартное время)\r\n\r\n\u001b[33m⚠ Последний бэкап: 4 дн. назад. Запусти: backup-menu\r\n\u001b[38;5;76m❯\u001b[0m \u001b[31;1mсдфгву\r\n\u001b[0mzsh: command not found: сдфгву\r\n\u001b[38;5;196m❯\u001b[0m \u001b[32mclaude\r\n\u001b[0m󰖟 Proxy enabled (127.0.0.1:2080)\r\n\u001b[38;5;174m ▐\u001b[48;5;16m▛███▜\u001b[49m▌\u001b[2C\u001b[39;1mClaude\u001b[1CCode\r\n\u001b[10C\u001b[38;5;246;22mv2.1.159\r\n\u001b[38;5;174m▝▜\u001b[48;5;16m█████\u001b[49m▛\u001b[2C\u001b[38;5;246mSonnet\u001b[1C4.6\u001b[1Cwith\r\n\u001b[38;5;174m▘\u001b[9C\u001b[38;5;246mhig…\r\n\u001b[38;5;174m \u001b[1C▘▘\u001b[1C▝▝\u001b[3C\u001b[38;5;246mClaude\u001b[1CPro\r\n\u001b[38;5;174m \u001b[9C\u001b[38;5;246m~/…/SecondBrain\r\n\r\n\u001b[0m \u001b[38;5;174;1mOpus 4.8 is now \r\n\u001b[0m \u001b[38;5;174;1mavailable!\u001b[38;5;246;22m · /model to \r\n\u001b[0m \u001b[38;5;246mswitch\r\n\r\n\u001b[38;5;239;48;5;237m❯ \u001b[38;5;231m@\"99 \u001b[39m \r\n \u001b[38;5;231mSystem/Archive/Экзамен -\u001b[39m \r\n \u001b[38;5;231mMOC.md\" пройдись по \u001b[39m \r\n \u001b[38;5;231mэтой заметке и объедини \u001b[39m \r\n \u001b[38;5;231mвсе конспекты по этой \u001b[39m \r\n \u001b[38;5;231mтеме в одну временную \u001b[39m \r\n \u001b[38;5;231mзаметку, я сделаю из неё\u001b[39m \r\n \u001b[38;5;231mpdf, потом удалю\u001b[39m \r\n\u001b[38;5;246;49m ⎿  Read \u001b[1m99 \u001b[14X\r\n\u001b[0m \u001b[38;5;246;1mSystem/Archive/Экзамен\r\n\u001b[5C- MOC.md\u001b[22m (48 lines)\r\n\r\n\u001b[38;5;231m●\u001b[0m Сначала прочитаю\r\n\u001b[2CINDEX.md,\u001b[1Cчтобы\u001b[1Cнайти\r\n пути ко всем заметкам.\r\n\r\n \u001b[38;5;246mRead \u001b[1m1\u001b[22m file (ctrl+o to \r\n\u001b[2Cexpand)\r\n\r\n\u001b[38;5;231m●\u001b[1C\u001b[0mНашёл\u001b[1Cвсе\u001b[1Cпути.\u001b[1CЧитаю\u001b[1Cвсе\r\n \u001b[1C13 заметок параллельно.\r\n\r\n\u001b[38;5;246m●\u001b[0m Reading \u001b[1m13\u001b[0m files… \u001b[38;5;246m(ctrl+o\r\n\u001b[0m \u001b[38;5;246mto expand)\r\n ⎿ 90 Library/Programming\r\n\u001b[0m \u001b[1C \u001b[38;5;246m/Python/Django: \r\n\u001b[5CПредставления, шаблоны\r\n\u001b[5Cи CBV.md\r\n\r\n\u001b[38;5;220;1m✽\u001b[1C\u001b[22mStewing… \u001b[38;5;221m(thinking)\r\n\r\n\u001b[38;5;244m───────────────────────────\r\n\u001b[38;5;246m❯ \r\n\u001b[38;5;244m───────────────────────────\r\n\u001b[2C\u001b[38;5;246mesc\u001b[1Cto\u001b[1Cinterrupt\r\n\u001b[3A\u001b[2C\u001b[0m", + "data": "\u001b[1C\u001b[38;5;231;2m \u001b[5C\u001b[22mения\r\n\u001b[1C\u001b[2m \u001b[1C871\u001b[1C\u001b[22mPerson.objects.di\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mstinct()\r\n\u001b[1C\u001b[2m \u001b[1C872\r\n\u001b[1C \u001b[1C873\u001b[1C\u001b[22m#\u001b[1CКоличество\r\n\u001b[1C\u001b[2m \u001b[1C874\u001b[1C\u001b[22mPerson.objects.co\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22munt()\r\n\u001b[1C\u001b[2m \u001b[1C875\r\n\u001b[1C \u001b[1C876\u001b[1C\u001b[22m#\u001b[1CПроверка\u001b[1Cсущест\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mвования\u001b[1C(не\u001b[1Cзагру\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mжает\u001b[1Cобъекты)\r\n\u001b[1C\u001b[2m \u001b[1C877\u001b[1C\u001b[22mPerson.objects.fi\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mlter(age=18).exis\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mts()\r\n\u001b[1C\u001b[2m \u001b[1C878\u001b[1C\u001b[22m```\r\n\u001b[1C\u001b[2m \u001b[1C879\r\n\u001b[1C \u001b[1C880\u001b[1C\u001b[22m###\u001b[1CField\u001b[1CLookups\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m (операторы\u001b[1Cпоиск\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mа)\r\n\u001b[1C\u001b[2m \u001b[1C881\r\n\u001b[1C \u001b[1C882\u001b[1C\u001b[22m```python\r\n\u001b[1C\u001b[2m \u001b[1C883\u001b[1C\u001b[22m#\u001b[1CТочное\u001b[1Cсовпаден\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mие\r\n\u001b[1C\u001b[2m \u001b[1C884\u001b[1C\u001b[22mfilter(name__exac\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mt=\"Ivan\")\r\n\u001b[1C\u001b[2m \u001b[1C885\u001b[1C\u001b[22mfilter(name__iexa\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mct=\"ivan\")\u001b[6C#\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m без\u001b[1Cучёта\u001b[1Cрегист\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mра\r\n\u001b[1C\u001b[2m \u001b[1C886\r\n\u001b[1C \u001b[1C887\u001b[1C\u001b[22m#\u001b[1CСравнение\u001b[1Cчисел\r\n\u001b[1C\u001b[2m \u001b[1C888\u001b[1C\u001b[22mfilter(age__gt=18\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m)\u001b[4C#\u001b[1C>\r\n\u001b[1C\u001b[2m \u001b[1C889\u001b[1C\u001b[22mfilter(age__gte=1\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m8)\u001b[3C#\u001b[1C>=\r\n\u001b[1C\u001b[2m \u001b[1C890\u001b[1C\u001b[22mfilter(age__lt=30\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m)\u001b[4C#\u001b[1C<\r\n\u001b[1C\u001b[2m \u001b[1C891\u001b[1C\u001b[22mfilter(age__lte=3\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m0)\u001b[3C#\u001b[1C<=\r\n\u001b[1C\u001b[2m \u001b[1C892\r\n\u001b[1C \u001b[1C893\u001b[1C\u001b[22m#\u001b[1CВхождение\r\n\u001b[1C\u001b[2m \u001b[1C894\u001b[1C\u001b[22mfilter(name__cont\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mains=\"van\")\r\n\u001b[1C\u001b[2m \u001b[1C895\u001b[1C\u001b[22mfilter(name__icon\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mtains=\"van\")\u001b[4C#\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m без\u001b[1Cучёта\u001b[1Cрегист\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mра\r\n\u001b[1C\u001b[2m \u001b[1C896\r\n\u001b[1C \u001b[1C897\u001b[1C\u001b[22m#\u001b[1CСписок\u001b[1C/\u001b[1Cдиапаз\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mон\r\n\u001b[1C\u001b[2m \u001b[1C898\u001b[1C\u001b[22mfilter(id__in=[1,\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m 2,\u001b[1C3])\r\n\u001b[1C\u001b[2m \u001b[1C899\u001b[1C\u001b[22mfilter(age__range\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m=(18,\u001b[1C30))\r\n\u001b[1C\u001b[2m \u001b[1C900\r\n\u001b[1C \u001b[1C901\u001b[1C\u001b[22m#\u001b[1CNULL\r\n\u001b[1C\u001b[2m \u001b[1C902\u001b[1C\u001b[22mfilter(bio__isnul\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22ml=True)\r\n\u001b[1C\u001b[2m \u001b[1C903\u001b[1C\u001b[22m```\r\n\u001b[1C\u001b[2m \u001b[1C904\r\n\u001b[1C \u001b[1C905\u001b[1C\u001b[22m###\u001b[1CАгрегация\u001b[1Cи\u001b[1Cа\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mннотация\r\n\u001b[1C\u001b[2m \u001b[1C906\r\n\u001b[1C \u001b[1C907\u001b[1C\u001b[22m```python\r\n\u001b[1C\u001b[2m \u001b[1C908\u001b[1C\u001b[22mfrom\u001b[1Cdjango.db.mo\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mdels\u001b[1Cimport\u001b[1CAvg,\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mCount,\u001b[1CSum,\u001b[1CMin,\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mMax\r\n\u001b[1C\u001b[2m \u001b[1C909\r\n\u001b[1C \u001b[1C910\u001b[1C\u001b[22m#\u001b[1Caggregate\u001b[1C—\u001b[1Cодн\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mо\u001b[1Cитоговое\u001b[1Cзначен\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mие;\u001b[1Cвозвращает\u001b[1Cdi\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mct\r\n\u001b[1C\u001b[2m \u001b[1C911\u001b[1C\u001b[22mresult\u001b[1C=\u001b[1CBook.obj\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mects.aggregate(av\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mg_rating=Avg(\"rat\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22ming\"))\r\n\u001b[1C\u001b[2m \u001b[1C912\u001b[1C\u001b[22mprint(result[\"avg\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m_rating\"])\r\n\u001b[1C\u001b[2m \u001b[1C913\r\n\u001b[1C \u001b[1C914\u001b[1C\u001b[22m#\u001b[1Cannotate\u001b[1C—\u001b[1Cвычи\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mсляемое\u001b[1Cполе\u001b[1Cдля\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mкаждого\u001b[1Cобъекта\r\n\u001b[1C\u001b[2m \u001b[1C915\u001b[1C\u001b[22mauthors\u001b[1C=\u001b[1CAuthor.\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mobjects.annotate(\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mtotal_books=Count\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m(\"books\"))\r\n\u001b[1C\u001b[2m \u001b[1C916\u001b[1C\u001b[22mfor\u001b[1Ca\u001b[1Cin\u001b[1Cauthors:\r\n\u001b[1C\u001b[2m \u001b[1C917\u001b[1C\u001b[22m \u001b[3Cprint(a.name,\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m a.total_books)\r\n\u001b[1C\u001b[2m \u001b[1C918\u001b[1C\u001b[22m```\r\n\u001b[1C\u001b[2m \u001b[1C919\r\n\u001b[1C \u001b[1C920\u001b[1C\u001b[22m###\u001b[1CQ-объекты\u001b[1C(сл\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mожные\u001b[1Cусловия)\r\n\u001b[1C\u001b[2m \u001b[1C921\r\n\u001b[1C \u001b[1C922\u001b[1C\u001b[22m```python\r\n\u001b[1C\u001b[2m \u001b[1C923\u001b[1C\u001b[22mfrom\u001b[1Cdjango.db.mo\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mdels\u001b[1Cimport\u001b[1CQ\r\n\u001b[1C\u001b[2m \u001b[1C924\r\n\u001b[1C \u001b[1C925\u001b[1C\u001b[22m#\u001b[1COR\r\n\u001b[1C\u001b[2m \u001b[1C926\u001b[1C\u001b[22mbooks\u001b[1C=\u001b[1CBook.obje\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mcts.filter(Q(rati\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mng__gt=4)\u001b[1C|\u001b[1CQ(tit\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mle__icontains=\"Dj\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mango\"))\r\n\u001b[1C\u001b[2m \u001b[1C927\r\n\u001b[1C \u001b[1C928\u001b[1C\u001b[22m#\u001b[1CAND\r\n\u001b[1C\u001b[2m \u001b[1C929\u001b[1C\u001b[22mbooks\u001b[1C=\u001b[1CBook.obje\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mcts.filter(Q(rati\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mng__gt=4)\u001b[1C&\u001b[1CQ(is_\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mpublished=True))\r\n\u001b[1C\u001b[2m \u001b[1C930\r\n\u001b[1C \u001b[1C931\u001b[1C\u001b[22m#\u001b[1CNOT\r\n\u001b[1C\u001b[2m \u001b[1C932\u001b[1C\u001b[22mbooks\u001b[1C=\u001b[1CBook.obje\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mcts.filter(~Q(rat\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22ming__lt=3))\r\n\u001b[1C\u001b[2m \u001b[1C933\u001b[1C\u001b[22m```\r\n\u001b[1C\u001b[2m \u001b[1C934\r\n\u001b[1C \u001b[1C935\u001b[1C\u001b[22m###\u001b[1CF-выражения\u001b[1C(\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mоперации\u001b[1Cв\u001b[1CБД)\r\n\u001b[1C\u001b[2m \u001b[1C936\r\n\u001b[1C \u001b[1C937\u001b[1C\u001b[22m```python\r\n\u001b[1C\u001b[2m \u001b[1C938\u001b[1C\u001b[22mfrom\u001b[1Cdjango.db.mo\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mdels\u001b[1Cimport\u001b[1CF\r\n\u001b[1C\u001b[2m \u001b[1C939\r\n\u001b[1C \u001b[1C940\u001b[1C\u001b[22m#\u001b[1CУвеличить\u001b[1Cсчётч\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mик\u001b[1Cпросмотров\u001b[1Cпря\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mмо\u001b[1Cв\u001b[1CБД,\u001b[1Cбез\u001b[1Cзагр\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mузки\u001b[1Cв\u001b[1CPython\r\n\u001b[1C\u001b[2m \u001b[1C941\u001b[1C\u001b[22mBook.objects.filt\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mer(id=1).update(v\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22miews=F(\"views\")\u001b[1C+\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m 1)\r\n\u001b[1C\u001b[2m \u001b[1C942\u001b[1C\u001b[22m```\r\n\u001b[1C\u001b[2m \u001b[1C943\r\n\u001b[1C \u001b[1C944\u001b[1C\u001b[22m###\u001b[1CЦепочки\u001b[1Cметод\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mов\r\n\u001b[1C\u001b[2m \u001b[1C945\r\n\u001b[1C \u001b[1C946\u001b[1C\u001b[22m```python\r\n\u001b[1C\u001b[2m \u001b[1C947\u001b[1C\u001b[22mqueryset\u001b[1C=\u001b[1C(\r\n\u001b[1C\u001b[2m \u001b[1C948\u001b[1C\u001b[22m \u001b[3CPerson.object\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22ms\r\n\u001b[1C\u001b[2m \u001b[1C949\u001b[1C\u001b[22m \u001b[3C.filter(age__\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mgte=18)\r\n\u001b[1C\u001b[2m \u001b[1C950\u001b[1C\u001b[22m \u001b[3C.exclude(is_a\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mctive=False)\r\n\u001b[1C\u001b[2m \u001b[1C951\u001b[1C\u001b[22m \u001b[3C.order_by(\"fi\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mrst_name\")\r\n\u001b[1C\u001b[2m \u001b[1C952\u001b[1C\u001b[22m \u001b[3C.distinct()\r\n\u001b[1C\u001b[2m \u001b[1C953\u001b[1C\u001b[22m)\r\n\u001b[1C\u001b[2m \u001b[1C954\u001b[1C\u001b[22m```\r\n\u001b[1C\u001b[2m \u001b[1C955\r\n\u001b[1C \u001b[1C956\u001b[1C\u001b[22m###\u001b[1CПроблема\u001b[1CN+1\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mи\u001b[1Cоптимизация\r\n\u001b[1C\u001b[2m \u001b[1C957\r\n\u001b[1C \u001b[1C958\u001b[1C\u001b[22m**N+1**\u001b[1C—\u001b[1Cодин\u001b[1Cза\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mпрос\u001b[1Cза\u001b[1Cсписком\u001b[1C+\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m N\u001b[1Cзапросов\u001b[1Cв\u001b[1Cцик\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mле\u001b[1Cна\u001b[1Cкаждый\u001b[1Cсвяз\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mанный\u001b[1Cобъект.\r\n\u001b[1C\u001b[2m \u001b[1C959\r\n\u001b[1C \u001b[1C960\u001b[1C\u001b[22m```python\r\n\u001b[1C\u001b[2m \u001b[1C961\u001b[1C\u001b[22m#\u001b[1CПлохо:\u001b[1CN+1\r\n\u001b[1C\u001b[2m \u001b[1C962\u001b[1C\u001b[22mbooks\u001b[1C=\u001b[1CBook.obje\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mcts.all()\r\n\u001b[1C\u001b[2m \u001b[1C963\u001b[1C\u001b[22mfor\u001b[1Cbook\u001b[1Cin\u001b[1Cbooks\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m:\r\n\u001b[1C\u001b[2m \u001b[1C964\u001b[1C\u001b[22m \u001b[3Cprint(book.au\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mthor.name)\u001b[2C#\u001b[1Cзап\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mрос\u001b[1Cна\u001b[1Cкаждую\u001b[1Cите\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mрацию\r\n\u001b[1C\u001b[2m \u001b[1C965\r\n\u001b[1C \u001b[1C966\u001b[1C\u001b[22m#\u001b[1CХорошо:\u001b[1Cselect_\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mrelated\u001b[1C(JOIN)\u001b[1Cдл\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mя\u001b[1CForeignKey/OneT\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22moOne\r\n\u001b[1C\u001b[2m \u001b[1C967\u001b[1C\u001b[22mbooks\u001b[1C=\u001b[1CBook.obje\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mcts.select_relate\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22md(\"author\")\r\n\u001b[1C\u001b[2m \u001b[1C968\r\n\u001b[1C \u001b[1C969\u001b[1C\u001b[22m#\u001b[1CХорошо:\u001b[1Cprefetc\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mh_related\u001b[1C(отдель\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mный\u001b[1Cзапрос)\u001b[1Cдля\u001b[1CM\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22manyToMany\u001b[1C/\u001b[1Cобрат\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mные\u001b[1Cсвязи\r\n\u001b[1C\u001b[2m \u001b[1C970\u001b[1C\u001b[22mbooks\u001b[1C=\u001b[1CBook.obje\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mcts.prefetch_rela\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mted(\"authors\")\r\n\u001b[1C\u001b[2m \u001b[1C971\u001b[1C\u001b[22m```\r\n\u001b[1C\u001b[2m \u001b[1C972\r\n\u001b[1C \u001b[1C973\u001b[1C\u001b[22m---\r\n\u001b[1C\u001b[2m \u001b[1C974\r\n\u001b[1C \u001b[1C975\u001b[1C\u001b[22m##\u001b[1CБлок\u001b[1C7–10.\u001b[1CDja\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mngo:\u001b[1CViews,\u001b[1CURLs,\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m Templates\r\n\u001b[1C\u001b[2m \u001b[1C976\r\n\u001b[1C \u001b[1C977\u001b[1C\u001b[22m###\u001b[1CМаршрутизация\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m (URLs)\r\n\u001b[1C\u001b[2m \u001b[1C978\r\n\u001b[1C \u001b[1C979\u001b[1C\u001b[22m```python\r\n\u001b[1C\u001b[2m \u001b[1C980\u001b[1C\u001b[22m#\u001b[1Cproject/urls.py\r\n\u001b[1C\u001b[2m \u001b[1C981\u001b[1C\u001b[22mfrom\u001b[1Cdjango.urls\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mimport\u001b[1Cinclude,\u001b[1Cp\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22math\r\n\u001b[1C\u001b[2m \u001b[1C982\r\n\u001b[1C \u001b[1C983\u001b[1C\u001b[22murlpatterns\u001b[1C=\u001b[1C[\r\n\u001b[1C\u001b[2m \u001b[1C984\u001b[1C\u001b[22m \u001b[3Cpath(\"blog/\",\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m include(\"blog.ur\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mls\")),\r\n\u001b[1C\u001b[2m \u001b[1C985\u001b[1C\u001b[22m]\r\n\u001b[1C\u001b[2m \u001b[1C986\u001b[1C\u001b[22m```\r\n\u001b[1C\u001b[2m \u001b[1C987\r\n\u001b[1C \u001b[1C988\u001b[1C\u001b[22m```python\r\n\u001b[1C\u001b[2m \u001b[1C989\u001b[1C\u001b[22m#\u001b[1Cblog/urls.py\r\n\u001b[1C\u001b[2m \u001b[1C990\u001b[1C\u001b[22mfrom\u001b[1Cdjango.urls\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mimport\u001b[1Cpath\r\n\u001b[1C\u001b[2m \u001b[1C991\u001b[1C\u001b[22mfrom\u001b[1C.\u001b[1Cimport\u001b[1Cvie\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mws\r\n\u001b[1C\u001b[2m \u001b[1C992\u001b[1C\u001b[22mfrom\u001b[1C.views\u001b[1Cimpor\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mt\u001b[1CPostListView,\u001b[1CP\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mostDetailView,\u001b[1CAb\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22moutView\r\n\u001b[1C\u001b[2m \u001b[1C993\r\n\u001b[1C \u001b[1C994\u001b[1C\u001b[22mapp_name\u001b[1C=\u001b[1C\"blog\"\r\n\u001b[1C\u001b[2m \u001b[1C995\r\n\u001b[1C \u001b[1C996\u001b[1C\u001b[22murlpatterns\u001b[1C=\u001b[1C[\r\n\u001b[1C\u001b[2m \u001b[1C997\u001b[1C\u001b[22m \u001b[3Cpath(\"\",\u001b[1Cview\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22ms.post_list,\u001b[1Cname\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m=\"post_list\"),\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m \u001b[6C#\u001b[1CFBV\r\n\u001b[1C\u001b[2m \u001b[1C998\u001b[1C\u001b[22m \u001b[3Cpath(\"/\",\u001b[1CPostDetailVi\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mew.as_view(),\u001b[1Cnam\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22me=\"post_detail\"),\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m \u001b[1C#\u001b[1CCBV\r\n\u001b[1C\u001b[2m \u001b[1C999\u001b[1C\u001b[22m \u001b[3Cpath(\"about/\"\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m,\u001b[1CAboutView.as_vi\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mew(),\u001b[1Cname=\"about\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m\"),\r\n\u001b[1C\u001b[2m 1000\u001b[1C\u001b[22m \u001b[3Cpath(\"tag//\",\u001b[1Cviews\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m.posts_by_tag,\u001b[1Cna\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mme=\"posts_by_tag\"\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m),\r\n\u001b[1C\u001b[2m 1001\u001b[1C\u001b[22m]\r\n\u001b[1C\u001b[2m 1002\u001b[1C\u001b[22m```\r\n\u001b[1C\u001b[2m 1003\r\n\u001b[1C 1004\u001b[1C\u001b[22m**Конвертеры\u001b[1Cпути\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m:**\r\n\u001b[1C\u001b[2m 1005\u001b[1C\u001b[22m|\u001b[1CКонвертер\u001b[1C|\u001b[1CТип\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m |\u001b[1CПример\u001b[1CURL\u001b[1C|\r\n\u001b[1C\u001b[2m 1006\u001b[1C\u001b[22m|---|---|---|\r\n\u001b[1C\u001b[2m 1007\u001b[1C\u001b[22m|\u001b[1C``\u001b[1C|\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mСтрока\u001b[1Cбез\u001b[1C`/`\u001b[1C|\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m`/user/ivan/`\u001b[1C|\r\n\u001b[1C\u001b[2m 1008\u001b[1C\u001b[22m|\u001b[1C``\u001b[1C|\u001b[1CЦе\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mлое\u001b[1Cположительное\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m |\u001b[1C`/post/42/`\u001b[1C|\r\n\u001b[1C\u001b[2m 1009\u001b[1C\u001b[22m|\u001b[1C``\u001b[1C|\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m Буквы,\u001b[1Cцифры,\u001b[1C`_\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m`,\u001b[1C`-`\u001b[1C|\u001b[1C`/tag/dj\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mango-orm/`\u001b[1C|\r\n\u001b[1C\u001b[2m 1010\u001b[1C\u001b[22m|\u001b[1C``\u001b[1C|\u001b[1CU\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mUID\u001b[1C|\u001b[1C`/item/0751\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m94d3-...`\u001b[1C|\r\n\u001b[1C\u001b[2m 1011\u001b[1C\u001b[22m|\u001b[1C`\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m`\u001b[1C|\u001b[1CСтрока\u001b[1Cс\u001b[1C`/`\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m|\u001b[1C`/files/a/b/c.t\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mxt`\u001b[1C|\r\n\u001b[1C\u001b[2m 1012\r\n\u001b[1C 1013\u001b[1C\u001b[22m**`re_path`**\u001b[1C—\u001b[1Cм\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mаршрут\u001b[1Cс\u001b[1Cрегулярн\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mым\u001b[1Cвыражением:\r\n\u001b[1C\u001b[2m 1014\u001b[1C\u001b[22m```python\r\n\u001b[1C\u001b[2m 1015\u001b[1C\u001b[22mfrom\u001b[1Cdjango.urls\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mimport\u001b[1Cre_path\r\n\u001b[1C\u001b[2m 1016\u001b[1C\u001b[22mre_path(r\"^post/(\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m?P[0-9]+)/$\",\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m views.post_detai\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22ml)\r\n\u001b[1C\u001b[2m 1017\u001b[1C\u001b[22m```\r\n\u001b[1C\u001b[2m 1018\r\n\u001b[1C 1019\u001b[1C\u001b[22m**Реверс\u001b[1CURL:**\r\n\u001b[1C\u001b[2m 1020\u001b[1C\u001b[22m```python\r\n\u001b[1C\u001b[2m 1021\u001b[1C\u001b[22mfrom\u001b[1Cdjango.urls\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mimport\u001b[1Creverse\r\n\u001b[1C\u001b[2m 1022\u001b[1C\u001b[22murl\u001b[1C=\u001b[1Creverse(\"bl\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mog:post_detail\",\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mkwargs={\"pk\":\u001b[1C1})\r\n\u001b[1C\u001b[2m 1023\u001b[1C\u001b[22m```\r\n\u001b[1C\u001b[2m 1024\r\n\u001b[1C 1025\u001b[1C\u001b[22m```html\r\n\u001b[1C\u001b[2m 1026\u001b[1C\u001b[22m{%\u001b[1Curl\u001b[1C'blog:post\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m_detail'\u001b[1Cpost.pk\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m%}\r\n\u001b[1C\u001b[2m 1027\u001b[1C\u001b[22m```\r\n\u001b[1C\u001b[2m 1028\r\n\u001b[1C 1029\u001b[1C\u001b[22m---\r\n\u001b[1C\u001b[2m 1030\r\n\u001b[1C 1031\u001b[1C\u001b[22m###\u001b[1CФункциональны\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mе\u001b[1Cпредставления\u001b[1C(\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mFBV)\r\n\u001b[1C\u001b[2m 1032\r\n\u001b[1C 1033\u001b[1C\u001b[22m```python\r\n\u001b[1C\u001b[2m 1034\u001b[1C\u001b[22mfrom\u001b[1Cdjango.short\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mcuts\u001b[1Cimport\u001b[1Crende\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mr,\u001b[1Cget_object_or_\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m404\r\n\u001b[1C\u001b[2m 1035\r\n\u001b[1C 1036\u001b[1C\u001b[22mdef\u001b[1Cpost_list(req\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22muest):\r\n\u001b[1C\u001b[2m 1037\u001b[1C\u001b[22m \u001b[3Cposts\u001b[1C=\u001b[1CPost.\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mobjects.all()[:5]\r\n\u001b[1C\u001b[2m 1038\u001b[1C\u001b[22m \u001b[3Creturn\u001b[1Crender\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m(request,\u001b[1C\"blog/l\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mist.html\",\u001b[1C{\"post\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22ms\":\u001b[1Cposts})\r\n\u001b[1C\u001b[2m 1039\r\n\u001b[1C 1040\u001b[1C\u001b[22mdef\u001b[1Cpost_detail(r\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mequest,\u001b[1Cpk):\r\n\u001b[1C\u001b[2m 1041\u001b[1C\u001b[22m \u001b[3Cpost\u001b[1C=\u001b[1Cget_ob\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mject_or_404(Post,\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m pk=pk)\r\n\u001b[1C\u001b[2m 1042\u001b[1C\u001b[22m \u001b[3Creturn\u001b[1Crender\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m(request,\u001b[1C\"blog/d\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22metail.html\",\u001b[1C{\"po\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mst\":\u001b[1Cpost})\r\n\u001b[1C\u001b[2m 1043\u001b[1C\u001b[22m```\r\n\u001b[1C\u001b[2m 1044\r\n\u001b[1C 1045\u001b[1C\u001b[22m-\u001b[1CПринимают\u001b[1C`Http\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mRequest`,\u001b[1Cвозвращ\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mают\u001b[1C`HttpResponse\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m`.\r\n\u001b[1C\u001b[2m 1046\u001b[1C\u001b[22m-\u001b[1C`render(request\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m,\u001b[1Ctemplate,\u001b[1Cconte\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mxt)`\u001b[1C—\u001b[1Cсобирает\u001b[1Cо\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mтвет.\r\n\u001b[1C\u001b[2m 1047\u001b[1C\u001b[22m-\u001b[1C`get_object_or_\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m404`\u001b[1C—\u001b[1Cвозвращает\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m объект\u001b[1Cили\u001b[1C404.\r\n\u001b[1C\u001b[2m 1048\r\n\u001b[1C 1049\u001b[1C\u001b[22m---\r\n\u001b[1C\u001b[2m 1050\r\n\u001b[1C 1051\u001b[1C\u001b[22m###\u001b[1CКлассовые\u001b[1Cпре\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mдставления\u001b[1C(CBV)\r\n\u001b[1C\u001b[2m 1052\r\n\u001b[1C 1053\u001b[1C\u001b[22mВызываются\u001b[1Cчерез\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m`.as_view()`.\r\n\u001b[1C\u001b[2m 1054\r\n\u001b[1C 1055\u001b[1C\u001b[22m```python\r\n\u001b[1C\u001b[2m 1056\u001b[1C\u001b[22mfrom\u001b[1Cdjango.views\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m.generic\u001b[1Cimport\u001b[1CT\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22memplateView,\u001b[1CList\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mView,\u001b[1CDetailView\r\n\u001b[1C\u001b[2m 1057\r\n\u001b[1C 1058\u001b[1C\u001b[22mclass\u001b[1CAboutView(T\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22memplateView):\r\n\u001b[1C\u001b[2m 1059\u001b[1C\u001b[22m \u001b[3Ctemplate_name\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m =\u001b[1C\"blog/about.ht\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mml\"\r\n\u001b[1C\u001b[2m 1060\r\n\u001b[1C 1061\r\n\u001b[1C 1062\u001b[1C\u001b[22mclass\u001b[1CPostListVie\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mw(ListView):\r\n\u001b[1C\u001b[2m 1063\u001b[1C\u001b[22m \u001b[3Cmodel\u001b[1C=\u001b[1CPost\r\n\u001b[1C\u001b[2m 1064\u001b[1C\u001b[22m \u001b[3Ctemplate_name\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m =\u001b[1C\"blog/list.htm\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22ml\"\r\n\u001b[1C\u001b[2m 1065\u001b[1C\u001b[22m \u001b[3Ccontext_objec\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mt_name\u001b[1C=\u001b[1C\"posts\"\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m \u001b[1C#\u001b[1Cпо\u001b[1Cумолчанию:\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m object_list\r\n\u001b[1C\u001b[2m 1066\u001b[1C\u001b[22m \u001b[3Cpaginate_by\u001b[1C=\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m 10\r\n\u001b[1C\u001b[2m 1067\r\n\u001b[1C 1068\u001b[1C\u001b[22m \u001b[3Cdef\u001b[1Cget_query\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mset(self):\r\n\u001b[1C\u001b[2m 1069\u001b[1C\u001b[22m \u001b[7Creturn\u001b[1CPo\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mst.objects.filter\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m(is_published=Tru\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22me).order_by(\"-cre\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mated_at\")\r\n\u001b[1C\u001b[2m 1070\r\n\u001b[1C 1071\u001b[1C\u001b[22m \u001b[3Cdef\u001b[1Cget_conte\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mxt_data(self,\u001b[1C**k\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mwargs):\r\n\u001b[1C\u001b[2m 1072\u001b[1C\u001b[22m \u001b[7Ccontext\u001b[1C=\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m super().get_cont\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mext_data(**kwargs\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m)\r\n\u001b[1C\u001b[2m 1073\u001b[1C\u001b[22m \u001b[7Ccontext[\"\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mextra\"]\u001b[1C=\u001b[1C\"доп.\u001b[1Cд\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mанные\"\r\n\u001b[1C\u001b[2m 1074\u001b[1C\u001b[22m \u001b[7Creturn\u001b[1Cco\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mntext\r\n\u001b[1C\u001b[2m 1075\r\n\u001b[1C 1076\r\n\u001b[1C 1077\u001b[1C\u001b[22mclass\u001b[1CPostDetailV\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22miew(DetailView):\r\n\u001b[1C\u001b[2m 1078\u001b[1C\u001b[22m \u001b[3Cmodel\u001b[1C=\u001b[1CPost\r\n\u001b[1C\u001b[2m 1079\u001b[1C\u001b[22m \u001b[3Ctemplate_name\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m =\u001b[1C\"blog/detail.h\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mtml\"\r\n\u001b[1C\u001b[2m 1080\u001b[1C\u001b[22m \u001b[3Ccontext_objec\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mt_name\u001b[1C=\u001b[1C\"post\"\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m \u001b[1C#\u001b[1Cпо\u001b[1Cумолчанию:\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m object\r\n\u001b[1C\u001b[2m 1081\u001b[1C\u001b[22m```\r\n\u001b[1C\u001b[2m 1082\r\n\u001b[1C 1083\u001b[1C\u001b[22m**Имена\u001b[1Cпеременны\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mх\u001b[1Cпо\u001b[1Cумолчанию:**\r\n\u001b[1C\u001b[2m 1084\u001b[1C\u001b[22m-\u001b[1C`ListView`\u001b[1C→\u001b[1C`o\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mbject_list`.\r\n\u001b[1C\u001b[2m 1085\u001b[1C\u001b[22m-\u001b[1C`DetailView`\u001b[1C→\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m`object`.\r\n\u001b[1C\u001b[2m 1086\r\n\u001b[1C 1087\u001b[1C\u001b[22m**Пагинация\u001b[1Cв\u001b[1CLis\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mtView:**\r\n\u001b[1C\u001b[2m 1088\u001b[1C\u001b[22m```html\r\n\u001b[1C\u001b[2m 1089\u001b[1C\u001b[22m{%\u001b[1Cif\u001b[1Cis_paginate\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22md\u001b[1C%}\r\n\u001b[1C\u001b[2m 1090\u001b[1C\u001b[22m \u001b[1C{%\u001b[1Cif\u001b[1Cpage_obj.\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mhas_previous\u001b[1C%}\r\n\u001b[1C\u001b[2m 1091\u001b[1C\u001b[22m \u001b[3CНазад\r\n\u001b[1C\u001b[2m 1092\u001b[1C\u001b[22m \u001b[1C{%\u001b[1Cendif\u001b[1C%}\r\n\u001b[1C\u001b[2m 1093\u001b[1C\u001b[22m \u001b[1CСтраница\u001b[1C{{\u001b[1Cpag\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22me_obj.number\u001b[1C}}\u001b[1Cи\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mз\u001b[1C{{\u001b[1Cpage_obj.pag\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22minator.num_pages\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m}}\r\n\u001b[1C\u001b[2m 1094\u001b[1C\u001b[22m \u001b[1C{%\u001b[1Cif\u001b[1Cpage_obj.\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mhas_next\u001b[1C%}\r\n\u001b[1C\u001b[2m 1095\u001b[1C\u001b[22m \u001b[3CВперёд\r\n\u001b[1C\u001b[2m 1096\u001b[1C\u001b[22m \u001b[1C{%\u001b[1Cendif\u001b[1C%}\r\n\u001b[1C\u001b[2m 1097\u001b[1C\u001b[22m{%\u001b[1Cendif\u001b[1C%}\r\n\u001b[1C\u001b[2m 1098\u001b[1C\u001b[22m```\r\n\u001b[1C\u001b[2m 1099\r\n\u001b[1C 1100\u001b[1C\u001b[22m**Шаблоны\u001b[1Cпо\u001b[1Cумол\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mчанию\u001b[1C(если\u001b[1Cне\u001b[1Cза\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mдан\u001b[1C`template_nam\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22me`):**\r\n\u001b[1C\u001b[2m 1101\u001b[1C\u001b[22m-\u001b[1C`ListView`\u001b[1C→\u001b[1C`<\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mapp>/_list\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m.html`\r\n\u001b[1C\u001b[2m 1102\u001b[1C\u001b[22m-\u001b[1C`DetailView`\u001b[1C→\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m`/_de\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mtail.html`\r\n\u001b[1C\u001b[2m 1103\r\n\u001b[1C 1104\u001b[1C\u001b[22m---\r\n\u001b[1C\u001b[2m 1105\r\n\u001b[1C 1106\u001b[1C\u001b[22m###\u001b[1CШаблоны\u001b[1C(Djan\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mgo\u001b[1CTemplate\u001b[1CLangu\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mage)\r\n\u001b[1C\u001b[2m 1107\r\n\u001b[1C 1108\u001b[1C\u001b[22m**Переменные:**\r\n\u001b[1C\u001b[2m 1109\u001b[1C\u001b[22m```html\r\n\u001b[1C\u001b[2m 1110\u001b[1C\u001b[22m{{\u001b[1Cpost.title\u001b[1C}}\r\n\u001b[1C\u001b[2m 1111\u001b[1C\u001b[22m{{\u001b[1Cuser.get_full_\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mname\u001b[1C}}\r\n\u001b[1C\u001b[2m 1112\u001b[1C\u001b[22m```\r\n\u001b[1C\u001b[2m 1113\r\n\u001b[1C 1114\u001b[1C\u001b[22m**Теги:**\r\n\u001b[1C\u001b[2m 1115\u001b[1C\u001b[22m```html\r\n\u001b[1C\u001b[2m 1116\u001b[1C\u001b[22m{%\u001b[1Cif\u001b[1Cpost.is_pub\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mlished\u001b[1C%}\r\n\u001b[1C\u001b[2m 1117\u001b[1C\u001b[22m \u001b[1C

Опубликовано\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m

\r\n\u001b[1C\u001b[2m 1118\u001b[1C\u001b[22m{%\u001b[1Celif\u001b[1Cpost.is_d\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mraft\u001b[1C%}\r\n\u001b[1C\u001b[2m 1119\u001b[1C\u001b[22m \u001b[1C

Черновик

\r\n\u001b[1C\u001b[2m 1120\u001b[1C\u001b[22m{%\u001b[1Celse\u001b[1C%}\r\n\u001b[1C\u001b[2m 1121\u001b[1C\u001b[22m \u001b[1C

Архив

\r\n\u001b[1C\u001b[2m 1122\u001b[1C\u001b[22m{%\u001b[1Cendif\u001b[1C%}\r\n\u001b[1C\u001b[2m 1123\r\n\u001b[1C 1124\u001b[1C\u001b[22m{%\u001b[1Cfor\u001b[1Cpost\u001b[1Cin\u001b[1Cpo\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22msts\u001b[1C%}\r\n\u001b[1C\u001b[2m 1125\u001b[1C\u001b[22m \u001b[1C

{{\u001b[1Cforloop.c\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mounter\u001b[1C}}.\u001b[1C{{\u001b[1Cpos\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mt.title\u001b[1C}}

\r\n\u001b[1C\u001b[2m 1126\u001b[1C\u001b[22m{%\u001b[1Cempty\u001b[1C%}\r\n\u001b[1C\u001b[2m 1127\u001b[1C\u001b[22m \u001b[1C

Постов\u001b[1Cнет.<\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m/p>\r\n\u001b[1C\u001b[2m 1128\u001b[1C\u001b[22m{%\u001b[1Cendfor\u001b[1C%}\r\n\u001b[1C\u001b[2m 1129\u001b[1C\u001b[22m```\r\n\u001b[1C\u001b[2m 1130\r\n\u001b[1C 1131\u001b[1C\u001b[22m**`forloop`:**\r\n\u001b[1C\u001b[2m 1132\u001b[1C\u001b[22m-\u001b[1C`forloop.counte\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mr`\u001b[1C—\u001b[1Cсчётчик\u001b[1Cс\u001b[1C1.\r\n\u001b[1C\u001b[2m 1133\u001b[1C\u001b[22m-\u001b[1C`forloop.counte\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mr0`\u001b[1C—\u001b[1Cсчётчик\u001b[1Cс\u001b[1C0\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m.\r\n\u001b[1C\u001b[2m 1134\u001b[1C\u001b[22m-\u001b[1C`forloop.first`\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m /\u001b[1C`forloop.last`\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m —\u001b[1Cпервый/последн\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mий\u001b[1Cэлемент.\r\n\u001b[1C\u001b[2m 1135\r\n\u001b[1C 1136\u001b[1C\u001b[22m**Фильтры:**\r\n\u001b[1C\u001b[2m 1137\u001b[1C\u001b[22m```html\r\n\u001b[1C\u001b[2m 1138\u001b[1C\u001b[22m{{\u001b[1Cpost.created_a\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mt|date:\"Y-m-d\"\u001b[1C}}\r\n\u001b[1C\u001b[2m 1139\u001b[1C\u001b[22m{{\u001b[1Ctext|lower\u001b[1C}}\r\n\u001b[1C\u001b[2m 1140\u001b[1C\u001b[22m{{\u001b[1Ctext|upper\u001b[1C}}\r\n\u001b[1C\u001b[2m 1141\u001b[1C\u001b[22m{{\u001b[1Clist|length\u001b[1C}}\r\n\u001b[1C\u001b[2m 1142\u001b[1C\u001b[22m{{\u001b[1Cvalue|default:\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m\"нет\"\u001b[1C}}\r\n\u001b[1C\u001b[2m 1143\u001b[1C\u001b[22m{{\u001b[1Cprice|floatfor\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mmat:2\u001b[1C}}\r\n\u001b[1C\u001b[2m 1144\u001b[1C\u001b[22m```\r\n\u001b[1C\u001b[2m 1145\r\n\u001b[1C 1146\u001b[1C\u001b[22m---\r\n\u001b[1C\u001b[2m 1147\r\n\u001b[1C 1148\u001b[1C\u001b[22m###\u001b[1CНаследование\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mшаблонов\r\n\u001b[1C\u001b[2m 1149\r\n\u001b[1C 1150\u001b[1C\u001b[22m```html\r\n\u001b[1C\u001b[2m 1151\u001b[1C\u001b[22m\r\n\u001b[1C\u001b[2m 1152\u001b[1C\u001b[22m\r\n\u001b[1C\u001b[2m 1153\u001b[1C\u001b[22m\r\n\u001b[1C\u001b[2m 1154\u001b[1C\u001b[22m\r\n\u001b[1C\u001b[2m 1155\u001b[1C\u001b[22m \u001b[1C{%\u001b[1Cblock\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m title\u001b[1C%}Сайт{%\u001b[1Ce\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mndblock\u001b[1C%}</title\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m>\r\n\u001b[1C\u001b[2m 1156\u001b[1C\u001b[22m \u001b[1C{%\u001b[1Cload\u001b[1Cstatic\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m%}\r\n\u001b[1C\u001b[2m 1157\u001b[1C\u001b[22m \u001b[1C<link\u001b[1C\u001b[38;5;148mrel\u001b[38;5;231m=\u001b[38;5;186m\"styl\r\n\u001b[1C\u001b[38;5;231;2m \u001b[5C\u001b[38;5;186;22mesheet\"\u001b[38;5;231m \u001b[38;5;148mhref\u001b[38;5;231m=\u001b[38;5;186m\"{%\r\n\u001b[1C\u001b[38;5;231;2m \u001b[5C\u001b[38;5;186;22mstatic\u001b[1C'css/app.c\r\n\u001b[1C\u001b[38;5;231;2m \u001b[5C\u001b[38;5;186;22mss'\u001b[1C%}\"\u001b[38;5;231m>\r\n\u001b[1C\u001b[2m 1158\u001b[1C\u001b[22m</head>\r\n\u001b[1C\u001b[2m 1159\u001b[1C\u001b[22m<body>\r\n\u001b[1C\u001b[2m 1160\u001b[1C\u001b[22m \u001b[1C<nav>...</nav>\r\n\u001b[1C\u001b[2m 1161\u001b[1C\u001b[22m \u001b[1C<main>\r\n\u001b[1C\u001b[2m 1162\u001b[1C\u001b[22m \u001b[3C{%\u001b[1Cblock\u001b[1Ccont\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22ment\u001b[1C%}{%\u001b[1Cendblock\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m %}\r\n\u001b[1C\u001b[2m 1163\u001b[1C\u001b[22m \u001b[1C</main>\r\n\u001b[1C\u001b[2m 1164\u001b[1C\u001b[22m</body>\r\n\u001b[1C\u001b[2m 1165\u001b[1C\u001b[22m</html>\r\n\u001b[1C\u001b[2m 1166\u001b[1C\u001b[22m```\r\n\u001b[1C\u001b[2m 1167\r\n\u001b[1C 1168\u001b[1C\u001b[22m```html\r\n\u001b[1C\u001b[2m 1169\u001b[1C\u001b[22m<!--\u001b[1Ctemplates/bl\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mog/list.html\u001b[1C-->\r\n\u001b[1C\u001b[2m 1170\u001b[1C\u001b[22m{%\u001b[1Cextends\u001b[1C\"base.\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mhtml\"\u001b[1C%}\r\n\u001b[1C\u001b[2m 1171\r\n\u001b[1C 1172\u001b[1C\u001b[22m{%\u001b[1Cblock\u001b[1Ctitle\u001b[1C%}\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mПосты{%\u001b[1Cendblock\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m%}\r\n\u001b[1C\u001b[2m 1173\r\n\u001b[1C 1174\u001b[1C\u001b[22m{%\u001b[1Cblock\u001b[1Ccontent\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m%}\r\n\u001b[1C\u001b[2m 1175\u001b[1C\u001b[22m \u001b[1C<h1>Посты</h1>\r\n\u001b[1C\u001b[2m 1176\u001b[1C\u001b[22m \u001b[1C{%\u001b[1Cfor\u001b[1Cpost\u001b[1Cin\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mposts\u001b[1C%}\r\n\u001b[1C\u001b[2m 1177\u001b[1C\u001b[22m \u001b[3C<a\u001b[1Chref=\"{%\u001b[1Cu\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mrl\u001b[1C'blog:post_det\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mail'\u001b[1Cpost.pk\u001b[1C%}\">\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m{{\u001b[1Cpost.title\u001b[1C}}<\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m/a>\r\n\u001b[1C\u001b[2m 1178\u001b[1C\u001b[22m \u001b[1C{%\u001b[1Cendfor\u001b[1C%}\r\n\u001b[1C\u001b[2m 1179\u001b[1C\u001b[22m{%\u001b[1Cendblock\u001b[1C%}\r\n\u001b[1C\u001b[2m 1180\u001b[1C\u001b[22m```\r\n\u001b[1C\u001b[2m 1181\r\n\u001b[1C 1182\u001b[1C\u001b[22m**Include\u001b[1Cшаблоно\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mв:**\r\n\u001b[1C\u001b[2m 1183\u001b[1C\u001b[22m```html\r\n\u001b[1C\u001b[2m 1184\u001b[1C\u001b[22m{%\u001b[1Cinclude\u001b[1C\"blog/\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mpartials/card.htm\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22ml\"\u001b[1C%}\r\n\u001b[1C\u001b[2m 1185\u001b[1C\u001b[22m{%\u001b[1Cinclude\u001b[1C\"blog/\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mpartials/card.htm\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22ml\"\u001b[1Cwith\u001b[1Cpost=item\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m only\u001b[1C%}\r\n\u001b[1C\u001b[2m 1186\u001b[1C\u001b[22m```\r\n\u001b[1C\u001b[2m 1187\r\n\u001b[1C 1188\u001b[1C\u001b[22m**Статические\u001b[1Cфай\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mлы:**\r\n\u001b[1C\u001b[2m 1189\u001b[1C\u001b[22m```html\r\n\u001b[1C\u001b[2m 1190\u001b[1C\u001b[22m{%\u001b[1Cload\u001b[1Cstatic\u001b[1C%}\r\n\u001b[1C\u001b[2m 1191\u001b[1C\u001b[22m<img\u001b[1C\u001b[38;5;148msrc\u001b[38;5;231m=\u001b[38;5;186m\"{%\u001b[1Cstat\r\n\u001b[1C\u001b[38;5;231;2m \u001b[5C\u001b[38;5;186;22mic\u001b[1C'images/logo.p\r\n\u001b[1C\u001b[38;5;231;2m \u001b[5C\u001b[38;5;186;22mng'\u001b[1C%}\"\u001b[38;5;231m \u001b[38;5;148malt\u001b[38;5;231m=\u001b[38;5;186m\"Лого\r\n\u001b[1C\u001b[38;5;231;2m \u001b[5C\u001b[38;5;186;22mтип\"\u001b[38;5;231m>\r\n\u001b[1C\u001b[2m 1192\u001b[1C\u001b[22m```\r\n\u001b[1C\u001b[2m 1193\r\n\u001b[1C 1194\u001b[1C\u001b[22m**Вызов\u001b[1Cметодов\u001b[1Cв\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m шаблонах:**\u001b[1CDjan\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mgo\u001b[1Cвызывает\u001b[1Cметод\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mы\u001b[1Cбез\u001b[1Cаргументов\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mавтоматически:\r\n\u001b[1C\u001b[2m 1195\u001b[1C\u001b[22m```html\r\n\u001b[1C\u001b[2m 1196\u001b[1C\u001b[22m{{\u001b[1Cuser.get_full_\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mname\u001b[1C}}\u001b[5C{#\u001b[1Cвы\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mзов\u001b[1Cget_full_name\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m()\u001b[1C#}\r\n\u001b[1C\u001b[2m 1197\u001b[1C\u001b[22m{{\u001b[1Cpost.get_absol\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mute_url\u001b[1C}}\u001b[2C{#\u001b[1Cвы\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mзов\u001b[1Cget_absolute_\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22murl()\u001b[1C#}\r\n\u001b[1C\u001b[2m 1198\u001b[1C\u001b[22m```\r\n\u001b[1C\u001b[2m 1199\r\n\u001b[1C 1200\u001b[1C\u001b[22mМетоды\u001b[1Cс\u001b[1Cаргумент\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mами\u001b[1Cнапрямую\u001b[1Cвызв\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mать\u001b[1Cнельзя\u001b[1C—\u001b[1Cлоги\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mку\u001b[1Cнужно\u001b[1Cвынести\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mво\u001b[1Cview\u001b[1Cили\u001b[1Ctempl\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22matetag.\r\n\u001b[1C\u001b[2m 1201\r\n\u001b[1C 1202\u001b[1C\u001b[22m---\r\n\u001b[1C\u001b[2m 1203\r\n\u001b[1C 1204\u001b[1C\u001b[22m##\u001b[1CБлок\u001b[1C12.\u001b[1CDjang\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mo:\u001b[1CФормы\r\n\u001b[1C\u001b[2m 1205\r\n\u001b[1C 1206\u001b[1C\u001b[22m###\u001b[1Cforms.Form\r\n\u001b[1C\u001b[2m 1207\r\n\u001b[1C 1208\u001b[1C\u001b[22m```python\r\n\u001b[1C\u001b[2m 1209\u001b[1C\u001b[22mfrom\u001b[1Cdjango\u001b[1Cimpor\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mt\u001b[1Cforms\r\n\u001b[1C\u001b[2m 1210\r\n\u001b[1C 1211\u001b[1C\u001b[22mclass\u001b[1CContactForm\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m(forms.Form):\r\n\u001b[1C\u001b[2m 1212\u001b[1C\u001b[22m \u001b[3Cname\u001b[1C=\u001b[1Cforms.\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mCharField(max_len\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mgth=100)\r\n\u001b[1C\u001b[2m 1213\u001b[1C\u001b[22m \u001b[3Cemail\u001b[1C=\u001b[1Cforms\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m.EmailField()\r\n\u001b[1C\u001b[2m 1214\u001b[1C\u001b[22m \u001b[3Cmessage\u001b[1C=\u001b[1Cfor\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mms.CharField(widg\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22met=forms.Textarea\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m)\r\n\u001b[1C\u001b[2m 1215\u001b[1C\u001b[22m```\r\n\u001b[1C\u001b[2m 1216\r\n\u001b[1C 1217\u001b[1C\u001b[22m---\r\n\u001b[1C\u001b[2m 1218\r\n\u001b[1C 1219\u001b[1C\u001b[22m###\u001b[1Cforms.ModelFo\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mrm\r\n\u001b[1C\u001b[2m 1220\r\n\u001b[1C 1221\u001b[1C\u001b[22m```python\r\n\u001b[1C\u001b[2m 1222\u001b[1C\u001b[22mfrom\u001b[1Cdjango\u001b[1Cimpor\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mt\u001b[1Cforms\r\n\u001b[1C\u001b[2m 1223\u001b[1C\u001b[22mfrom\u001b[1C.models\u001b[1Cimpo\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mrt\u001b[1CBlog\r\n\u001b[1C\u001b[2m 1224\r\n\u001b[1C 1225\u001b[1C\u001b[22mclass\u001b[1CBlogForm(fo\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mrms.ModelForm):\r\n\u001b[1C\u001b[2m 1226\u001b[1C\u001b[22m \u001b[3Cclass\u001b[1CMeta:\r\n\u001b[1C\u001b[2m 1227\u001b[1C\u001b[22m \u001b[7Cmodel\u001b[1C=\u001b[1CB\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mlog\r\n\u001b[1C\u001b[2m 1228\u001b[1C\u001b[22m \u001b[7Cfields\u001b[1C=\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m[\"name\",\u001b[1C\"tagline\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m\"]\r\n\u001b[1C\u001b[2m 1229\u001b[1C\u001b[22m \u001b[7Cwidgets\u001b[1C=\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m {\r\n\u001b[1C\u001b[2m 1230\u001b[1C\u001b[22m \u001b[11C\"name\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m\":\u001b[1Cforms.TextInpu\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mt(attrs={\"class\":\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m \"form-control\"})\r\n\u001b[1C\u001b[2m 1231\u001b[1C\u001b[22m \u001b[7C}\r\n\u001b[1C\u001b[2m 1232\u001b[1C\u001b[22m```\r\n\u001b[1C\u001b[2m 1233\r\n\u001b[1C 1234\u001b[1C\u001b[22m---\r\n\u001b[1C\u001b[2m 1235\r\n\u001b[1C 1236\u001b[1C\u001b[22m###\u001b[1CЖизненный\u001b[1Cцик\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mл\u001b[1Cформы\u001b[1Cво\u001b[1Cview\r\n\u001b[1C\u001b[2m 1237\r\n\u001b[1C 1238\u001b[1C\u001b[22m```python\r\n\u001b[1C\u001b[2m 1239\u001b[1C\u001b[22mfrom\u001b[1Cdjango.short\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mcuts\u001b[1Cimport\u001b[1Credir\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mect,\u001b[1Crender\r\n\u001b[1C\u001b[2m 1240\r\n\u001b[1C 1241\u001b[1C\u001b[22mdef\u001b[1Ccontact_view(\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mrequest):\r\n\u001b[1C\u001b[2m 1242\u001b[1C\u001b[22m \u001b[3Cif\u001b[1Crequest.me\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mthod\u001b[1C==\u001b[1C\"POST\":\r\n\u001b[1C\u001b[2m 1243\u001b[1C\u001b[22m \u001b[7Cform\u001b[1C=\u001b[1CCo\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mntactForm(request\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m.POST)\r\n\u001b[1C\u001b[2m 1244\u001b[1C\u001b[22m \u001b[7Cif\u001b[1Cform.i\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22ms_valid():\r\n\u001b[1C\u001b[2m 1245\u001b[1C\u001b[22m \u001b[11Cdata\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m=\u001b[1Cform.cleaned_da\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mta\r\n\u001b[1C\u001b[2m 1246\u001b[1C\u001b[22m \u001b[11Csend_\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22memail(data[\"email\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m\"],\u001b[1Cdata[\"message\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m\"])\r\n\u001b[1C\u001b[2m 1247\u001b[1C\u001b[22m \u001b[11Cretur\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mn\u001b[1Credirect(\"succe\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mss\")\r\n\u001b[1C\u001b[2m 1248\u001b[1C\u001b[22m \u001b[3Celse:\r\n\u001b[1C\u001b[2m 1249\u001b[1C\u001b[22m \u001b[7Cform\u001b[1C=\u001b[1CCo\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mntactForm()\r\n\u001b[1C\u001b[2m 1250\u001b[1C\u001b[22m \u001b[3Creturn\u001b[1Crender\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m(request,\u001b[1C\"contac\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mt.html\",\u001b[1C{\"form\":\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m form})\r\n\u001b[1C\u001b[2m 1251\u001b[1C\u001b[22m```\r\n\u001b[1C\u001b[2m 1252\r\n\u001b[1C 1253\u001b[1C\u001b[22m1.\u001b[1C`GET`\u001b[1C—\u001b[1Cсоздат\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mь\u001b[1Cпустую\u001b[1Cформу\u001b[1C→\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mпоказать\u001b[1Cстраницу\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m.\r\n\u001b[1C\u001b[2m 1254\u001b[1C\u001b[22m2.\u001b[1C`POST`\u001b[1C—\u001b[1Cсозда\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mть\u001b[1Cформу\u001b[1Cиз\u001b[1C`requ\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mest.POST`\u001b[1C→\u001b[1Cпрове\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mрить\u001b[1C→\u001b[1Cдействие\u001b[1C+\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m redirect.\r\n\u001b[1C\u001b[2m 1255\u001b[1C\u001b[22m3.\u001b[1CОшибки\u001b[1C—\u001b[1Cснова\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m показать\u001b[1Cформу\u001b[1Cс\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m сообщениями.\r\n\u001b[1C\u001b[2m 1256\r\n\u001b[1C 1257\u001b[1C\u001b[22m---\r\n\u001b[1C\u001b[2m 1258\r\n\u001b[1C 1259\u001b[1C\u001b[22m###\u001b[1CВалидация\r\n\u001b[1C\u001b[2m 1260\r\n\u001b[1C 1261\u001b[1C\u001b[22m-\u001b[1C**`is_valid()`*\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m*\u001b[1C—\u001b[1Cзапускает\u001b[1Cпро\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mверку;\u001b[1Cпосле\u001b[1Cнего\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m появляются\u001b[1C`clea\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mned_data`\u001b[1Cи\u001b[1C`erro\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mrs`.\r\n\u001b[1C\u001b[2m 1262\u001b[1C\u001b[22m-\u001b[1C**`clean_<field\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mname>()`**\u001b[1C—\u001b[1Cпров\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mерка\u001b[1Cодного\u001b[1Cполя.\r\n\u001b[1C\u001b[2m 1263\u001b[1C\u001b[22m-\u001b[1C**`clean()`**\u001b[1C—\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m проверка\u001b[1Cформы\u001b[1Cц\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mеликом\u001b[1C(сравнение\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m нескольких\u001b[1Cполей\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m).\r\n\u001b[1C\u001b[2m 1264\r\n\u001b[1C 1265\u001b[1C\u001b[22m```python\r\n\u001b[1C\u001b[2m 1266\u001b[1C\u001b[22mclass\u001b[1CRegisterFor\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mm(forms.Form):\r\n\u001b[1C\u001b[2m 1267\u001b[1C\u001b[22m \u001b[3Cusername\u001b[1C=\u001b[1Cfo\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mrms.CharField(max\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m_length=50)\r\n\u001b[1C\u001b[2m 1268\u001b[1C\u001b[22m \u001b[3Cpassword\u001b[1C=\u001b[1Cfo\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mrms.CharField(wid\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mget=forms.Passwor\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mdInput)\r\n\u001b[1C\u001b[2m 1269\u001b[1C\u001b[22m \u001b[3Cpassword_repe\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mat\u001b[1C=\u001b[1Cforms.CharFi\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22meld(widget=forms.\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mPasswordInput)\r\n\u001b[1C\u001b[2m 1270\r\n\u001b[1C 1271\u001b[1C\u001b[22m \u001b[3Cdef\u001b[1Cclean_use\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mrname(self):\r\n\u001b[1C\u001b[2m 1272\u001b[1C\u001b[22m \u001b[7Cusername\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m=\u001b[1Cself.cleaned_da\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mta[\"username\"]\r\n\u001b[1C\u001b[2m 1273\u001b[1C\u001b[22m \u001b[7Cif\u001b[1Cuserna\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mme.lower()\u001b[1C==\u001b[1C\"ad\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mmin\":\r\n\u001b[1C\u001b[2m 1274\u001b[1C\u001b[22m \u001b[11Craise\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m forms.Validation\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mError(\"Это\u001b[1Cимя\u001b[1Cне\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mльзя\u001b[1Cиспользовать\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m\")\r\n\u001b[1C\u001b[2m 1275\u001b[1C\u001b[22m \u001b[7Creturn\u001b[1Cus\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mername\r\n\u001b[1C\u001b[2m 1276\r\n\u001b[1C 1277\u001b[1C\u001b[22m \u001b[3Cdef\u001b[1Cclean(sel\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mf):\r\n\u001b[1C\u001b[2m 1278\u001b[1C\u001b[22m \u001b[7Ccleaned_d\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mata\u001b[1C=\u001b[1Csuper().cle\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22man()\r\n\u001b[1C\u001b[2m 1279\u001b[1C\u001b[22m \u001b[7Cpassword\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m=\u001b[1Ccleaned_data.ge\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mt(\"password\")\r\n\u001b[1C\u001b[2m 1280\u001b[1C\u001b[22m \u001b[7Cpassword_\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mrepeat\u001b[1C=\u001b[1Ccleaned_\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mdata.get(\"passwor\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22md_repeat\")\r\n\u001b[1C\u001b[2m 1281\u001b[1C\u001b[22m \u001b[7Cif\u001b[1Cpasswo\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mrd\u001b[1Cand\u001b[1Cpassword_r\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mepeat\u001b[1Cand\u001b[1Cpasswor\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22md\u001b[1C!=\u001b[1Cpassword_rep\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22meat:\r\n\u001b[1C\u001b[2m 1282\u001b[1C\u001b[22m \u001b[11Craise\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m forms.Validation\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mError(\"Пароли\u001b[1Cне\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mсовпадают\")\r\n\u001b[1C\u001b[2m 1283\u001b[1C\u001b[22m \u001b[7Creturn\u001b[1Ccl\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22meaned_data\r\n\u001b[1C\u001b[2m 1284\u001b[1C\u001b[22m```\r\n\u001b[1C\u001b[2m 1285\r\n\u001b[1C 1286\u001b[1C\u001b[22m---\r\n\u001b[1C\u001b[2m 1287\r\n\u001b[1C 1288\u001b[1C\u001b[22m###\u001b[1CВиджеты\u001b[1Cи\u001b[1Cпод\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mсказки\r\n\u001b[1C\u001b[2m 1289\r\n\u001b[1C 1290\u001b[1C\u001b[22m```python\r\n\u001b[1C\u001b[2m 1291\u001b[1C\u001b[22mclass\u001b[1CProfileForm\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m(forms.ModelForm)\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m:\r\n\u001b[1C\u001b[2m 1292\u001b[1C\u001b[22m \u001b[3Cclass\u001b[1CMeta:\r\n\u001b[1C\u001b[2m 1293\u001b[1C\u001b[22m \u001b[7Cmodel\u001b[1C=\u001b[1CP\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mrofile\r\n\u001b[1C\u001b[2m 1294\u001b[1C\u001b[22m \u001b[7Cfields\u001b[1C=\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m[\"bio\",\u001b[1C\"birth_da\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mte\"]\r\n\u001b[1C\u001b[2m 1295\u001b[1C\u001b[22m \u001b[7Cwidgets\u001b[1C=\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m {\r\n\u001b[1C\u001b[2m 1296\u001b[1C\u001b[22m \u001b[11C\"bio\"\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m:\u001b[1Cforms.Textarea(\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mattrs={\"rows\":\u001b[1C3,\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m \"placeholder\":\u001b[1C\"\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mО\u001b[1Cсебе\"}),\r\n\u001b[1C\u001b[2m 1297\u001b[1C\u001b[22m \u001b[11C\"birt\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mh_date\":\u001b[1Cforms.Da\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mteInput(attrs={\"t\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mype\":\u001b[1C\"date\"}),\r\n\u001b[1C\u001b[2m 1298\u001b[1C\u001b[22m \u001b[7C}\r\n\u001b[1C\u001b[2m 1299\u001b[1C\u001b[22m \u001b[7Clabels\u001b[1C=\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m{\"bio\":\u001b[1C\"Биографи\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mя\"}\r\n\u001b[1C\u001b[2m 1300\u001b[1C\u001b[22m \u001b[7Chelp_text\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22ms\u001b[1C=\u001b[1C{\"bio\":\u001b[1C\"Не\u001b[1Cб\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mолее\u001b[1C500\u001b[1Cсимволов\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m.\"}\r\n\u001b[1C\u001b[2m 1301\u001b[1C\u001b[22m```\r\n\u001b[1C\u001b[2m 1302\r\n\u001b[1C 1303\u001b[1C\u001b[22m---\r\n\u001b[1C\u001b[2m 1304\r\n\u001b[1C 1305\u001b[1C\u001b[22m###\u001b[1CОтображение\u001b[1Cв\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m шаблоне\r\n\u001b[1C\u001b[2m 1306\r\n\u001b[1C 1307\u001b[1C\u001b[22m```html\r\n\u001b[1C\u001b[2m 1308\u001b[1C\u001b[22m<form\u001b[1C\u001b[38;5;148mmethod\u001b[38;5;231m=\u001b[38;5;186m\"pos\r\n\u001b[1C\u001b[38;5;231;2m \u001b[5C\u001b[38;5;186;22mt\"\u001b[38;5;231m>\r\n\u001b[1C\u001b[2m 1309\u001b[1C\u001b[22m \u001b[1C{%\u001b[1Ccsrf_token\u001b[1C%\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m}\r\n\u001b[1C\u001b[2m 1310\u001b[1C\u001b[22m \u001b[1C{{\u001b[1Cform.as_p\u001b[1C}}\r\n\u001b[1C\u001b[2m 1311\u001b[1C\u001b[22m \u001b[1C<button\u001b[1C\u001b[38;5;148mtype\u001b[38;5;231m=\u001b[38;5;186m\"s\r\n\u001b[1C\u001b[38;5;231;2m \u001b[5C\u001b[38;5;186;22mubmit\"\u001b[38;5;231m>Сохранить<\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m/button>\r\n\u001b[1C\u001b[2m 1312\u001b[1C\u001b[22m</form>\r\n\u001b[1C\u001b[2m 1313\u001b[1C\u001b[22m```\r\n\u001b[1C\u001b[2m 1314\r\n\u001b[1C 1315\u001b[1C\u001b[22m```html\r\n\u001b[1C\u001b[2m 1316\u001b[1C\u001b[22m<!--\u001b[1CРучной\u001b[1Cконтр\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mоль\u001b[1C-->\r\n\u001b[1C\u001b[2m 1317\u001b[1C\u001b[22m<form\u001b[1C\u001b[38;5;148mmethod\u001b[38;5;231m=\u001b[38;5;186m\"pos\r\n\u001b[1C\u001b[38;5;231;2m \u001b[5C\u001b[38;5;186;22mt\"\u001b[38;5;231m>\r\n\u001b[1C\u001b[2m 1318\u001b[1C\u001b[22m \u001b[1C{%\u001b[1Ccsrf_token\u001b[1C%\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m}\r\n\u001b[1C\u001b[2m 1319\u001b[1C\u001b[22m \u001b[1C{%\u001b[1Cfor\u001b[1Cfield\u001b[1Cin\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m form\u001b[1C%}\r\n\u001b[1C\u001b[2m 1320\u001b[1C\u001b[22m \u001b[3C<div>\r\n\u001b[1C\u001b[2m 1321\u001b[1C\u001b[22m \u001b[5C{{\u001b[1Cfield.la\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mbel_tag\u001b[1C}}\r\n\u001b[1C\u001b[2m 1322\u001b[1C\u001b[22m \u001b[5C{{\u001b[1Cfield\u001b[1C}}\r\n\u001b[1C\u001b[2m 1323\u001b[1C\u001b[22m \u001b[5C{%\u001b[1Cif\u001b[1Cfield\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m.errors\u001b[1C%}\r\n\u001b[1C\u001b[2m 1324\u001b[1C\u001b[22m \u001b[7C<ul\u001b[1Cclass\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m=\"errors\">\r\n\u001b[1C\u001b[2m 1325\u001b[1C\u001b[22m \u001b[9C{%\u001b[1Cfor\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22merror\u001b[1Cin\u001b[1Cfield.er\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mrors\u001b[1C%}\r\n\u001b[1C\u001b[2m 1326\u001b[1C\u001b[22m \u001b[11C<li>{\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m{\u001b[1Cerror\u001b[1C}}</li>\r\n\u001b[1C\u001b[2m 1327\u001b[1C\u001b[22m \u001b[9C{%\u001b[1Cendf\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mor\u001b[1C%}\r\n\u001b[1C\u001b[2m 1328\u001b[1C\u001b[22m \u001b[7C</ul>\r\n\u001b[1C\u001b[2m 1329\u001b[1C\u001b[22m \u001b[5C{%\u001b[1Cendif\u001b[1C%}\r\n\u001b[1C\u001b[2m 1330\u001b[1C\u001b[22m \u001b[3C</div>\r\n\u001b[1C\u001b[2m 1331\u001b[1C\u001b[22m \u001b[1C{%\u001b[1Cendfor\u001b[1C%}\r\n\u001b[1C\u001b[2m 1332\u001b[1C\u001b[22m \u001b[1C<button\u001b[1C\u001b[38;5;148mtype\u001b[38;5;231m=\u001b[38;5;186m\"s\r\n\u001b[1C\u001b[38;5;231;2m \u001b[5C\u001b[38;5;186;22mubmit\"\u001b[38;5;231m>Сохранить<\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m/button>\r\n\u001b[1C\u001b[2m 1333\u001b[1C\u001b[22m</form>\r\n\u001b[1C\u001b[2m 1334\u001b[1C\u001b[22m```\r\n\u001b[1C\u001b[2m 1335\r\n\u001b[1C 1336\u001b[1C\u001b[22m**CSRF-токен**\u001b[1C—\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mзащита\u001b[1Cот\u001b[1CCross-S\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mite\u001b[1CRequest\u001b[1CForge\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mry:\u001b[1C`{%\u001b[1Ccsrf_toke\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mn\u001b[1C%}`\u001b[1Cобязателен\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mво\u001b[1Cвсех\u001b[1C`method=\"\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mpost\"`\u001b[1Cформах.\r\n\u001b[1C\u001b[2m 1337\r\n\u001b[1C 1338\u001b[1C\u001b[22m---\r\n\u001b[1C\u001b[2m 1339\r\n\u001b[1C 1340\u001b[1C\u001b[22m###\u001b[1CGeneric\u001b[1CEditi\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mng\u001b[1CViews\u001b[1C(CBV\u001b[1Cдля\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m CUD)\r\n\u001b[1C\u001b[2m 1341\r\n\u001b[1C 1342\u001b[1C\u001b[22m```python\r\n\u001b[1C\u001b[2m 1343\u001b[1C\u001b[22mfrom\u001b[1Cdjango.urls\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mimport\u001b[1Creverse_la\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mzy\r\n\u001b[1C\u001b[2m 1344\u001b[1C\u001b[22mfrom\u001b[1Cdjango.views\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m.generic\u001b[1Cimport\u001b[1CC\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mreateView,\u001b[1CUpdate\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mView,\u001b[1CDeleteView\r\n\u001b[1C\u001b[2m 1345\u001b[1C\u001b[22mfrom\u001b[1C.models\u001b[1Cimpo\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mrt\u001b[1CBlog\r\n\u001b[1C\u001b[2m 1346\u001b[1C\u001b[22mfrom\u001b[1C.forms\u001b[1Cimpor\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mt\u001b[1CBlogForm\r\n\u001b[1C\u001b[2m 1347\r\n\u001b[1C 1348\u001b[1C\u001b[22mclass\u001b[1CBlogCreateV\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22miew(CreateView):\r\n\u001b[1C\u001b[2m 1349\u001b[1C\u001b[22m \u001b[3Cmodel\u001b[1C=\u001b[1CBlog\r\n\u001b[1C\u001b[2m 1350\u001b[1C\u001b[22m \u001b[3Cform_class\u001b[1C=\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mBlogForm\r\n\u001b[1C\u001b[2m 1351\u001b[1C\u001b[22m \u001b[3Ctemplate_name\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m =\u001b[1C\"blog/blog_for\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mm.html\"\r\n\u001b[1C\u001b[2m 1352\u001b[1C\u001b[22m \u001b[3Csuccess_url\u001b[1C=\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m reverse_lazy(\"bl\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mog_list\")\r\n\u001b[1C\u001b[2m 1353\r\n\u001b[1C 1354\u001b[1C\u001b[22mclass\u001b[1CBlogUpdateV\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22miew(UpdateView):\r\n\u001b[1C\u001b[2m 1355\u001b[1C\u001b[22m \u001b[3Cmodel\u001b[1C=\u001b[1CBlog\r\n\u001b[1C\u001b[2m 1356\u001b[1C\u001b[22m \u001b[3Cform_class\u001b[1C=\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mBlogForm\r\n\u001b[1C\u001b[2m 1357\u001b[1C\u001b[22m \u001b[3Ctemplate_name\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m =\u001b[1C\"blog/blog_for\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mm.html\"\r\n\u001b[1C\u001b[2m 1358\u001b[1C\u001b[22m \u001b[3Csuccess_url\u001b[1C=\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m reverse_lazy(\"bl\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mog_list\")\r\n\u001b[1C\u001b[2m 1359\r\n\u001b[1C 1360\u001b[1C\u001b[22mclass\u001b[1CBlogDeleteV\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22miew(DeleteView):\r\n\u001b[1C\u001b[2m 1361\u001b[1C\u001b[22m \u001b[3Cmodel\u001b[1C=\u001b[1CBlog\r\n\u001b[1C\u001b[2m 1362\u001b[1C\u001b[22m \u001b[3Ctemplate_name\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22m =\u001b[1C\"blog/blog_con\r\n\u001b[1C\u001b[2m \u001b[5C\u001b[22mfirm_delete.html\"\r\n\u001b[1C\u001b[2m 1363\u001b[1C\u001b[22m \u001b[3Csuccess_url\u001b[1C=\r\n\u001b[39;48;5;237m \u001b[38;5;231mтеме в одну временную \u001b[39m \r\n \u001b[38;5;231mзаметку, я сделаю из неё\u001b[39m \r\n \u001b[38;5;231mpdf, потом удалю\u001b[39m \r\n\u001b[38;5;246;49m \u001b[1X\u001b[1C⎿\u001b[1X\u001b[1C Read\u001b[1X\u001b[1C\u001b[1m99\u001b[15X\r\n\u001b[5CSystem/Archive/Экзамен\r\n\u001b[5C-\u001b[1CMOC.md\u001b[22m (48\u001b[1Clines)\r\n\r\n\u001b[38;5;231m●\u001b[1C\u001b[0mСначала\u001b[1Cпрочитаю\r\n\u001b[2CINDEX.md,\u001b[1Cчтобы\u001b[1Cнайти\r\n\u001b[2Cпути\u001b[1Cко\u001b[1Cвсем\u001b[1Cзаметкам.\r\n\r\n\u001b[2C\u001b[38;5;246mRead\u001b[1C\u001b[1m1\u001b[22m file\u001b[1C(ctrl+o\u001b[1Cto\r\n\u001b[2Cexpand)\r\n\r\n\u001b[38;5;231m●\u001b[1C\u001b[0mНашёл\u001b[1Cвсе\u001b[1Cпути.\u001b[1CЧитаю\u001b[1Cвсе\r\n\u001b[2C13\u001b[1Cзаметок\u001b[1Cпараллельно.\r\n\r\n\u001b[2C\u001b[38;5;246mRead\u001b[1C\u001b[1m13\u001b[22m files\u001b[1C(ctrl+o\u001b[1Cto\r\n\u001b[2Cexpand)\r\n\r\n\u001b[38;5;231m●\u001b[1C\u001b[0mВсе\u001b[1Cзаметки\u001b[1Cпрочитаны.\r\n\u001b[2CСобираю\u001b[1Cединый\u001b[1Cконспект.\r\n\r\n\u001b[38;5;114m●\u001b[1C\u001b[39;1mWrite\u001b[0m(00\u001b[1CInbox/Экзамен\u001b[1C-\r\n\u001b[7CПолный\u001b[1Cконспект.md)\r\n\u001b[38;5;246m ⎿  \u001b[0mWrote\u001b[1C\u001b[1m1371\u001b[1C\u001b[0mlines\r\n \u001b[1C to \u001b[1m00 \r\n\u001b[5CInbox/Экзамен - \r\n\u001b[0m \u001b[1mПолный \r\n\u001b[0m \u001b[2C\u001b[1mконспект.md\r\n\u001b[0m \u001b[38;5;231;2m \u001b[22mРазработка в\r\n\u001b[2C\u001b[0m \u001b[38;5;231;2m \u001b[22mванных инфор\r\n\u001b[5C\u001b[2m \u001b[22mстемонных си\r\n\u001b[5C\u001b[2m 3\u001b[1C\u001b[22m>\u001b[1CВременная\r\n\u001b[5C\u001b[2m \u001b[2C\u001b[22mзаметка\u001b[1Cдля\r\n\u001b[5C\u001b[2m \u001b[2C\u001b[22mDF.\u001b[1CУдалить\r\n\u001b[5C\u001b[2m \u001b[2C\u001b[22mзования.поль\r\n\u001b[5C\u001b[2m 5\u001b[1C\u001b[22m---\r\n\u001b[5C\u001b[2m 7\u001b[1C\u001b[22m##\u001b[1CБлок\u001b[1C1.\u001b[1CО\r\n\u001b[5C\u001b[2m \u001b[2C\u001b[22mбщие\u001b[1Cво\r\n\u001b[5C\u001b[38;5;246m…\u001b[1C+3131\u001b[1Clines\r\n\u001b[5C(ctrl+o\u001b[1Cto\r\n\u001b[5Cexpand)\r\n\r\n\u001b[38;5;231m●\u001b[1C\u001b[0mГотово. Файл создан:\u001b[1C\u001b[38;5;153m00 \r\n\u001b[2CInbox/Экзамен - Полный \r\n\u001b[0m \u001b[38;5;153mконспект.md\u001b[0m.\r\n\r\n \u001b[1mЧто вошло\u001b[0m (все 13 заметок\r\n +\u001b[1Cдополнения\u001b[1Cиз\u001b[1Cзнаний\r\n агента):\r\n\r\n - Блок 1: Модель OSI,\r\n IPv4/маска/подсети\r\n (VLSM), IPv6, NAT, TCP vs\r\n\u001b[2C\u001b[1mlocalhost/порты, \r\n\u001b[2CHTTP/HTTPS/HTTP/3 \r\n\u001b[2Cметоды/коды, URI/URL/URN,\r\n\u001b[2COAuth 2.0\u001b[0m — их не было в\r\n\u001b[2Cзаметках,\u001b[1Cдобавил\u001b[1Cиз\r\n\u001b[2Cзнаний.\r\n\u001b[2C- Блок 2–3:\u001b[1CОсновы\u001b[1CHTML\u001b[1C—\r\n\u001b[2Cструктура, семантика,\r\n таблицы, формы полностью.\r\n - Блок 4: CSS —\r\n\u001b[2Cселекторы, специфичность,\r\n блочная модель, базовые\r\n свойства.\r\n - Блок 5:\u001b[1CFlexbox\u001b[1Cи\u001b[1CGrid,\r\n\u001b[2Cмедиазапросы.\r\n - Блок 6: Django\u001b[1Cмодели,\r\n\u001b[2Cполя, отношения (включая\r\n промежуточную M2M),\r\n миграции.\r\n - Блок 11:\u001b[1CQuerySet,\r\n\u001b[2Cfield lookups, агрегации,\r\n Q/F, N+1 и оптимизация.\r\n - Блок 7–10: FBV, CBV\r\n\u001b[2C(TemplateView/ListView/De\r\n tailView), маршрутизация,\r\n шаблоны, include,\r\n static, вызов методов.\r\n\u001b[2C- Блок 12: forms.Form,\r\n\u001b[2CModelForm,\u001b[1Cвалидация,\r\n виджеты, CSRF,\r\n GenericEditingViews.\r\n\r\n\u001b[38;5;246m✻\u001b[1CSautéed for 4m 27s\r\n\r\n\u001b[38;5;244m───────────────────────────\r\n\u001b[0m❯ \r\n\u001b[38;5;244m───────────────────────────\r\n\u001b[2C\u001b[38;5;147m⏵⏵\u001b[1Caccept\u001b[1Cedits\u001b[1Con\u001b[38;5;246m \u001b[2C·\r\n\u001b[3A\u001b[2C\u001b[0m", "rows": 34, "scrollLine": -1 } @@ -167,7 +167,7 @@ }, "pinned": true, "icon": "terminal", - "title": "Terminal: ⠂ Объединить конспекты экзамена MOC в одну заметку" + "title": "Terminal: ✳ Объединить конспекты экзамена MOC в одну заметку" } }, { @@ -257,15 +257,17 @@ "terminal:Open terminal": false } }, - "active": "06940eb960fc1db5", + "active": "fe153cac19762ac1", "lastOpenFiles": [ + "00 Inbox/Экзамен - Полный конспект.md", + "00 Inbox/Экзамен - Полный конспект.md.tmp.79011.13e6fc558bcf", + "99 System/Archive/Экзамен - MOC.md", "90 Library/Finance/Экономический анализ/Экономический анализ - MOC.md", "90 Library/Finance/Экономический анализ/Источники финансирования.md", "90 Library/Finance/Экономический анализ/Долг и платежеспособность.md", "90 Library/Finance/Экономический анализ/Инвестиционная деятельность и основные средства.md", "90 Library/Finance/Экономический анализ/Финансовая устойчивость.md", "90 Library/Finance/Экономический анализ/Шпаргалка к экзамену по ЭА.md", - "99 System/Archive/Экзамен - MOC.md", "90 Library/Programming/Web/Экзамен - Веб-ориентированные системы.md", "90 Library/Programming/Programming - MOC.md", "90 Library/Programming/Python/Основы объектно-ориентированного программирования.md", @@ -289,12 +291,10 @@ "90 Library/Programming/Ruby On Rails/Deploy - finreport-analyzer.md", "00 Inbox/Rails 8 Migration Guide.md", "00 Inbox/Deploy - finreport-analyzer.md", - "90 Library/Programming/Ruby On Rails/Capistrano deploy через systemd.md", "99 System/Archive/Экзамен.pdf", "update_index.py", "migrate_titles.py", "99 System/Archive/04 Tools/StudyTracker/Courses", - "99 System/Archive/04 Tools/StudyTracker/Books", "99 System/Cache/Pasted image 20260526204029.png", "99 System/Cache/Pasted image 20260526203848.png", "99 System/Cache/Pasted image 20260526203807.png", diff --git a/00 Inbox/Экзамен - Полный конспект.md b/00 Inbox/Экзамен - Полный конспект.md new file mode 100644 index 0000000..09a553e --- /dev/null +++ b/00 Inbox/Экзамен - Полный конспект.md @@ -0,0 +1,1371 @@ +# Экзамен — Разработка веб-ориентированных информационных систем + +> Временная заметка для экспорта в PDF. Удалить после использования. + +--- + +## Блок 1. Общие вопросы + +### Модель OSI + +**Модель OSI (Open Systems Interconnection)** — теоретическая база, определяющая протоколы, равномерно распределяя их на 7 логических уровней. + +_Протокол_ — набор правил, определяющий, как происходит обмен данными. + +| Уровень | Название | Что делает | Устройства/Протоколы | +|---|---|---|---| +| 1 | Физический (Physical) | Передаёт физические сигналы (токи, свет, радио) | Хабы, репитеры, Ethernet (L1) | +| 2 | Канальный (Data Link) | Проверяет ошибки; оперирует кадрами (frame) и MAC-адресами | Коммутаторы, Ethernet (L1+L2) | +| 3 | Сетевой (Network) | Маршрутизация; оперирует пакетами и IP-адресами; ARP | Маршрутизаторы | +| 4 | Транспортный (Transport) | Надёжная передача; TCP / UDP | — | +| 5 | Сеансовый (Session) | Управляет сессиями | — | +| 6 | Представления (Presentation) | Кодирование, сжатие (JPEG, GIF) | — | +| 7 | Прикладной (Application) | Сетевые службы: HTTP(S), SMTP, FTP | — | + +**Инкапсуляция** — добавление служебной информации при движении вниз по уровням; **деинкапсуляция** — обратный процесс. + +**MAC-адрес** — уникальный идентификатор устройства на канальном уровне. + +**ARP (Address Resolution Protocol)** — определяет MAC-адрес по IP-адресу в локальной сети. + +--- + +### IPv4, маска подсети, подсети (VLSM) + +**IP-адрес** имеет две части: адрес сети и адрес узла. + +**Маска сети** — 32-битное число из подряд идущих единиц. Примеры: +- Класс A → 255.0.0.0 (`/8`) +- Класс B → 255.255.0.0 (`/16`) +- Класс C → 255.255.255.0 (`/24`) + +Современный стандарт — **CIDR** (бесклассовая адресация). + +**Диапазоны приватных сетей:** +1. 10.0.0.0 – 10.255.255.255 +2. 172.16.0.0 – 172.31.255.255 +3. 192.168.0.0 – 192.168.255.255 + +Специальные адреса: +- `0.0.0.0` — используется DHCP при первом запросе. +- `255.255.255.255` — широковещательный (broadcast). +- `127.*.*.*` — loopback (обращение к самому себе; **localhost** = `127.0.0.1`). + +**Количество хостов в подсети:** +$$H = 2^{n} - 2$$ +где $n$ — число бит под номер хоста. + +**Количество подсетей:** +$$N = 2^{n}$$ +где $n$ — число бит, заимствованных из хостовой части. + +**VLSM (Variable Length Subnet Mask)** — маска переменной длины. Позволяет делить пространство на подсети разного размера, чтобы никто не перехватил трафик и каждому устройству достался адрес. + +Запись: `192.168.25.0/24`, где 24 — число единиц в маске (= 255.255.255.0). + +Пример: `192.168.1.0/24` — 254 хоста, адрес сети `192.168.1.0`, широковещательный `192.168.1.255`. + +**Выделение адресов:** IANA → Региональные регистраторы (RIPE для Европы) → Национальные регистраторы → Провайдеры. + +--- + +### IPv6 + +**Причина появления:** IPv4 даёт ~4 млрд адресов — их не хватает. IPv6 использует 128 бит. + +$$340\ 282\ 366\ 920\ 938\ 463\ 463\ 374\ 607\ 431\ 768\ 211\ 456 \text{ адресов}$$ + +**Формат:** 8 групп по 4 шестнадцатеричных цифры: +``` +2041:0000:140F:0000:0000:0000:875B:131B +``` + +Правила сокращения: +1. Несколько блоков нулей подряд → `::` (только один раз в адресе). +2. Одиночный блок нулей → `0`. +3. Ведущие нули в блоке можно опустить. + +Пример: `2041:0000:140F:0000:0000:0000:875B:131B` → `2041:0:140F::875B:131B` + +**Отличия от IPv4:** +- OSPF v2 → OSPFv3; ICMP → ICMPv6; ARP → NDP (Neighbor Discovery Protocol). +- RIP → RIPng; BGP → MP-BGP; EIGRP поддерживает оба. +- **Двойной стек** — одновременная работа IPv4 и IPv6. + +**Типы адресов:** +- **Global Unicast** — публичные, аналог белых IPv4. +- **Unique Local** (префикс `FD`) — аналог приватных IPv4. +- **Link-Local** (префикс `FE80`) — для связи внутри сегмента. +- **Multicast** (префикс `FF`). + +**Подсети в IPv6:** стандартный префикс подсети — `/64`. Первые 64 бита — префикс сети, последние 64 — идентификатор интерфейса. Число подсетей при `/48` от провайдера: 2^16 ≈ 65 536. + +**Получение префиксов:** IANA → Региональные реестры → ISP → Клиент. + +--- + +### NAT (Network Address Translation) + +**Проблема:** нехватка публичных IPv4. **Решение:** NAT переводит приватные адреса в публичные. + +**Термины:** +- **Inside Local** — приватный адрес устройства внутри сети. +- **Inside Global** — публичный адрес, под которым виден пакет снаружи. +- **Outside Local** — адрес внешнего устройства во внутренней топологии. +- **Outside Global** — реальный адрес внешнего устройства. + +**Типы NAT:** + +| Тип | Суть | +|---|---| +| Static NAT | 1:1 — один внутренний ↔ один внешний (для серверов) | +| Dynamic NAT | Пул внутренних ↔ пул внешних (автоматически) | +| PAT (NAT Overload) | Многие внутренние → один внешний + уникальные порты (домашние роутеры) | + +**PAT:** использует номер порта TCP/UDP для разделения сессий. ICMPv4 использует Query ID вместо порта. + +**Stub-сеть** — тупиковая сеть, весь трафик которой выходит через один маршрутизатор. + +| Преимущества NAT | Недостатки NAT | +|---|---| +| Экономия публичных IPv4 | Увеличение задержки | +| Конфиденциальность топологии | Проблемы с IPsec, входящими соединениями | +| Независимость от провайдера | Потеря сквозной трассировки | + +--- + +### TCP и UDP + +Основные протоколы транспортного уровня (L4). + +**TCP (Transmission Control Protocol) — RFC 793:** +- Устанавливает соединение трёхсторонним рукопожатием: + 1. **SYN** — запрос на соединение от отправителя. + 2. **SYN-ACK** — подтверждение от получателя. + 3. **ACK** — начало передачи. +- После каждой порции данных получатель отправляет подтверждение. +- **Надёжный, но медленный.** Используется там, где важна точность: пароли, транзакции, почта. + +**UDP (User Datagram Protocol):** +- Просто отправляет пакеты без установления соединения. +- Может теряться часть данных или нарушаться порядок. +- **Быстрый, но ненадёжный.** Используется там, где важна скорость: видеозвонки, стриминг, игры. + +--- + +### DNS (Domain Name System) + +**DNS** — система доменных имён. Аналог: контактная книга (ФИО → номер телефона → домен → IP). + +**Цепочка разрешения:** +1. Браузер → **кэш браузера**. +2. → Локальный DNS (файл `hosts`). +3. → **Resolver** (обычно сервер провайдера или 8.8.8.8). +4. → **Root server** (отвечает за `.`). +5. → **TLD server** (Top Level Domain): + - gTLD: `.com`, `.org`, `.edu` + - ccTLD: `.ru`, `.ua`, `.by`, `.us` +6. → **Authoritative nameserver** — знает конкретный IP. + +**Виды запросов:** +1. **Recursive** — запрос IP по домену (resolver сам обходит всю цепочку). +2. **Iterative** — запрос IP или следующего сервера. +3. **Inverse** — запрос домена по IP. + +--- + +### Localhost и порты + +**localhost** — стандартное доменное имя для loopback-адреса `127.0.0.1` (IPv4) или `::1` (IPv6). Означает «этот же компьютер». + +**Стандартные порты:** +| Протокол | Порт | +| --- | --- | +| HTTP | 80 | +| HTTPS | 443 | +| FTP | 21 | +| SSH | 22 | +| DNS | 53 | +| SMTP | 25 | + +--- + +### HTTP / HTTPS / HTTP/3 + +**HTTP (HyperText Transfer Protocol)** — протокол прикладного уровня (L7) для передачи данных в вебе. + +**Структура HTTP-запроса:** +``` +METHOD /path HTTP/1.1 +Host: example.com +Content-Type: application/json + +[тело запроса] +``` + +**Основные методы:** +| Метод | Назначение | +|---|---| +| GET | Получить ресурс | +| POST | Создать / отправить данные | +| PUT | Заменить ресурс целиком | +| PATCH | Частично обновить | +| DELETE | Удалить | + +**Структура HTTP-ответа:** +``` +HTTP/1.1 200 OK +Content-Type: text/html + +[тело ответа] +``` + +**Коды ответов:** +| Диапазон | Смысл | Примеры | +|---|---|---| +| 1xx | Информационные | 100 Continue | +| 2xx | Успех | 200 OK, 201 Created, 204 No Content | +| 3xx | Перенаправление | 301 Moved Permanently, 302 Found | +| 4xx | Ошибка клиента | 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found | +| 5xx | Ошибка сервера | 500 Internal Server Error, 503 Service Unavailable | + +**HTTPS** — HTTP поверх TLS/SSL. Шифрует передачу данных; порт 443. Сертификат подтверждает подлинность сервера. + +**HTTP/2:** мультиплексирование запросов в одном TCP-соединении, сжатие заголовков, server push. + +**HTTP/3:** работает поверх QUIC (UDP вместо TCP), встроенное шифрование TLS 1.3, устраняет проблему блокировки заголовка (head-of-line blocking). + +--- + +### URI, URL, URN + +- **URI (Uniform Resource Identifier)** — общее понятие; любой идентификатор ресурса. +- **URL (Uniform Resource Locator)** — URI с указанием местонахождения и протокола доступа. +- **URN (Uniform Resource Name)** — URI без указания местонахождения; постоянное имя. + +``` +URL: https://example.com:8080/path/page?q=test#section + схема хост порт путь запрос якорь + +URN: urn:isbn:978-5-17-084585-3 +``` + +URL ⊆ URI; URN ⊆ URI. + +--- + +### Идентификация, аутентификация, авторизация + +- **Идентификация** — присвоение субъектам уникальных идентификаторов (логин, email). +- **Аутентификация** — проверка подлинности: «ты действительно тот, кем представляешься?» (пароль, токен, биометрия). +- **Авторизация** — проверка прав: «что тебе разрешено делать?» (роли, разрешения). + +**Модель CIA:** +- **Конфиденциальность** — данные недоступны неавторизованным. +- **Целостность** — данные не искажены. +- **Доступность** — система доступна легитимным пользователям. + +**Принципы защиты:** +- Простота (меньше поверхность атаки). +- Безопасные настройки по умолчанию (запрещено, если не разрешено явно). +- Минимизация полномочий. +- Разделение ответственности. + +**Уязвимость → Угроза → Атака:** +- **Уязвимость** — слабое место (ошибка в коде, слабый пароль, неверные права). +- **Угроза** — потенциальное нарушение безопасности. +- **Атака** — реализованная угроза. + +--- + +### OAuth 2.0 + +**OAuth 2.0** — протокол авторизации, позволяющий приложению получить ограниченный доступ к ресурсам пользователя на другом сервисе без передачи пароля. + +**Роли:** +- **Resource Owner** — пользователь, владелец данных. +- **Client** — приложение, запрашивающее доступ. +- **Authorization Server** — выдаёт токены (например, Google, GitHub). +- **Resource Server** — хранит защищённые данные. + +**Базовый flow (Authorization Code):** +1. Client перенаправляет пользователя на Authorization Server. +2. Пользователь даёт согласие. +3. Authorization Server возвращает **code** на redirect_uri клиента. +4. Client обменивает code на **access_token** (и **refresh_token**). +5. Client обращается к Resource Server с access_token. + +**Access token** — краткосрочный, используется для запросов. +**Refresh token** — долгосрочный, используется для получения нового access_token. + +--- + +## Блок 2–3. HTML + +**HTML (Hypertext Markup Language)** — язык разметки для структурирования веб-страниц. + +### Структура документа + +```html +<!DOCTYPE html> +<html lang="ru"> +<head> + <meta charset="UTF-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <title>Заголовок страницы + + + + + +``` + +- `` — объявление типа документа (HTML5). +- `` — метаданные: не отображаются в браузере. +- `` — основное содержимое. +- `` — комментарий. + +**Метатег viewport** — критичен для мобильных устройств: +```html + +``` + +--- + +### Нормальный поток. Блочные и строчные элементы + +**Нормальный поток** — стандартное поведение: блочные элементы идут сверху вниз, строчные — слева направо внутри строки. + +- **Блочные элементы** занимают всю доступную ширину и начинаются с новой строки: `

`, `

`, `

`–`

`, `
`, `
`. +- **Строчные элементы** находятся внутри строки и не ломают поток: ``, ``, ``, ``, ``. + +--- + +### Семантические теги + +Семантика — использование тегов по смыслу. + +| Тег | Назначение | +|---|---| +| `
` | Верхняя часть страницы или секции | +| `