1
0
Переглянути джерело

Merge branch 'master' of http://213.155.192.79:3001/ypv/up

ypv 2 тижнів тому
батько
коміт
a7e9d71d09

+ 65 - 0
3.20_kazutin.py

@@ -0,0 +1,65 @@
+import tkinter as tk
+
+
+def find_units():
+    number = int(entry.get())
+    units = number % 10
+    label_units.config(text=f'Число единиц: {units}')
+
+
+def find_tens():
+    number = int(entry.get())
+    tens = (number // 10) % 10
+    label_tens.config(text=f'Число десятков: {tens}')
+
+
+def sum_digits():
+    number = int(entry.get())
+    digits_sum = sum(int(digit) for digit in str(number))
+    label_sum.config(text=f'Сумма цифр: {digits_sum}')
+
+
+def product_digits():
+    number = int(entry.get())
+    digits_product = 1
+    for digit in str(number):
+        digits_product *= int(digit)
+
+    label_product.config(text=f'Произведение цифр: {digits_product}')
+
+
+root = tk.Tk()
+root.title("Работа с трёхзначным числом")
+
+entry_label = tk.Label(root, text="Введите трёхзначное число:")
+entry_label.pack(pady=10)
+
+entry = tk.Entry(root)
+entry.pack(padx=20, pady=10)
+
+button_units = tk.Button(root, text='Найти число единиц', command=find_units)
+button_units.pack(pady=5)
+
+button_tens = tk.Button(root, text='Найти число десятков', command=find_tens)
+button_tens.pack(pady=5)
+
+button_sum = tk.Button(root, text='Найти сумму цифр', command=sum_digits)
+button_sum.pack(pady=5)
+
+button_product = tk.Button(
+    root, text='Найти произведение цифр', command=product_digits)
+button_product.pack(pady=5)
+
+
+label_units = tk.Label(root, text="")
+label_units.pack(pady=5)
+
+label_tens = tk.Label(root, text="")
+label_tens.pack(pady=5)
+
+label_sum = tk.Label(root, text="")
+label_sum.pack(pady=5)
+
+label_product = tk.Label(root, text="")
+label_product.pack(pady=5)
+root.mainloop()

+ 48 - 0
4.59_kazutin.py

@@ -0,0 +1,48 @@
+import tkinter as tk
+
+
+def check_triangle():
+    try:
+        side_a = float(entry_a.get())
+        side_b = float(entry_b.get())
+        side_c = float(entry_c.get())
+
+        if not ((side_a + side_b > side_c) and (side_a + side_c > side_b) and (side_b + side_c > side_a)):
+            result_label.config(text="Это не треугольник!")
+            return
+
+        if side_a == side_b == side_c:
+            result_label.config(text="Треугольник равносторонний.")
+        elif side_a == side_b or side_a == side_c or side_b == side_c:
+            result_label.config(text="Треугольник равнобедренный.")
+        else:
+            result_label.config(text="Треугольник неравносторонний.")
+
+    except ValueError:
+        result_label.config(text="Ошибка ввода! Пожалуйста, введите числа.")
+
+
+root = tk.Tk()
+root.title("Проверка типа треугольника")
+
+label_a = tk.Label(root, text="Сторона A:")
+entry_a = tk.Entry(root)
+label_b = tk.Label(root, text="Сторона B:")
+entry_b = tk.Entry(root)
+label_c = tk.Label(root, text="Сторона C:")
+entry_c = tk.Entry(root)
+
+button_check = tk.Button(root, text="Проверить", command=check_triangle)
+
+result_label = tk.Label(root, text="", fg="green")
+
+label_a.grid(row=0, column=0)
+entry_a.grid(row=0, column=1)
+label_b.grid(row=1, column=0)
+entry_b.grid(row=1, column=1)
+label_c.grid(row=2, column=0)
+entry_c.grid(row=2, column=1)
+button_check.grid(row=3, columnspan=2)
+result_label.grid(row=4, columnspan=2)
+
+root.mainloop()

+ 42 - 0
ОАиП/2024-25/36гр/2 сем/Дунаев работа 1 .py

@@ -0,0 +1,42 @@
+# Проверка, является ли число простым
+
+import tkinter as tk
+from tkinter import messagebox
+
+# Функция для проверки, является ли число простым
+def is_prime(n):
+    if n <= 1:  # Число 1 и все числа меньше 1 не являются простыми
+        return False
+    for i in range(2, int(n**0.5) + 1):
+        if n % i == 0:
+            return False
+    return True
+
+# Функция, которая вызывается при нажатии на кнопку
+def check_prime():
+    try:
+        num = int(entry.get())  # Получаем число из текстового поля
+        if is_prime(num):
+            messagebox.showinfo("Результат", f"Число {num} простое.")
+        else:
+            messagebox.showinfo("Результат", f"Число {num} не простое.")
+    except ValueError:
+        messagebox.showerror("Ошибка", "Пожалуйста, введите корректное число!")
+
+# Создание основного окна
+root = tk.Tk()
+root.title("Проверка простоты числа")
+
+# Метка и поле для ввода
+label = tk.Label(root, text="Введите число для проверки:")
+label.pack()
+
+entry = tk.Entry(root, width=50)
+entry.pack()
+
+# Кнопка для проверки простоты числа
+button = tk.Button(root, text="Проверить", command=check_prime)
+button.pack()
+
+# Запуск графического интерфейса
+root.mainloop()

+ 29 - 0
ОАиП/2024-25/36гр/2 сем/Дунаев работа 2.py

@@ -0,0 +1,29 @@
+import tkinter as tk
+from tkinter import messagebox
+
+# Функция для вычисления суммы элементов массива
+def calculate_sum():
+    try:
+        arr = list(map(int, entry.get().split()))  # Получаем числа из текстового поля
+        result = sum(arr)
+        messagebox.showinfo("Результат", f"Сумма элементов массива: {result}")
+    except ValueError:
+        messagebox.showerror("Ошибка", "Пожалуйста, введите только числа!")
+
+# Создание основного окна
+root = tk.Tk()
+root.title("Сумма элементов массива")
+
+# Метка и поле для ввода
+label = tk.Label(root, text="Введите числа через пробел:")
+label.pack()
+
+entry = tk.Entry(root, width=50)
+entry.pack()
+
+# Кнопка для вычисления суммы
+button = tk.Button(root, text="Вычислить сумму", command=calculate_sum)
+button.pack()
+
+# Запуск GUI
+root.mainloop()

+ 24 - 0
ОАиП/2024-25/36гр/2 сем/Ермоленко2.py

@@ -0,0 +1,24 @@
+import tkinter as tk
+from tkinter import messagebox
+
+def count_characters():
+    input_string = entry.get()
+    count = len(input_string)  
+    messagebox.showinfo("Результат", f"Количество символов: {count}")
+
+
+root = tk.Tk()
+root.title("Подсчёт символов в строке")
+
+label = tk.Label(root, text="Введите строку:")
+label.pack()
+
+entry = tk.Entry(root, width=50)
+entry.pack()
+
+
+button = tk.Button(root, text="Подсчитать символы", command=count_characters)
+button.pack()
+
+# Запуск GUI
+root.mainloop()

+ 90 - 0
ОАиП/2024-25/36гр/2 сем/Задача 4.143. Зелинский Кирилл.py

@@ -0,0 +1,90 @@
+import tkinter as tk
+from tkinter import ttk
+from tkinter import filedialog
+
+def calculate_dates():
+    """
+    Вычисляет предыдущую и следующую даты для заданной даты.
+    """
+    try:
+        day = int(day_entry.get())
+        month = int(month_entry.get())
+
+        if not (1 <= month <= 12):
+            result_text.delete("1.0", tk.END)
+            result_text.insert(tk.END, "Месяц должен быть от 1 до 12.")
+            return
+
+        days_in_month = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
+        if not (1 <= day <= days_in_month[month]):
+            result_text.delete("1.0", tk.END)
+            result_text.insert(tk.END, f"День должен быть от 1 до {days_in_month[month]} для месяца {month}.")
+            return
+
+
+        prev_day = day - 1
+        prev_month = month
+        if prev_day == 0:
+            prev_month -= 1
+            if prev_month == 0:
+                result_text.delete("1.0", tk.END)
+                result_text.insert(tk.END, "Введенная дата не может быть 1 января (по условию задачи).")
+                return
+            prev_day = days_in_month[prev_month]
+
+
+        next_day = day + 1
+        next_month = month
+        if next_day > days_in_month[month]:
+            next_day = 1
+            next_month += 1
+            if next_month > 12:
+                result_text.delete("1.0", tk.END)
+                result_text.insert(tk.END, "Введенная дата не может быть 31 декабря (по условию задачи).")
+                return 
+
+        result = f"Предыдущий день: {prev_day:02d}.{prev_month:02d}\n"
+        result += f"Следующий день: {next_day:02d}.{next_month:02d}\n"
+
+        result_text.delete("1.0", tk.END)
+        result_text.insert(tk.END, result)
+
+        filepath = filedialog.asksaveasfilename(defaultextension=".txt",
+                                               filetypes=[("Текстовые файлы", "*.txt"),
+                                                          ("Все файлы", "*.*")])
+
+        if filepath:
+            try:
+                with open(filepath, "w") as f:
+                    f.write(result)
+                result_text.insert(tk.END, f"\nРезультат сохранен в файл: {filepath}")
+            except Exception as e:
+                result_text.insert(tk.END, f"\nОшибка при сохранении в файл: {e}")
+
+
+    except ValueError:
+        result_text.delete("1.0", tk.END)
+        result_text.insert(tk.END, "Введите корректные числа.")
+
+
+root = tk.Tk()
+root.title("Калькулятор дат")
+
+
+day_label = ttk.Label(root, text="День:")
+day_label.grid(row=0, column=0, padx=5, pady=5, sticky=tk.W)
+day_entry = ttk.Entry(root)
+day_entry.grid(row=0, column=1, padx=5, pady=5, sticky=tk.E)
+
+month_label = ttk.Label(root, text="Месяц:")
+month_label.grid(row=1, column=0, padx=5, pady=5, sticky=tk.W)
+month_entry = ttk.Entry(root)
+month_entry.grid(row=1, column=1, padx=5, pady=5, sticky=tk.E)
+
+calculate_button = ttk.Button(root, text="Рассчитать", command=calculate_dates)
+calculate_button.grid(row=2, column=0, columnspan=2, padx=5, pady=5)
+
+result_text = tk.Text(root, height=5, width=30)
+result_text.grid(row=3, column=0, columnspan=2, padx=5, pady=5)
+
+root.mainloop()

+ 98 - 0
ОАиП/2024-25/36гр/2 сем/Задача 6.32. Зелинский Кирилл.py

@@ -0,0 +1,98 @@
+import tkinter as tk
+from tkinter import ttk
+from tkinter import filedialog
+
+def calculate_skiing():
+    """
+    Вычисляет день, когда лыжник пробежит больше 20 км, и день, когда суммарный пробег превысит 100 км.
+    """
+    try:
+        initial_distance = float(initial_distance_entry.get())
+        increase_percentage = float(increase_percentage_entry.get())
+
+        if initial_distance <= 0:
+            result_text.delete("1.0", tk.END)
+            result_text.insert(tk.END, "Начальное расстояние должно быть больше 0.")
+            return
+
+        if increase_percentage <= 0:
+            result_text.delete("1.0", tk.END)
+            result_text.insert(tk.END, "Процент увеличения должен быть больше 0.")
+            return
+
+        distance = initial_distance
+        total_distance = initial_distance 
+        day = 1
+        day_over_20 = None
+        day_over_100 = None
+
+        while True:
+            if distance > 20 and day_over_20 is None:
+                day_over_20 = day
+
+            if total_distance > 100 and day_over_100 is None:
+                day_over_100 = day
+
+            if day_over_20 is not None and day_over_100 is not None:
+                break
+
+            day += 1
+            distance *= (1 + increase_percentage / 100)
+            total_distance += distance
+            if day > 1000:
+                break
+
+        result = ""
+        if day_over_20 is not None:
+            result += f"В день {day_over_20} лыжник пробежит больше 20 км.\n"
+        else:
+            result += "Лыжник никогда не пробежит больше 20 км.\n"
+
+        if day_over_100 is not None:
+            result += f"Суммарный пробег превысит 100 км в день {day_over_100}.\n"
+        else:
+            result += "Суммарный пробег никогда не превысит 100 км.\n"
+
+        result_text.delete("1.0", tk.END)
+        result_text.insert(tk.END, result)
+
+
+        filepath = filedialog.asksaveasfilename(defaultextension=".txt",
+                                               filetypes=[("Текстовые файлы", "*.txt"),
+                                                          ("Все файлы", "*.*")])
+
+        if filepath:
+            try:
+                with open(filepath, "w") as f:
+                    f.write(result)
+                result_text.insert(tk.END, f"\nРезультат сохранен в файл: {filepath}")
+            except Exception as e:
+                result_text.insert(tk.END, f"\nОшибка при сохранении в файл: {e}")
+
+    except ValueError:
+        result_text.delete("1.0", tk.END)
+        result_text.insert(tk.END, "Введите корректные числа.")
+
+
+root = tk.Tk()
+root.title("Расчет пробега лыжника")
+
+initial_distance_label = ttk.Label(root, text="Начальный пробег (км):")
+initial_distance_label.grid(row=0, column=0, padx=5, pady=5, sticky=tk.W)
+initial_distance_entry = ttk.Entry(root)
+initial_distance_entry.grid(row=0, column=1, padx=5, pady=5, sticky=tk.E)
+initial_distance_entry.insert(0, "10")
+
+increase_percentage_label = ttk.Label(root, text="Процент увеличения пробега:")
+increase_percentage_label.grid(row=1, column=0, padx=5, pady=5, sticky=tk.W)
+increase_percentage_entry = ttk.Entry(root)
+increase_percentage_entry.grid(row=1, column=1, padx=5, pady=5, sticky=tk.E)
+increase_percentage_entry.insert(0, "10")
+
+calculate_button = ttk.Button(root, text="Рассчитать", command=calculate_skiing)
+calculate_button.grid(row=2, column=0, columnspan=2, padx=5, pady=5)
+
+result_text = tk.Text(root, height=10, width=50)
+result_text.grid(row=3, column=0, columnspan=2, padx=5, pady=5)
+
+root.mainloop()

+ 65 - 0
ОАиП/2024-25/36гр/3.20_kazutin.py

@@ -0,0 +1,65 @@
+import tkinter as tk
+
+
+def find_units():
+    number = int(entry.get())
+    units = number % 10
+    label_units.config(text=f'Число единиц: {units}')
+
+
+def find_tens():
+    number = int(entry.get())
+    tens = (number // 10) % 10
+    label_tens.config(text=f'Число десятков: {tens}')
+
+
+def sum_digits():
+    number = int(entry.get())
+    digits_sum = sum(int(digit) for digit in str(number))
+    label_sum.config(text=f'Сумма цифр: {digits_sum}')
+
+
+def product_digits():
+    number = int(entry.get())
+    digits_product = 1
+    for digit in str(number):
+        digits_product *= int(digit)
+
+    label_product.config(text=f'Произведение цифр: {digits_product}')
+
+
+root = tk.Tk()
+root.title("Работа с трёхзначным числом")
+
+entry_label = tk.Label(root, text="Введите трёхзначное число:")
+entry_label.pack(pady=10)
+
+entry = tk.Entry(root)
+entry.pack(padx=20, pady=10)
+
+button_units = tk.Button(root, text='Найти число единиц', command=find_units)
+button_units.pack(pady=5)
+
+button_tens = tk.Button(root, text='Найти число десятков', command=find_tens)
+button_tens.pack(pady=5)
+
+button_sum = tk.Button(root, text='Найти сумму цифр', command=sum_digits)
+button_sum.pack(pady=5)
+
+button_product = tk.Button(
+    root, text='Найти произведение цифр', command=product_digits)
+button_product.pack(pady=5)
+
+
+label_units = tk.Label(root, text="")
+label_units.pack(pady=5)
+
+label_tens = tk.Label(root, text="")
+label_tens.pack(pady=5)
+
+label_sum = tk.Label(root, text="")
+label_sum.pack(pady=5)
+
+label_product = tk.Label(root, text="")
+label_product.pack(pady=5)
+root.mainloop()

+ 48 - 0
ОАиП/2024-25/36гр/4.59_kazutin.py

@@ -0,0 +1,48 @@
+import tkinter as tk
+
+
+def check_triangle():
+    try:
+        side_a = float(entry_a.get())
+        side_b = float(entry_b.get())
+        side_c = float(entry_c.get())
+
+        if not ((side_a + side_b > side_c) and (side_a + side_c > side_b) and (side_b + side_c > side_a)):
+            result_label.config(text="Это не треугольник!")
+            return
+
+        if side_a == side_b == side_c:
+            result_label.config(text="Треугольник равносторонний.")
+        elif side_a == side_b or side_a == side_c or side_b == side_c:
+            result_label.config(text="Треугольник равнобедренный.")
+        else:
+            result_label.config(text="Треугольник неравносторонний.")
+
+    except ValueError:
+        result_label.config(text="Ошибка ввода! Пожалуйста, введите числа.")
+
+
+root = tk.Tk()
+root.title("Проверка типа треугольника")
+
+label_a = tk.Label(root, text="Сторона A:")
+entry_a = tk.Entry(root)
+label_b = tk.Label(root, text="Сторона B:")
+entry_b = tk.Entry(root)
+label_c = tk.Label(root, text="Сторона C:")
+entry_c = tk.Entry(root)
+
+button_check = tk.Button(root, text="Проверить", command=check_triangle)
+
+result_label = tk.Label(root, text="", fg="green")
+
+label_a.grid(row=0, column=0)
+entry_a.grid(row=0, column=1)
+label_b.grid(row=1, column=0)
+entry_b.grid(row=1, column=1)
+label_c.grid(row=2, column=0)
+entry_c.grid(row=2, column=1)
+button_check.grid(row=3, columnspan=2)
+result_label.grid(row=4, columnspan=2)
+
+root.mainloop()

+ 5 - 0
ОАиП/2024-25/36гр/podennny.py

@@ -0,0 +1,5 @@
+import random
+random_numbers = [random.randint(0, 3) for _ in range(50)]
+for number in random_numbers:
+    if number == 1 or number == 0:
+        print(number)

+ 3 - 0
ОАиП/2024-25/36гр/podenny.py

@@ -0,0 +1,3 @@
+grades = [5, 4, 3, 2, 3, 4, 5, 4 ,5]
+count_fives = grades.count(5)
+print(f"Количество пятерок по информатике:{count_fives}")

+ 7 - 0
ОАиП/2024-25/36гр/Подвербный/Документация Подвербный.txt

@@ -0,0 +1,7 @@
+Суть моего проекта состоит в воссоздании процесса зашифрования и расшифрования открытого текста шифром Виженера в графическом исполнении.
+Программную часть реализации проекта я осуществил на Python, графическую же при помощи модуля tkinter, в том же Python.
+Основной как задачей так и одновременно ключевой особенностью моего проекта стала непосредственная графическая (визуальная\наглядная) демонстрация процесса зашифрования-дешифрования. Причиной выбора именно что Виженера стала его относительная простота в реализации, достойная криптостойкость итогового шифра-текста как правило достаточная для пользовательских нужд, и тот немаловажный факт. что шифрование методом Виженера изучалось и применялось мною на занятиях в уч. заведении.
+Разработку проекта я начал с создания таблицы для заполнения SQL таблица, записал в неё алфавит, причем в трёх вариациях "С ё"."Без ё","С подчеркиванием" (выбор какой из алфавитов использовать я реализовал через глобальную переменную и соответствующий элемент в графическом поле), далее я приступил к написанию кода для выделения символов (букв) фигурирующих в зашифровке-расшифровке разными цветами (красный, синий и т.д.).
+После я приступил к созданию анимации, первым делом анимации сканирования и движения для выбранной буквы ключа, анимация пробега по таблице, анимация подъёма найденной ячейки, обновления строки с буквой ключа, обновления строки куда перемещается, непосредственная реализация цветового выделения.
+Далее располагается модуль с функциями шифрования/дешифрования, первым идет шифрование, после дешифрование, далее сохранение результата.
+В конце программы свою почетную нишу занял достаточно объемный модуль с создание интерфейса и не какого-нибудь, а графического, через тот самый модуль tkinter: поле (800*600), label(сообщен е о выборе алфавита), label(сообщения о вводе ключа), table_display (поле для отображения выбранного алфавита и ключа), label (сообщение о вводе текста), button (запуск функции зашифровки), button (запуск функции дешифровки), label (подпись о выводе результата, заменяется на непосредственный результат

+ 230 - 0
ОАиП/2024-25/36гр/Подвербный/Новый вижинер с анимацией.py

@@ -0,0 +1,230 @@
+import sqlite3
+import tkinter as tk
+from tkinter import ttk
+import time
+
+# Создание таблицы для заполнения
+conn = sqlite3.connect("vigenere.db")
+cursor = conn.cursor()
+cursor.execute("""
+CREATE TABLE IF NOT EXISTS alphabets (
+    id INTEGER PRIMARY KEY AUTOINCREMENT,
+    name TEXT UNIQUE,
+    alphabet TEXT
+)
+""")
+conn.commit()
+
+# Запись алфавита
+cursor.execute("SELECT COUNT(*) FROM alphabets")
+if cursor.fetchone()[0] == 0:
+    cursor.execute("INSERT INTO alphabets (name, alphabet) VALUES (?, ?)",
+                   ("Русский (с Ё)", "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"))
+    cursor.execute("INSERT INTO alphabets (name, alphabet) VALUES (?, ?)",
+                   ("Русский (без Ё)", "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"))
+    cursor.execute("INSERT INTO alphabets (name, alphabet) VALUES (?, ?)",
+                   ("Русский (с подчеркиванием)", "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ"))
+    conn.commit()
+
+# Глобальная переменная для заполения алфавита выбранного
+alphabet = ""
+
+# Цветовая функция
+def get_color_for_key(letter):
+    colors = ["red", "blue", "green", "orange", "purple", "magenta", "cyan", "brown"]
+    return colors[ord(letter) % len(colors)]
+
+def build_table_lines():
+    cell_width = 3
+    # Выравнивание по првому краю
+    header = " " * cell_width + "".join([letter.rjust(cell_width) for letter in alphabet])
+    
+    raw_key = key_entry.get().upper()
+    unique_key = ""
+    for ch in raw_key:
+        if ch in alphabet and ch not in unique_key:
+            unique_key += ch
+
+    rows = []
+    for letter in unique_key:
+        shift = alphabet.index(letter) + 1
+        rotated = alphabet[shift:] + alphabet[:shift]
+        row = letter.rjust(cell_width) + "".join([r.rjust(cell_width) for r in rotated])
+        rows.append(row)
+        
+    return [header] + rows, unique_key
+
+def update_table():
+    lines, _ = build_table_lines()
+    full_text = "\n".join(lines)
+    table_display.config(state="normal")
+    table_display.delete("1.0", "end")
+    table_display.insert("1.0", full_text)
+    table_display.config(state="disabled")
+
+def update_table_in_text(content):
+    table_display.config(state="normal")
+    table_display.delete("1.0", "end")
+    table_display.insert("1.0", content)
+    table_display.config(state="disabled")
+
+def animate_intersection(key_letter, plaintext_letter, ciphertext_letter):
+  
+    # Анимация сканирования и движения для выбранной буквы ключа
+   
+    cell_width = 3
+    lines, unique_key = build_table_lines()
+    if key_letter not in unique_key:
+        return
+    row_index = unique_key.index(key_letter) + 1
+    
+    shift = alphabet.index(key_letter) + 1
+    rotated = alphabet[shift:] + alphabet[:shift]
+    try:      
+        target_col = rotated.index(ciphertext_letter)
+    except ValueError:
+        target_col = 0
+
+    # Пробег по таблице
+    for j in range(len(alphabet)):
+        new_lines = list(lines)
+        row = new_lines[row_index]
+        cells = [row[i:i+cell_width] for i in range(0, len(row), cell_width)]
+        if j < len(cells) - 1:
+            cells[j+1] = "(" + rotated[j].strip() + ")"
+        new_lines[row_index] = key_letter.rjust(cell_width) + "".join(cells[1:])
+        update_table_in_text("\n".join(new_lines))
+        table_display.update()
+        time.sleep(0.2)
+        if j == target_col:
+            perform_upward_animation(key_letter, target_col, rotated,
+                                     row_index, cell_width, lines)
+            break
+
+def perform_upward_animation(key_letter, target_col, rotated, row_index, cell_width, base_lines):
+    
+    #Анимация подъёма найденной ячейки.
+    
+    floating_frames = 4
+    for frame in range(floating_frames):
+        new_lines = list(base_lines)
+        new_row_index = row_index - (frame + 1)
+        if new_row_index < 1:
+            new_row_index = 1
+        # Обновляем строку с буквой ключа
+        orig_line = new_lines[row_index]
+        cells = [orig_line[i:i+cell_width] for i in range(0, len(orig_line), cell_width)]
+        cells[target_col+1] = rotated[target_col].rjust(cell_width)
+        new_lines[row_index] = key_letter.rjust(cell_width) + "".join(cells[1:])
+        
+        # Обновляем строку куда перемещаеться 
+        float_line = new_lines[new_row_index]
+        float_cells = [float_line[i:i+cell_width] for i in range(0, len(float_line), cell_width)]
+        if target_col+1 < len(float_cells):
+            float_cells[target_col+1] = rotated[target_col].center(cell_width)
+        else:
+            float_cells.append(rotated[target_col].center(cell_width))
+        new_lines[new_row_index] = "".join(float_cells)
+        
+        update_table_in_text("\n".join(new_lines))
+        table_display.config(state="normal")
+        line_num = new_row_index + 1
+        start_col = (target_col+1) * cell_width
+        end_col = start_col + cell_width
+        table_display.tag_remove("highlight", "1.0", "end")
+        table_display.tag_add("highlight", f"{line_num}.{start_col}", f"{line_num}.{end_col}")
+        # Выбор цвета
+        table_display.tag_config("highlight", foreground=get_color_for_key(key_letter))
+        table_display.config(state="disabled")
+        table_display.update()
+        time.sleep(0.3)
+    time.sleep(0.5)
+    update_table()
+
+def vigenere_cipher(text, decrypt=False):
+   
+    text = text.upper()
+    key = key_entry.get().upper()
+    if not key:
+        return text
+    result = ""
+    for i, char in enumerate(text):
+        if char in alphabet:
+            current_key = key[i % len(key)]
+            shift = alphabet.index(current_key)
+            if decrypt:
+                new_index = (alphabet.index(char) - shift) % len(alphabet)
+            else:
+                new_index = (alphabet.index(char) + shift) % len(alphabet)
+            output_letter = alphabet[new_index]
+            if decrypt:
+                animate_intersection(current_key, output_letter, char)
+            else:
+                animate_intersection(current_key, char, output_letter)
+            result += output_letter
+        else:
+            result += char
+    return result
+
+def encrypt():
+    update_table()
+    encrypted_text = vigenere_cipher(input_text.get(), decrypt=False)
+    output_text.config(text=encrypted_text)
+
+def decrypt():
+    update_table()
+    decrypted_text = vigenere_cipher(input_text.get(), decrypt=True)
+    output_text.config(text=decrypted_text)
+
+def load_alphabet(event=None):
+    global alphabet
+    selected = alphabet_var.get()
+    cursor.execute("SELECT alphabet FROM alphabets WHERE name = ?", (selected,))
+    result = cursor.fetchone()
+    if result:
+        alphabet = result[0]
+        # Вариант с подчеркиванием
+        if selected == "Русский (с подчеркиванием)" and not alphabet.endswith("_"):
+            alphabet += "_"
+        update_table()
+
+# Интерфейс 
+root = tk.Tk()
+root.title("Шифр Виженера")
+root.geometry("800x600")
+
+alphabet_var = tk.StringVar()
+ttk.Label(root, text="Выберите алфавит").pack()
+cursor.execute("SELECT name FROM alphabets")
+alphabet_options = [row[0] for row in cursor.fetchall()]
+alphabet_menu = ttk.Combobox(root, textvariable=alphabet_var, values=alphabet_options, state="readonly")
+alphabet_menu.pack()
+alphabet_menu.bind("<<ComboboxSelected>>", load_alphabet)
+
+ttk.Label(root, text="Введите ключ").pack()
+key_entry = tk.Entry(root)
+key_entry.pack()
+key_entry.bind("<KeyRelease>", lambda event: update_table())
+
+table_display = tk.Text(root, font=("Courier", 14), bd=0, highlightthickness=0, wrap="none")
+table_display.pack(pady=10, fill="x")
+table_display.tag_config("highlight", foreground="red")
+table_display.config(state="disabled")
+
+ttk.Label(root, text="Введите текст").pack()
+input_text = tk.Entry(root)
+input_text.pack(pady=5)
+
+buttons_frame = tk.Frame(root)
+buttons_frame.pack(pady=10)
+encrypt_button = tk.Button(buttons_frame, text="Зашифровать", command=encrypt)
+encrypt_button.pack(side=tk.LEFT, padx=10)
+decrypt_button = tk.Button(buttons_frame, text="Дешифровать", command=decrypt)
+decrypt_button.pack(side=tk.RIGHT, padx=10)
+
+ttk.Label(root, text="Результат:").pack()
+output_text = tk.Label(root, text="", fg="red", font=("Courier", 14))
+output_text.pack(pady=10)
+
+root.mainloop()
+conn.close()

+ 3311 - 0
ОАиП/2024-25/36гр/Рябченко/Рябченко.txt

@@ -0,0 +1,3311 @@
+import telebot
+from telebot import types
+
+bot = telebot.TeleBot('7609252578:AAF_sOrt6qrSJuQ8qZxK33V8Wb3ScO4j1Zo')
+
+@bot.message_handler(commands=['start'])
+def main(message):
+    markup = types.InlineKeyboardMarkup(row_width=5)
+
+    kurs2 = types.InlineKeyboardButton('2 курс',callback_data='kurs2')
+    kurs3 = types.InlineKeyboardButton('3 курс', callback_data='kurs3')
+    kurs4 = types.InlineKeyboardButton('4 курс', callback_data='kurs4')
+
+    markup.add(kurs2,kurs3,kurs4)
+    bot.send_message(message.chat.id,'Привет,выбери нужный курс',parse_mode='HTML', reply_markup=markup)
+
+@bot.callback_query_handler(func=lambda callback: callback.data)
+def check_callback_data(callback):
+    if callback.data == 'kurs2':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        astradomen = types.InlineKeyboardButton('Ввести\nAstra в domen',callback_data='astradomen')
+        windowsdomem = types.InlineKeyboardButton('Ввести\nWinodws в domen', callback_data='windowsdomem')
+        markupback1 = types.InlineKeyboardButton('Назад', callback_data='back1')
+
+        markup.add( astradomen,windowsdomem,markupback1)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Вы выбрали 2 курс',parse_mode='HTML', reply_markup=markup)
+    elif callback.data == 'kurs3':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        vipnet = types.InlineKeyboardButton('Настроить\nVipNet', callback_data='VipNet')
+        dm = types.InlineKeyboardButton('Настроить\nDevice Monitor', callback_data='DM')
+        aldpro = types.InlineKeyboardButton('Настроить\nAldPRO', callback_data='aldpro')
+        markupback1 = types.InlineKeyboardButton('Назад', callback_data='back1')
+
+        markup.add(vipnet,dm,aldpro,markupback1)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Вы выбрали 3 курс, что дальше?', parse_mode='HTML', reply_markup=markup)
+
+
+    elif callback.data == 'aldpro':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        client = types.InlineKeyboardButton('Настроить\nКлиент', callback_data='client')
+        domen = types.InlineKeyboardButton('Настроить\nДомен', callback_data='domen')
+
+        back =  types.InlineKeyboardButton('Вернуться', callback_data='back222')
+
+        markup.add(client,domen,back)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Вы выбрали AldPRO курс, что дальше?', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'back222':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        vipnet = types.InlineKeyboardButton('Настроить\nVipNet', callback_data='VipNet')
+        dm = types.InlineKeyboardButton('Настроить\nDevice Monitor', callback_data='DM')
+        aldpro = types.InlineKeyboardButton('Настроить\nAldPRO', callback_data='aldpro')
+        markupback1 = types.InlineKeyboardButton('Назад', callback_data='back1')
+
+        markup.add(vipnet, dm, aldpro, markupback1)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Вы вернулись обратно', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'client':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        client = types.InlineKeyboardButton('<<', callback_data='back22')
+        domen = types.InlineKeyboardButton('>>', callback_data='next22')
+
+        markup.add(client, domen)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После создания машины в Network Manager вводим значения \nМетод: Вручную\nАдрес: 10.0.1.51\nМаска: 255.255.255.0\nШлюз: 10.0.1.1 шлюз маршрутизатора или gateway\nСерверы DNS: 10.0.1.11 (адрес dc-1)\nПоисковый домен: ald.company.lan', parse_mode='HTML', reply_markup=markup)
+
+
+    elif callback.data == 'back21':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        client = types.InlineKeyboardButton('Настроить\nКлиент', callback_data='client')
+        domen = types.InlineKeyboardButton('Настроить\nДомен', callback_data='domen')
+
+        markup.add(client, domen)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Вы выбрали AldPRO курс, что дальше?', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'next22':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        client = types.InlineKeyboardButton('<<', callback_data='back23')
+        domen = types.InlineKeyboardButton('>>', callback_data='next23')
+
+        markup.add(client, domen)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После этого в файл sudo nano /etc/apt/sources.list копируем репозитории \n 1. deb https://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.6/repository-main/ 1._x86-64 main contrib non-free\n 2.deb https://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.6/repository-update/1.7_x86-64 main contrib non-free\n 3.deb https://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.6/repository-base/ 1.7_x86-64 main contrib non-free ', parse_mode='HTML', reply_markup=markup)
+
+
+    elif callback.data == 'back23':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        client = types.InlineKeyboardButton('<<', callback_data='back21')
+        domen = types.InlineKeyboardButton('>>', callback_data='next21')
+
+        markup.add(client, domen)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После создания машины в Network Manager вводим значения \nМетод: Вручную\nАдрес: 10.0.1.51\nМаска: 255.255.255.0\nШлюз: 10.0.1.1 шлюз маршрутизатора или gateway\nСерверы DNS: 10.0.1.11 (адрес dc-1)\nПоисковый домен: ald.company.lan',
+                              parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'next23':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        client = types.InlineKeyboardButton('<<', callback_data='back24')
+        domen = types.InlineKeyboardButton('>>', callback_data='next24')
+
+        markup.add(client, domen)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В файл sudo nano /etc/apt/sources.list.d/aldpro.list копируем репозиторий \n 1. deb https://download.astralinux.ru/aldpro/frozen/01/2.4.0 1.7_x86-64 mainbase',
+                              parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'back24':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        client = types.InlineKeyboardButton('<<', callback_data='back23')
+        domen = types.InlineKeyboardButton('>>', callback_data='next23')
+
+        markup.add(client, domen)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После этого в файл sudo nano /etc/apt/sources.list копируем репозитории \n 1. deb https://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.6/repository-main/ 1._x86-64 main contrib non-free\n 2.deb https://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.6/repository-update/1.7_x86-64 main contrib non-free\n 3.deb https://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.6/repository-base/ 1.7_x86-64 main contrib non-free ',
+                              parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'next24':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        client = types.InlineKeyboardButton('<<', callback_data='back25')
+        domen = types.InlineKeyboardButton('>>', callback_data='next25')
+
+        markup.add(client, domen)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После этого вводим команды \n sudo apt update\nsudo apt list --upgradable\nsudo apt dist-upgrade -y -o Dpkg::Options::=--force-confne',
+                              parse_mode='HTML', reply_markup=markup)
+
+
+    elif callback.data == 'back25':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        client = types.InlineKeyboardButton('<<', callback_data='back24')
+        domen = types.InlineKeyboardButton('>>', callback_data='next24')
+
+        markup.add(client, domen)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В файл sudo nano /etc/apt/sources.list.d/aldpro.list копируем репозиторий \n 1. deb https://download.astralinux.ru/aldpro/frozen/01/2.4.0 1.7_x86-64 mainbase',
+                              parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'next25':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        client = types.InlineKeyboardButton('<<', callback_data='back26')
+        domen = types.InlineKeyboardButton('>>', callback_data='next26')
+
+        markup.add(client, domen)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После этого вводим sudo DEBIAN_FRONTEND=noninteractive apt-get install -y -q aldpro-client',
+                              parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'back26':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        client = types.InlineKeyboardButton('<<', callback_data='back25')
+        domen = types.InlineKeyboardButton('>>', callback_data='next25')
+
+        markup.add(client, domen)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После этого вводим команды \n sudo apt update\nsudo apt list --upgradable\nsudo apt dist-upgrade -y -o Dpkg::Options::=--force-confne',
+                              parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'next26':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        client = types.InlineKeyboardButton('<<', callback_data='back27')
+        domen = types.InlineKeyboardButton('>>', callback_data='next27')
+
+        markup.add(client, domen)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После этого вводим команду  sudo /opt/rbta/aldpro/client/bin/aldpro-client-installer --domain ald.company.lan --account admin --password AstraLinux_176 --host pc-1 --gui --force',
+                              parse_mode='HTML', reply_markup=markup)
+
+
+    elif callback.data == 'back27':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        client = types.InlineKeyboardButton('<<', callback_data='back26')
+        domen = types.InlineKeyboardButton('>>', callback_data='next26')
+
+        markup.add(client, domen)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После этого вводим sudo DEBIAN_FRONTEND=noninteractive apt-get install -y -q aldpro-client',
+                              parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'next27':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        client = types.InlineKeyboardButton('<<', callback_data='back28')
+        domen = types.InlineKeyboardButton('Главное меню', callback_data='next28')
+
+        markup.add(client, domen)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Если вы сделали все правильно, после ввода в поисковую строку введете ip домена вы сможете войти в графический интерфейс AldPRO',
+                              parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'back28':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        client = types.InlineKeyboardButton('<<', callback_data='back27')
+        domen = types.InlineKeyboardButton('>>', callback_data='next27')
+
+        markup.add(client, domen)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После этого вводим команду  sudo /opt/rbta/aldpro/client/bin/aldpro-client-installer --domain ald.company.lan --account admin --password AstraLinux_176 --host pc-1 --gui --force',
+                              parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'next28':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        client = types.InlineKeyboardButton('Настроить\nКлиент', callback_data='client')
+        domen = types.InlineKeyboardButton('Настроить\nДомен', callback_data='domen')
+
+        markup.add(client, domen)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Вы выбрали AldPRO курс, что дальше?', parse_mode='HTML', reply_markup=markup)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    elif callback.data == 'domen':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        vipnet = types.InlineKeyboardButton('<<', callback_data='back')
+        dm = types.InlineKeyboardButton('>>', callback_data='next')
+
+        markup.add(vipnet, dm)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='При установке машины выбираем ядро hardanen 5.15\nИ средства удаленного подключения SSH', parse_mode='HTML', reply_markup=markup)
+
+
+    elif callback.data == 'back':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        client = types.InlineKeyboardButton('Настроить\nКлиент', callback_data='client')
+        domen = types.InlineKeyboardButton('Настроить\nДомен', callback_data='domen')
+
+        markup.add(client, domen)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Вы выбрали AldPRO курс, что дальше?', parse_mode='HTML', reply_markup=markup)
+
+
+    elif callback.data == 'next':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        vipnet = types.InlineKeyboardButton('<<', callback_data='back1')
+        dm = types.InlineKeyboardButton('>>', callback_data='next1')
+
+        markup.add(vipnet, dm)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После завершения установки заходим в терминал и вводим команды:\nsudo systemctl stop NetworkManager\nsudo systemctl disable NetworkManager\nsudo systemctl mask NetworkManager\nsudo systemctl status NetworkManager', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back1':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        vipnet = types.InlineKeyboardButton('<<', callback_data='back')
+        dm = types.InlineKeyboardButton('>>', callback_data='next')
+
+        markup.add(vipnet, dm)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='При установке машины выбираем ядро hardanen 5.15\nИ средства удаленного подключения SSH',
+                              parse_mode='HTML', reply_markup=markup)
+
+
+    elif callback.data == 'next1':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        vipnet = types.InlineKeyboardButton('<<', callback_data='back2')
+        dm = types.InlineKeyboardButton('>>', callback_data='next2')
+
+        markup.add(vipnet, dm)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После чего вводим следующую команду : sudo nano /etc/network/interfaces и вводим следующие данные auto lo\niface lo inet loopback\nauto eth0\niface eth0 inet static\naddress 10.0.1.11\nnetmask 255.255.255.0\ngateway 10.0.1.1 ',
+                              parse_mode='HTML', reply_markup=markup)
+
+
+    elif callback.data == 'back2':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        vipnet = types.InlineKeyboardButton('<<', callback_data='back1')
+        dm = types.InlineKeyboardButton('>>', callback_data='next1')
+
+        markup.add(vipnet, dm)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После завершения установки заходим в терминал и вводим команды:\nsudo systemctl stop NetworkManager\nsudo systemctl disable NetworkManager\nsudo systemctl mask NetworkManager\nsudo systemctl status NetworkManager',
+                              parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next2':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        client = types.InlineKeyboardButton('<<', callback_data='back3')
+        domen = types.InlineKeyboardButton('>>', callback_data='next3')
+
+        markup.add(client, domen)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В файле sudo nano /etc/hosts меняем значение на \n127.0.0.1 localhost.localdomain localhost\n10.0.1.11 dc-1.ald.company.lan dc-', parse_mode='HTML', reply_markup=markup)
+
+
+    elif callback.data == 'back3':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        vipnet = types.InlineKeyboardButton('<<', callback_data='back2')
+        dm = types.InlineKeyboardButton('>>', callback_data='next2')
+
+        markup.add(vipnet, dm)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После чего вводим следующую команду : sudo nano /etc/network/interfaces и вводим следующие данные auto lo\niface lo inet loopback\nauto eth0\niface eth0 inet static\naddress 10.0.1.11\nnetmask 255.255.255.0\ngateway 10.0.1.1 ',
+                              parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'next3':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        vipnet = types.InlineKeyboardButton('<<', callback_data='back4')
+        dm = types.InlineKeyboardButton('>>', callback_data='next4')
+
+        markup.add(vipnet, dm)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В файл sudo nano /etc/apt/sources.list вставляем следующие репозитории \n1. deb http://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.6/repository-main 1.7_,→x86-64 main non-free contrib\n2. deb http://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.6/repository-update 1.→7_x86-64 main contrib non-free\n3. deb http://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.6/repository-base 1.7_→x86-64 main non-free contrib',
+                              parse_mode='HTML', reply_markup=markup)
+
+
+    elif callback.data == 'back4':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        client = types.InlineKeyboardButton('<<', callback_data='back3')
+        domen = types.InlineKeyboardButton('>>', callback_data='next3')
+
+        markup.add(client, domen)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В файле sudo nano /etc/hosts меняем значение на \n127.0.0.1 localhost.localdomain localhost\n10.0.1.11 dc-1.ald.company.lan dc-',
+                              parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'next4':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        vipnet = types.InlineKeyboardButton('<<', callback_data='back5')
+        dm = types.InlineKeyboardButton('>>', callback_data='next5')
+
+        markup.add(vipnet, dm)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В файл sudo nano /etc/apt/sources.list.d/aldpro.list  копируем рн=епозиторий\n deb https://dl.astralinux.ru/aldpro/frozen/01/2.4.0/ 1.7_x86-64 main base',
+                              parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back5':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        vipnet = types.InlineKeyboardButton('<<', callback_data='back4')
+        dm = types.InlineKeyboardButton('>>', callback_data='next4')
+
+        markup.add(vipnet, dm)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В файл sudo nano /etc/apt/sources.list вставляем следующие репозитории \n1. deb http://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.6/repository-main 1.7_,→x86-64 main non-free contrib\n2. deb http://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.6/repository-update 1.→7_x86-64 main contrib non-free\n3. deb http://dl.astralinux.ru/astra/frozen/1.7_x86-64/1.7.6/repository-base 1.7_→x86-64 main non-free contrib',
+                              parse_mode='HTML', reply_markup=markup)
+
+
+    elif callback.data == 'next5':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        vipnet = types.InlineKeyboardButton('<<', callback_data='back6')
+        dm = types.InlineKeyboardButton('>>', callback_data='next6')
+
+        markup.add(vipnet, dm)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Прописываем команду sudo apt update и перезагружаем компьютер',
+                              parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'back6':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        vipnet = types.InlineKeyboardButton('<<', callback_data='back5')
+        dm = types.InlineKeyboardButton('>>', callback_data='next5')
+
+        markup.add(vipnet, dm)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В файл sudo nano /etc/apt/sources.list.d/aldpro.list  копируем рн=епозиторий\n deb https://dl.astralinux.ru/aldpro/frozen/01/2.4.0/ 1.7_x86-64 main base',
+                              parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next6':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        vipnet = types.InlineKeyboardButton('<<', callback_data='back7')
+        dm = types.InlineKeyboardButton('>>', callback_data='next7')
+
+        markup.add(vipnet, dm)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Заходим в терминал и прописываем команды \nsudo apt update\nsudo apt list --upgradable\nsudo apt dist-upgrade -y -o Dpkg::Options::=--force-confnew',
+                              parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'back7':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        vipnet = types.InlineKeyboardButton('<<', callback_data='back6')
+        dm = types.InlineKeyboardButton('>>', callback_data='next6')
+
+        markup.add(vipnet, dm)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Прописываем команду sudo apt update и перезагружаем компьютер',
+                              parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'next7':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        vipnet = types.InlineKeyboardButton('<<', callback_data='back8')
+        dm = types.InlineKeyboardButton('>>', callback_data='next8')
+
+        markup.add(vipnet, dm)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После обновления прописываем команду \nsudo DEBIAN_FRONTEND=noninteractive apt-get install -y -q aldpro-mp\n и ждем установки',
+                              parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'back8':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        vipnet = types.InlineKeyboardButton('<<', callback_data='back7')
+        dm = types.InlineKeyboardButton('>>', callback_data='next7')
+
+        markup.add(vipnet, dm)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Заходим в терминал и прописываем команды \nsudo apt update\nsudo apt list --upgradable\nsudo apt dist-upgrade -y -o Dpkg::Options::=--force-confnew',
+                              parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'next8':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        vipnet = types.InlineKeyboardButton('<<', callback_data='back9')
+        dm = types.InlineKeyboardButton('>>', callback_data='next9')
+
+        markup.add(vipnet, dm)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После завершения установки прописываем команду sudo aldpro-server-install -d ald.company.lan -n dc-1 -p AstraLinux_176 --ip 10.0.1.11 --no-reboot',
+                              parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'back9':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        vipnet = types.InlineKeyboardButton('<<', callback_data='back8')
+        dm = types.InlineKeyboardButton('>>', callback_data='next8')
+
+        markup.add(vipnet, dm)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После обновления прописываем команду \nsudo DEBIAN_FRONTEND=noninteractive apt-get install -y -q aldpro-mp\n и ждем установки',
+                              parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'next9':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        vipnet = types.InlineKeyboardButton('<<', callback_data='back10')
+        dm = types.InlineKeyboardButton('Главное меню', callback_data='gm')
+
+        markup.add(vipnet, dm)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После завершения установки можно приступать к настройке Клиента',
+                              parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'back10':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        vipnet = types.InlineKeyboardButton('<<', callback_data='back9')
+        dm = types.InlineKeyboardButton('>>', callback_data='next9')
+
+        markup.add(vipnet, dm)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После завершения установки прописываем команду sudo aldpro-server-install -d ald.company.lan -n dc-1 -p AstraLinux_176 --ip 10.0.1.11 --no-reboot',
+                              parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'gm':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        client = types.InlineKeyboardButton('Настроить\nКлиент', callback_data='client')
+        domen = types.InlineKeyboardButton('Настроить\nДомен', callback_data='domen')
+
+        markup.add(client, domen)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Вы выбрали AldPRO курс, что дальше?', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'VipNet':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        backvp2 = types.InlineKeyboardButton('<<', callback_data='backvp2')
+        nextvp1 = types.InlineKeyboardButton('>>', callback_data='nextvp1')
+
+
+        markup.add(backvp2,nextvp1)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Вы выбрали ViPNet, что дальше?', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'backvp2':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        vipnet = types.InlineKeyboardButton('Настроить\nVipNet', callback_data='VipNet')
+        dm = types.InlineKeyboardButton('Настроить\nDevice Monitor', callback_data='DM')
+        aldpro = types.InlineKeyboardButton('Настроить\nAldPRO', callback_data='aldpro')
+        markupback1 = types.InlineKeyboardButton('Назад', callback_data='back1')
+
+        markup.add(vipnet, dm, aldpro, markupback1)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Вы вернулись в главное меню', parse_mode='HTML', reply_markup=markup)
+
+
+    elif callback.data == 'DM':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        astra = types.InlineKeyboardButton('Настроить\nAstra(IWTM)', callback_data='iwtm')
+        windowsdm= types.InlineKeyboardButton('Настроить\nWindows(DM)', callback_data='dm')
+        windowsagent = types.InlineKeyboardButton('Настроить\nWindows(Agent)', callback_data='agent')
+        markupback2 = types.InlineKeyboardButton('Назад', callback_data='back2')
+
+        markup.add(astra, windowsdm, windowsagent, markupback2)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                                  text='Вы выбрали Device Monitor, что дальше?', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data =='back2':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        vipnet = types.InlineKeyboardButton('Настроить\nVipNet', callback_data='VipNet')
+        dm = types.InlineKeyboardButton('Настроить\nDevice Monitor', callback_data='DM')
+        markupback1 = types.InlineKeyboardButton('Назад', callback_data='back1')
+
+        markup.add(vipnet,dm,markupback1)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Вы вернулись обратно, что дальше?', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'agent':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back01 = types.InlineKeyboardButton('<<', callback_data='back01')
+        next01 = types.InlineKeyboardButton('>>', callback_data='next01')
+
+        markup.add(back01, next01)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='', parse_mode='HTML', reply_markup=markup)
+
+
+    elif callback.data == 'dm':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back01 = types.InlineKeyboardButton('<<', callback_data='back01')
+        next01 = types.InlineKeyboardButton('>>', callback_data='next01')
+
+        markup.add(back01, next01)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Заходим в проводник', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'back01':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        astra = types.InlineKeyboardButton('Настроить\nAstra(IWTM)', callback_data='iwtm')
+        windowsdm = types.InlineKeyboardButton('Настроить\nWindows(DM)', callback_data='dm')
+        windowsagent = types.InlineKeyboardButton('Настроить\nWindows(Agent)', callback_data='agent')
+        markupback2 = types.InlineKeyboardButton('Назад', callback_data='back2')
+
+        markup.add(astra, windowsdm, windowsagent, markupback2)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Вы вернулись обратно', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next01':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back02 = types.InlineKeyboardButton('<<', callback_data='back02')
+        next02 = types.InlineKeyboardButton('>>', callback_data='next02')
+
+        markup.add(back02, next02)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Нажимаем ПКМ по "Сеть" и выбираем свойства', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'back02':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back01 = types.InlineKeyboardButton('<<', callback_data='back01')
+        next01 = types.InlineKeyboardButton('>>', callback_data='next01')
+
+        markup.add(back01, next01)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Заходим в проводник', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'next02':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back03 = types.InlineKeyboardButton('<<', callback_data='back03')
+        next03 = types.InlineKeyboardButton('>>', callback_data='next03')
+
+        markup.add(back03, next03)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Выбираем "Изменение параметров адаптера"', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'back03':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back02 = types.InlineKeyboardButton('<<', callback_data='back02')
+        next02 = types.InlineKeyboardButton('>>', callback_data='next02')
+
+        markup.add(back02, next02)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Нажимаем ПКМ по "Сеть" и выбираем свойства', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'next03':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back04 = types.InlineKeyboardButton('<<', callback_data='back04')
+        next04 = types.InlineKeyboardButton('>>', callback_data='next04')
+
+        markup.add(back04, next04)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Нажимаем ПКМ по "Ethernet" и выбираем свойства', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'back04':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back03 = types.InlineKeyboardButton('<<', callback_data='back03')
+        next03 = types.InlineKeyboardButton('>>', callback_data='next03')
+
+        markup.add(back03, next03)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Выбираем "Изменение параметров адаптера"', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'next04':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back05 = types.InlineKeyboardButton('<<', callback_data='back05')
+        next05 = types.InlineKeyboardButton('>>', callback_data='next05')
+
+        markup.add(back05, next05)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Выбираем "IP версии 4" и нажимаем свойства', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'back05':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back04 = types.InlineKeyboardButton('<<', callback_data='back04')
+        next04 = types.InlineKeyboardButton('>>', callback_data='next04')
+
+        markup.add(back04, next04)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Нажимаем ПКМ по "Ethernet" и выбираем свойства', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'next05':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back06 = types.InlineKeyboardButton('<<', callback_data='back06')
+        next06 = types.InlineKeyboardButton('>>', callback_data='next06')
+
+        markup.add(back06, next06)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Выбираем "Использовать следующий IP адресс"', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'back06':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back05 = types.InlineKeyboardButton('<<', callback_data='back05')
+        next05 = types.InlineKeyboardButton('>>', callback_data='next05')
+
+        markup.add(back05, next05)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Выбираем "IP версии 4" и нажимаем свойства', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'next06':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back07 = types.InlineKeyboardButton('<<', callback_data='back07')
+        next07 = types.InlineKeyboardButton('>>', callback_data='next07')
+
+        markup.add(back07, next07)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "IP-адресс" вводим 192.168.88.13', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'back07':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back06 = types.InlineKeyboardButton('<<', callback_data='back06')
+        next06 = types.InlineKeyboardButton('>>', callback_data='next06')
+
+        markup.add(back06, next06)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Выбираем "Использовать следующий IP адресс"', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'next07':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back08 = types.InlineKeyboardButton('<<', callback_data='back08')
+        next08 = types.InlineKeyboardButton('>>', callback_data='next08')
+
+        markup.add(back08, next08)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "Маска подсети" вводим 255.255.255.0', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'back08':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back07 = types.InlineKeyboardButton('<<', callback_data='back07')
+        next07 = types.InlineKeyboardButton('>>', callback_data='next07')
+
+        markup.add(back07, next07)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "IP-адресс" вводим 192.168.88.13', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'next08':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back09 = types.InlineKeyboardButton('<<', callback_data='back09')
+        next09 = types.InlineKeyboardButton('>>', callback_data='next09')
+
+        markup.add(back09, next09)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "Основной шлюз" вводим 192.168.0.1', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'back09':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back08 = types.InlineKeyboardButton('<<', callback_data='back08')
+        next08 = types.InlineKeyboardButton('>>', callback_data='next08')
+
+        markup.add(back08, next08)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "Маска подсети" вводим 255.255.255.0', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'next09':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back010 = types.InlineKeyboardButton('<<', callback_data='back010')
+        next010 = types.InlineKeyboardButton('>>', callback_data='next010')
+
+        markup.add(back010, next010)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "Предпочтительный DNS-сервер" вводим 192.168.88.3', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'back010':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back09 = types.InlineKeyboardButton('<<', callback_data='back09')
+        next09 = types.InlineKeyboardButton('>>', callback_data='next09')
+
+        markup.add(back09, next09)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "Основной шлюз" вводим 192.168.0.1', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'next010':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back011 = types.InlineKeyboardButton('<<', callback_data='back011')
+        next011 = types.InlineKeyboardButton('>>', callback_data='next011')
+
+        markup.add(back011, next011)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Нажимаем "OK" и перезагружаем сеть', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'back011':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back010 = types.InlineKeyboardButton('<<', callback_data='back010')
+        next010 = types.InlineKeyboardButton('>>', callback_data='next010')
+
+        markup.add(back010, next010)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "Предпочтительный DNS-сервер" вводим 192.168.88.3', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next011':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back012 = types.InlineKeyboardButton('<<', callback_data='back012')
+        next012 = types.InlineKeyboardButton('>>', callback_data='next012')
+
+        markup.add(back012, next012)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Нажимаем ПКМ по "Этот компьютер" и выбираем свойства', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back012':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back011 = types.InlineKeyboardButton('<<', callback_data='back011')
+        next011 = types.InlineKeyboardButton('>>', callback_data='next011')
+
+        markup.add(back011, next011)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Нажимаем "OK" и перезагружаем сеть', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'next012':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back013 = types.InlineKeyboardButton('<<', callback_data='back013')
+        next013 = types.InlineKeyboardButton('>>', callback_data='next013')
+
+        markup.add(back013, next013)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Выбираем вкладку "Имя компьютера"', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'back013':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back012 = types.InlineKeyboardButton('<<', callback_data='back012')
+        next012 = types.InlineKeyboardButton('>>', callback_data='next012')
+
+        markup.add(back012, next012)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Нажимаем ПКМ по "Этот компьютер" и выбираем свойства', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next013':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back014 = types.InlineKeyboardButton('<<', callback_data='back014')
+        next014 = types.InlineKeyboardButton('>>', callback_data='next014')
+
+        markup.add(back014, next014)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "домена" вводим demo.lab и нажимаем ОК', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back014':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back013 = types.InlineKeyboardButton('<<', callback_data='back013')
+        next013 = types.InlineKeyboardButton('>>', callback_data='next013')
+
+        markup.add(back013, next013)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Выбираем вкладку "Имя компьютера"', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'next014':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back015 = types.InlineKeyboardButton('<<', callback_data='back015')
+        next015 = types.InlineKeyboardButton('>>', callback_data='next015')
+
+        markup.add(back015, next015)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "Имя Администратора" вводим Administrator', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'back015':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back014 = types.InlineKeyboardButton('<<', callback_data='back014')
+        next014 = types.InlineKeyboardButton('>>', callback_data='next014')
+
+        markup.add(back014, next014)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "домена" вводим demo.lab и нажимаем ОК', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next015':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back016 = types.InlineKeyboardButton('<<', callback_data='back016')
+        next016 = types.InlineKeyboardButton('>>', callback_data='next016')
+
+        markup.add(back016, next016)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "Пароль вводим" вводим xxXX1234 и нажимаем ОК', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back016':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back015 = types.InlineKeyboardButton('<<', callback_data='back015')
+        next015 = types.InlineKeyboardButton('>>', callback_data='next015')
+
+        markup.add(back015, next015)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "Имя Администратора" вводим Administrator', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next016':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back017 = types.InlineKeyboardButton('<<', callback_data='back017')
+        next017 = types.InlineKeyboardButton('>>', callback_data='next017')
+
+        markup.add(back017, next017)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Если вы сделали все правильно у вас должно появиться:', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back017':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back016 = types.InlineKeyboardButton('<<', callback_data='back016')
+        next016 = types.InlineKeyboardButton('>>', callback_data='next016')
+
+        markup.add(back016, next016)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "Пароль вводим" вводим xxXX1234 и нажимаем ОК', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next017':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back018 = types.InlineKeyboardButton('<<', callback_data='back018')
+        next018 = types.InlineKeyboardButton('>>', callback_data='next018')
+
+        markup.add(back018, next018)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Перезагружаем компьютер', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back018':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back017 = types.InlineKeyboardButton('<<', callback_data='back017')
+        next017 = types.InlineKeyboardButton('>>', callback_data='next017')
+
+        markup.add(back017, next017)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Если вы сделали все правильно у вас должно появиться:', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next018':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back019 = types.InlineKeyboardButton('<<', callback_data='back019')
+        next019 = types.InlineKeyboardButton('>>', callback_data='next019')
+
+        markup.add(back019, next019)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Из папки с образами устанавливаем Chrome', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back019':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back018 = types.InlineKeyboardButton('<<', callback_data='back018')
+        next018 = types.InlineKeyboardButton('>>', callback_data='next018')
+
+        markup.add(back018, next018)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Перезагружаем компьютер', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next019':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back020 = types.InlineKeyboardButton('<<', callback_data='back020')
+        next020 = types.InlineKeyboardButton('>>', callback_data='next020')
+
+        markup.add(back020, next020)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После чего запускаем установщик postgresql', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back020':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back019 = types.InlineKeyboardButton('<<', callback_data='back019')
+        next019 = types.InlineKeyboardButton('>>', callback_data='next019')
+
+        markup.add(back019, next019)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Из папки с образами устанавливаем Chrome', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next020':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back021 = types.InlineKeyboardButton('<<', callback_data='back021')
+        next021 = types.InlineKeyboardButton('>>', callback_data='next021')
+
+        markup.add(back021, next021)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Убираем флажок к пункта "Stack Builder"', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back021':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back020 = types.InlineKeyboardButton('<<', callback_data='back020')
+        next020 = types.InlineKeyboardButton('>>', callback_data='next020')
+
+        markup.add(back020, next020)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После чего запускаем установщик postgresql', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next021':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back022 = types.InlineKeyboardButton('<<', callback_data='back022')
+        next022 = types.InlineKeyboardButton('>>', callback_data='next022')
+
+        markup.add(back022, next022)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "Password" вводим xxXX1234', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back022':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back021 = types.InlineKeyboardButton('<<', callback_data='back021')
+        next021 = types.InlineKeyboardButton('>>', callback_data='next021')
+
+        markup.add(back021, next021)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Убираем флажок к пункта "Stack Builder"', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next022':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back023 = types.InlineKeyboardButton('<<', callback_data='back023')
+        next023 = types.InlineKeyboardButton('>>', callback_data='next023')
+
+        markup.add(back023, next023)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Далее все оставляем без и изменений и завершаем установку', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back023':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back022 = types.InlineKeyboardButton('<<', callback_data='back022')
+        next022 = types.InlineKeyboardButton('>>', callback_data='next022')
+
+        markup.add(back022, next022)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "Password" вводим xxXX1234', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next023':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back024 = types.InlineKeyboardButton('<<', callback_data='back024')
+        next024 = types.InlineKeyboardButton('>>', callback_data='next024')
+
+        markup.add(back024, next024)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После чего запускаем установщик InfoWatch Device Monitor', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back024':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back023 = types.InlineKeyboardButton('<<', callback_data='back023')
+        next023 = types.InlineKeyboardButton('>>', callback_data='next023')
+
+        markup.add(back023, next023)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Далее все оставляем без и изменений и завершаем установку', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next024':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back025 = types.InlineKeyboardButton('<<', callback_data='back025')
+        next025 = types.InlineKeyboardButton('>>', callback_data='next025')
+
+        markup.add(back025, next025)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Убираем флажок с параметра "Оупбликовать серврер в Active Directiry"', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back025':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back024 = types.InlineKeyboardButton('<<', callback_data='back024')
+        next024 = types.InlineKeyboardButton('>>', callback_data='next024')
+
+        markup.add(back024, next024)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После чего запускаем установщик InfoWatch Device Monitor', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next025':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back026 = types.InlineKeyboardButton('<<', callback_data='back026')
+        next026 = types.InlineKeyboardButton('>>', callback_data='next026')
+
+        markup.add(back026, next026)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Выбираем параметр "PostgreSQL"', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back026':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back025 = types.InlineKeyboardButton('<<', callback_data='back025')
+        next025 = types.InlineKeyboardButton('>>', callback_data='next025')
+
+        markup.add(back025, next025)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Убираем флажок с параметра "Оупбликовать серврер в Active Directiry"', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next026':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back027 = types.InlineKeyboardButton('<<', callback_data='back027')
+        next027 = types.InlineKeyboardButton('>>', callback_data='next027')
+
+        markup.add(back027, next027)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "Сервер БД: вводим localhost', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back027':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back026 = types.InlineKeyboardButton('<<', callback_data='back026')
+        next026 = types.InlineKeyboardButton('>>', callback_data='next026')
+
+        markup.add(back026, next026)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Выбираем параметр "PostgreSQL"', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next027':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back028 = types.InlineKeyboardButton('<<', callback_data='back028')
+        next028 = types.InlineKeyboardButton('>>', callback_data='next028')
+
+        markup.add(back028, next028)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "Имя быза данных" вводим IWTM', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back028':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back027 = types.InlineKeyboardButton('<<', callback_data='back027')
+        next027 = types.InlineKeyboardButton('>>', callback_data='next027')
+
+        markup.add(back027, next027)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "Сервер БД: вводим localhost', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next028':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back029 = types.InlineKeyboardButton('<<', callback_data='back029')
+        next029 = types.InlineKeyboardButton('>>', callback_data='next029')
+
+        markup.add(back029, next029)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "Имя пользтвателя" вводим postgres', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back029':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back028 = types.InlineKeyboardButton('<<', callback_data='back028')
+        next028 = types.InlineKeyboardButton('>>', callback_data='next028')
+
+        markup.add(back028, next028)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "Имя быза данных" вводим IWTM', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next029':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back030 = types.InlineKeyboardButton('<<', callback_data='back030')
+        next030 = types.InlineKeyboardButton('>>', callback_data='next030')
+
+        markup.add(back030, next030)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "Пароль" вводим xxXX1234', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back030':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back029 = types.InlineKeyboardButton('<<', callback_data='back029')
+        next029 = types.InlineKeyboardButton('>>', callback_data='next029')
+
+        markup.add(back029, next029)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "Имя пользтвателя" вводим postgres', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next030':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back031 = types.InlineKeyboardButton('<<', callback_data='back031')
+        next031 = types.InlineKeyboardButton('>>', callback_data='next031')
+
+        markup.add(back031, next031)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Выбираем параметр "Создать новый ключ" и сохраняем его на рабочий стол', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back031':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back030 = types.InlineKeyboardButton('<<', callback_data='back030')
+        next030 = types.InlineKeyboardButton('>>', callback_data='next030')
+
+        markup.add(back030, next030)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "Пароль" вводим xxXX1234', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next031':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back032 = types.InlineKeyboardButton('<<', callback_data='back032')
+        next032 = types.InlineKeyboardButton('>>', callback_data='next032')
+
+        markup.add(back032, next032)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Выбираем параметр NetworkService', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back032':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back031 = types.InlineKeyboardButton('<<', callback_data='back031')
+        next031 = types.InlineKeyboardButton('>>', callback_data='next031')
+
+        markup.add(back031, next031)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Выбираем параметр "Создать новый ключ" и сохраняем его на рабочий стол', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next032':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back033 = types.InlineKeyboardButton('<<', callback_data='back033')
+        next033 = types.InlineKeyboardButton('>>', callback_data='next033')
+
+        markup.add(back033, next033)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "Имя пользователя" вводим officer', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back033':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back032 = types.InlineKeyboardButton('<<', callback_data='back032')
+        next032 = types.InlineKeyboardButton('>>', callback_data='next032')
+
+        markup.add(back032, next032)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Выбираем параметр NetworkService', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next033':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back034 = types.InlineKeyboardButton('<<', callback_data='back034')
+        next034 = types.InlineKeyboardButton('>>', callback_data='next034')
+
+        markup.add(back034, next034)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "Пароль вводим" xxXX1234', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back034':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back033 = types.InlineKeyboardButton('<<', callback_data='back033')
+        next033 = types.InlineKeyboardButton('>>', callback_data='next033')
+
+        markup.add(back033, next033)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "Имя пользователя" вводим officer', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next034':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back035 = types.InlineKeyboardButton('<<', callback_data='back035')
+        next035 = types.InlineKeyboardButton('>>', callback_data='next035')
+
+        markup.add(back035, next035)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "Адрес сервера TM" вводим 192.168.88.10', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back035':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back034 = types.InlineKeyboardButton('<<', callback_data='back034')
+        next034 = types.InlineKeyboardButton('>>', callback_data='next034')
+
+        markup.add(back034, next034)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "Пароль вводим" xxXX1234', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next035':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back036 = types.InlineKeyboardButton('<<', callback_data='back036')
+        next036 = types.InlineKeyboardButton('>>', callback_data='next036')
+
+        markup.add(back036, next036)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Заходим в Chrome и вводим 192.168.88.10\nВыбираем вкладку Лицензии и загружаем её', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back036':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back035 = types.InlineKeyboardButton('<<', callback_data='back035')
+        next035 = types.InlineKeyboardButton('>>', callback_data='next035')
+
+        markup.add(back035, next035)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "Адрес сервера TM" вводим 192.168.88.10', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next036':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back037 = types.InlineKeyboardButton('<<', callback_data='back037')
+        next037 = types.InlineKeyboardButton('>>', callback_data='next037')
+
+        markup.add(back037, next037)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Заходим в Device Monitor и копируем токен', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back037':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back036 = types.InlineKeyboardButton('<<', callback_data='back036')
+        next036 = types.InlineKeyboardButton('>>', callback_data='next036')
+
+        markup.add(back036, next036)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Заходим в Chrome и вводим 192.168.88.10\nВыбираем вкладку Лицензии и загружаем её', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next037':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back038 = types.InlineKeyboardButton('<<', callback_data='back038')
+        next038 = types.InlineKeyboardButton('>>', callback_data='next038')
+
+        markup.add(back038, next038)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Вставляем токен в поле "Токен авторизации"', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back038':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back037 = types.InlineKeyboardButton('<<', callback_data='back037')
+        next037 = types.InlineKeyboardButton('>>', callback_data='next037')
+
+        markup.add(back037, next037)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Заходим в Device Monitor и копируем токен', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next038':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back039 = types.InlineKeyboardButton('<<', callback_data='back039')
+        next039 = types.InlineKeyboardButton('>>', callback_data='next039')
+
+        markup.add(back039, next039)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Ставим флажок в параметре Не отправлять события в Платформу', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back039':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back038 = types.InlineKeyboardButton('<<', callback_data='back038')
+        next038 = types.InlineKeyboardButton('>>', callback_data='next038')
+
+        markup.add(back038, next038)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Вставляем токен в поле "Токен авторизации"', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next039':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back040 = types.InlineKeyboardButton('<<', callback_data='back040')
+        next040 = types.InlineKeyboardButton('>>', callback_data='next040')
+
+        markup.add(back040, next040)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После чего завершаем настройку', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back040':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back039 = types.InlineKeyboardButton('<<', callback_data='back039')
+        next039 = types.InlineKeyboardButton('>>', callback_data='next039')
+
+        markup.add(back039, next039)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Ставим флажок в параметре Не отправлять события в Платформу', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next040':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back041 = types.InlineKeyboardButton('<<', callback_data='back041')
+        next041 = types.InlineKeyboardButton('>>', callback_data='next041')
+
+        markup.add(back041, next041)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После завершения установки у вас появится Консоль управления, запускаем ее', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back041':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back040 = types.InlineKeyboardButton('<<', callback_data='back040')
+        next040 = types.InlineKeyboardButton('>>', callback_data='next040')
+
+        markup.add(back040, next040)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После чего завершаем настройку', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next041':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back042 = types.InlineKeyboardButton('<<', callback_data='back042')
+        next042 = types.InlineKeyboardButton('>>', callback_data='next042')
+
+        markup.add(back042, next042)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле Адресс сервера вводим localhost\nВ поле Логин вводим officer\nВ поле пароль вводим xxXX1234', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back042':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back041 = types.InlineKeyboardButton('<<', callback_data='back041')
+        next041 = types.InlineKeyboardButton('>>', callback_data='next041')
+
+        markup.add(back041, next041)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После завершения установки у вас появится Консоль управления, запускаем ее', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next042':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back043 = types.InlineKeyboardButton('<<', callback_data='back043')
+        next043 = types.InlineKeyboardButton('>>', callback_data='next043')
+
+        markup.add(back043, next043)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Выибраем Инструменты', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back043':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back042 = types.InlineKeyboardButton('<<', callback_data='back042')
+        next042 = types.InlineKeyboardButton('>>', callback_data='next042')
+
+        markup.add(back042, next042)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле Адресс сервера вводим localhost\nВ поле Логин вводим officer\nВ поле пароль вводим xxXX1234', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next043':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back044 = types.InlineKeyboardButton('<<', callback_data='back044')
+        next044 = types.InlineKeyboardButton('>>', callback_data='next044')
+
+        markup.add(back044, next044)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Выбираем Интеграция со службами каталогов', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back044':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back043 = types.InlineKeyboardButton('<<', callback_data='back043')
+        next043 = types.InlineKeyboardButton('>>', callback_data='next043')
+
+        markup.add(back043, next043)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Выибраем Инструменты', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next044':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back045 = types.InlineKeyboardButton('<<', callback_data='back045')
+        next045 = types.InlineKeyboardButton('>>', callback_data='next045')
+
+        markup.add(back045, next045)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Нажимаем на + \nВ поле Адрес вводим demo.lab\nВ поле Тип авторизации выбираем'
+                                   'По логину и паролю\nВ поле Логин вводим DEMO\Administrator\nВ поле пароль вводим xxXX1234', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back045':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back044 = types.InlineKeyboardButton('<<', callback_data='back044')
+        next044 = types.InlineKeyboardButton('>>', callback_data='next044')
+
+        markup.add(back044, next044)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Выбираем Интеграция со службами каталогов', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next045':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back046 = types.InlineKeyboardButton('<<', callback_data='back046')
+        next046 = types.InlineKeyboardButton('>>', callback_data='next046')
+
+        markup.add(back046, next046)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Нажмаем +\n Выбиарем компютеры\nВводим demo', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back046':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back045 = types.InlineKeyboardButton('<<', callback_data='back045')
+        next045 = types.InlineKeyboardButton('>>', callback_data='next045')
+
+        markup.add(back045, next045)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Нажимаем на + \nВ поле Адрес вводим demo.lab\nВ поле Тип авторизации выбираем'
+                                   'По логину и паролю\nВ поле Логин вводим DEMO\Administrator\nВ поле пароль вводим xxXX1234', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next046':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back047 = types.InlineKeyboardButton('<<', callback_data='back047')
+        next047 = types.InlineKeyboardButton('>>', callback_data='next047')
+
+        markup.add(back047, next047)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Нажмаем +\n Выбиарем Пользователи\nВводим demo\nВыбираем Политика теневого копирования', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back047':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back046 = types.InlineKeyboardButton('<<', callback_data='back046')
+        next046 = types.InlineKeyboardButton('>>', callback_data='next046')
+
+        markup.add(back046, next046)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Нажмаем +\n Выбиарем компютеры\nВводим demo', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next047':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back048 = types.InlineKeyboardButton('<<', callback_data='back048')
+        next048 = types.InlineKeyboardButton('Завершить настройку', callback_data='next048')
+
+        markup.add(back048, next048)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Нажмаем выполнить синхронизацию', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back048':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back047 = types.InlineKeyboardButton('<<', callback_data='back047')
+        next047 = types.InlineKeyboardButton('>>', callback_data='next047')
+
+        markup.add(back047, next047)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Нажмаем +\n Выбиарем Пользователи\nВводим demo\nВыбираем Политика теневого копирования', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next048':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        astra = types.InlineKeyboardButton('Настроить\nAstra(IWTM)', callback_data='iwtm')
+        windowsdm= types.InlineKeyboardButton('Настроить\nWindows(DM)', callback_data='dm')
+        windowsagent = types.InlineKeyboardButton('Настроить\nWindows(Agent)', callback_data='agent')
+        markupback2 = types.InlineKeyboardButton('Назад', callback_data='back2')
+
+        markup.add(astra, windowsdm, windowsagent, markupback2)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                                  text='Вы выбрали Device Monitor, что дальше?', parse_mode='HTML', reply_markup=markup)
+
+
+    elif callback.data == 'iwtm':
+
+         markup = types.InlineKeyboardMarkup(row_width=5)
+
+         back1 = types.InlineKeyboardButton('<<', callback_data = 'back11')
+         next1 = types.InlineKeyboardButton('>>', callback_data='next11')
+
+         markup.add(back1,next1)
+
+         bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                               text='Нажимем ПКМ по параметрам сети', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'next11':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back2 = types.InlineKeyboardButton('<<', callback_data='back12')
+        next2 = types.InlineKeyboardButton('>>', callback_data='next12')
+
+        markup.add(back2,next2)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Выбираем IPv4', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'back11':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        astra = types.InlineKeyboardButton('Настроить\nAstra(IWTM)', callback_data='iwtm')
+        windowsdm = types.InlineKeyboardButton('Настроить\nWindows(DM)', callback_data='dm')
+        windowsagent = types.InlineKeyboardButton('Настроить\nWindows(Agent)', callback_data='agent')
+        markupback2 = types.InlineKeyboardButton('Назад', callback_data='back2')
+
+        markup.add(astra, windowsdm, windowsagent, markupback2)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Вы вернулись обратно', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'back12':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back1 = types.InlineKeyboardButton('<<', callback_data='back11')
+        next1 = types.InlineKeyboardButton('>>', callback_data='next11')
+
+        markup.add(back1, next1)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Нажимем ПКМ по параметрам сети', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'next12':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back3 = types.InlineKeyboardButton('<<', callback_data='back13')
+        next3 = types.InlineKeyboardButton('>>', callback_data='next13')
+
+        markup.add(back3, next3)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В параметре "Method" выбираем: "Вручную"', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'next13':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back4 = types.InlineKeyboardButton('<<', callback_data='back14')
+        next4 = types.InlineKeyboardButton('>>', callback_data='next14')
+
+        markup.add(back4, next4)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "Адресс" вводим 192.168.88.3', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'back13':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back2 = types.InlineKeyboardButton('<<', callback_data='back12')
+        next2 = types.InlineKeyboardButton('>>', callback_data='next12')
+
+        markup.add(back2, next2)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Выбираем IPv4', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'next14':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back5 = types.InlineKeyboardButton('<<', callback_data='back15')
+        next5 = types.InlineKeyboardButton('>>', callback_data='next15')
+
+        markup.add(back5, next5)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "Маска сети" вводим 255.255.255.0', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'back14':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back3 = types.InlineKeyboardButton('<<', callback_data='back13')
+        next3 = types.InlineKeyboardButton('>>', callback_data='next13')
+
+        markup.add(back3, next3)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В параметре "Method" выбираем: "Вручную"', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'back15':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back4 = types.InlineKeyboardButton('<<', callback_data='back14')
+        next4 = types.InlineKeyboardButton('>>', callback_data='next14')
+
+        markup.add(back4, next4)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "Адресс" вводим 192.168.88.3', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'next15':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back6 = types.InlineKeyboardButton('<<', callback_data='back16')
+        next6 = types.InlineKeyboardButton('>>', callback_data='next16')
+
+        markup.add(back6, next6)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "Шлюз" вводим 192.168.88.1', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'back16':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back5 = types.InlineKeyboardButton('<<', callback_data='back15')
+        next5 = types.InlineKeyboardButton('>>', callback_data='next15')
+
+        markup.add(back5, next5)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "Маска сети" вводим 255.255.255.0', parse_mode='HTML', reply_markup=markup)
+
+
+    elif callback.data == 'next16':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back7 = types.InlineKeyboardButton('<<', callback_data='back17')
+        next7 = types.InlineKeyboardButton('>>', callback_data='next17')
+
+        markup.add(back7, next7)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "DNS" вводим 192.168.88.3', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'back17':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back6 = types.InlineKeyboardButton('<<', callback_data='back16')
+        next6 = types.InlineKeyboardButton('>>', callback_data='next16')
+
+        markup.add(back6, next6)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "Шлюз" вводим 192.168.88.1', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'next17':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back8 = types.InlineKeyboardButton('<<', callback_data='back18')
+        next8 = types.InlineKeyboardButton('>>', callback_data='next18')
+
+        markup.add(back8, next8)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "domen" вводим demo.lab', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'back18':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back7 = types.InlineKeyboardButton('<<', callback_data='back17')
+        next7 = types.InlineKeyboardButton('>>', callback_data='next17')
+
+        markup.add(back7, next7)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "DNS" вводим 192.168.88.3', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'next18':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back9= types.InlineKeyboardButton('<<', callback_data='back19')
+        next9 = types.InlineKeyboardButton('>>', callback_data='next19')
+
+        markup.add(back9, next9)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Нажимаем сохранить и перезагружаем сеть', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'back19':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back8 = types.InlineKeyboardButton('<<', callback_data='back18')
+        next8 = types.InlineKeyboardButton('>>', callback_data='next18')
+
+        markup.add(back8, next8)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "domen" вводим demo.lab', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'next19':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back9 = types.InlineKeyboardButton('<<', callback_data='back20')
+        next9 = types.InlineKeyboardButton('>>', callback_data='next20')
+
+        markup.add(back9, next9)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Заходим в менеджер файлов', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'back20':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back9= types.InlineKeyboardButton('<<', callback_data='back19')
+        next9 = types.InlineKeyboardButton('>>', callback_data='next19')
+
+        markup.add(back9, next9)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Нажимаем сохранить и перезагружаем сеть', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'next20':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back10 = types.InlineKeyboardButton('<<', callback_data='back121')
+        next10 = types.InlineKeyboardButton('>>', callback_data='next121')
+
+        markup.add(back10, next10)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Заходим в носители и монтируем диски', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'back121':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back9 = types.InlineKeyboardButton('<<', callback_data='back20')
+        next9 = types.InlineKeyboardButton('>>', callback_data='next20')
+
+        markup.add(back9, next9)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Заходим в менеджер файлов', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'next121':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back11 = types.InlineKeyboardButton('<<', callback_data='back122')
+        next11 = types.InlineKeyboardButton('>>', callback_data='next122')
+
+        markup.add(back11, next11)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Заходим в терминал и вводим следующую команду:\nsudo apt install fly-admin-ad-client', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'back122':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back10 = types.InlineKeyboardButton('<<', callback_data='back121')
+        next10 = types.InlineKeyboardButton('>>', callback_data='next121')
+
+        markup.add(back10, next10)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Заходим в носители и монтируем диски', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'next122':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back13= types.InlineKeyboardButton('<<', callback_data='back123')
+        next13 = types.InlineKeyboardButton('>>', callback_data='next123')
+
+        markup.add(back13, next13)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После установки нажимаем Пуск', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'back123':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back11 = types.InlineKeyboardButton('<<', callback_data='back122')
+        next11 = types.InlineKeyboardButton('>>', callback_data='next122')
+
+        markup.add(back11, next11)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Заходим в терминал и вводим следующую команду:\nsudo apt install fly-admin-ad-client',
+                              parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'next123':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back14 = types.InlineKeyboardButton('<<', callback_data='back124')
+        next14 = types.InlineKeyboardButton('>>', callback_data='next124')
+
+        markup.add(back14, next14)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Заходим в Панель управлениия',parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'back124':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back13= types.InlineKeyboardButton('<<', callback_data='back123')
+        next13 = types.InlineKeyboardButton('>>', callback_data='next123')
+
+        markup.add(back13, next13)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После установки нажимаем Пуск', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'next124':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back15 = types.InlineKeyboardButton('<<', callback_data='back125')
+        next15 = types.InlineKeyboardButton('>>', callback_data='next125')
+
+        markup.add(back15, next15)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Заходим в сеть и выбираем Панель управления Active Directory', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'back125':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back14 = types.InlineKeyboardButton('<<', callback_data='back124')
+        next14 = types.InlineKeyboardButton('>>', callback_data='next124')
+
+        markup.add(back14, next14)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Заходим в Панель управлениия', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'next125':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back16 = types.InlineKeyboardButton('<<', callback_data='back126')
+        next16 = types.InlineKeyboardButton('>>', callback_data='next126')
+
+        markup.add(back16, next16)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "Контроллер домена" вводим "demo"',parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'back126':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back15 = types.InlineKeyboardButton('<<', callback_data='back125')
+        next15 = types.InlineKeyboardButton('>>', callback_data='next125')
+
+        markup.add(back15, next15)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Заходим в сеть и выбираем Панель управления Active Directory', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next126':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back17 = types.InlineKeyboardButton('<<', callback_data='back127')
+        next17 = types.InlineKeyboardButton('>>', callback_data='next127')
+
+        markup.add(back17, next17)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "Контроллер домена" вводим "demo"', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back127':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back15 = types.InlineKeyboardButton('<<', callback_data='back125')
+        next15 = types.InlineKeyboardButton('>>', callback_data='next125')
+
+        markup.add(back15, next15)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Заходим в сеть и выбираем Панель управления Active Directory', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next127':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back18 = types.InlineKeyboardButton('<<', callback_data='back128')
+        next18 = types.InlineKeyboardButton('>>', callback_data='next128')
+
+        markup.add(back18, next18)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "Имя домена" вводим "demo.lab"', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back128':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back17 = types.InlineKeyboardButton('<<', callback_data='back127')
+        next17 = types.InlineKeyboardButton('>>', callback_data='next127')
+
+        markup.add(back17, next17)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "Контроллер домена" вводим "demo"', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next128':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back19= types.InlineKeyboardButton('<<', callback_data='back129')
+        next19 = types.InlineKeyboardButton('>>', callback_data='next129')
+
+        markup.add(back19, next19)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "Администратор Домена" вводим "Administrator"', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back129':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back18 = types.InlineKeyboardButton('<<', callback_data='back128')
+        next18 = types.InlineKeyboardButton('>>', callback_data='next128')
+
+        markup.add(back18, next18)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "Имя домена" вводим "demo.lab"', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next129':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back30 = types.InlineKeyboardButton('<<', callback_data='back130')
+        next30 = types.InlineKeyboardButton('>>', callback_data='next130')
+
+        markup.add(back30, next30)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "Пароль" вводим "xxXX1234"', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back130':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back19= types.InlineKeyboardButton('<<', callback_data='back129')
+        next19 = types.InlineKeyboardButton('>>', callback_data='next129')
+
+        markup.add(back19, next19)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "Администратор Домена" вводим "Administrator"', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next130':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back31= types.InlineKeyboardButton('<<', callback_data='back131')
+        next31 = types.InlineKeyboardButton('>>', callback_data='next131')
+
+        markup.add(back31, next31)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Нажимаем Подключиться', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back131':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back30 = types.InlineKeyboardButton('<<', callback_data='back130')
+        next30 = types.InlineKeyboardButton('>>', callback_data='next130')
+
+        markup.add(back30, next30)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='В поле "Пароль" вводим "xxXX1234"', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next131':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back32 = types.InlineKeyboardButton('<<', callback_data='back132')
+        next32 = types.InlineKeyboardButton('>>', callback_data='next132')
+
+        markup.add(back32, next32)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Если вы сделали все правильно у вас должно появиться "Отключиться"', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back132':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back31= types.InlineKeyboardButton('<<', callback_data='back131')
+        next31 = types.InlineKeyboardButton('>>', callback_data='next131')
+
+        markup.add(back31, next31)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Нажимаем Подключиться', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next132':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back33= types.InlineKeyboardButton('<<', callback_data='back133')
+        next33 = types.InlineKeyboardButton('>>', callback_data='next133')
+
+        markup.add(back33, next33)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Заходим в файловый менеджер', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back133':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back32 = types.InlineKeyboardButton('<<', callback_data='back132')
+        next32 = types.InlineKeyboardButton('>>', callback_data='next132')
+
+        markup.add(back32, next32)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Если вы сделали все правильно у вас должно появиться "Отключиться"', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next133':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back32 = types.InlineKeyboardButton('<<', callback_data='back134')
+        next32 = types.InlineKeyboardButton('>>', callback_data='next134')
+
+        markup.add(back32, next32)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Выбираем каталог "etc"', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back134':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back33= types.InlineKeyboardButton('<<', callback_data='back133')
+        next33 = types.InlineKeyboardButton('>>', callback_data='next133')
+
+        markup.add(back33, next33)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Заходим в файловый менеджер', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next134':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back35= types.InlineKeyboardButton('<<', callback_data='back135')
+        next35 = types.InlineKeyboardButton('>>', callback_data='next135')
+
+        markup.add(back35, next35)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Ищем каталог "apt" и заходим в него', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back135':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back32 = types.InlineKeyboardButton('<<', callback_data='back134')
+        next32 = types.InlineKeyboardButton('>>', callback_data='next134')
+
+        markup.add(back32, next32)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Выбираем каталог "etc"', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next135':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back36 = types.InlineKeyboardButton('<<', callback_data='back136')
+        next36 = types.InlineKeyboardButton('>>', callback_data='next136')
+
+        markup.add(back36, next36)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Ищем файл "sources.list" и заходим в него', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back136':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back32 = types.InlineKeyboardButton('<<', callback_data='back134')
+        next32 = types.InlineKeyboardButton('>>', callback_data='next134')
+
+        markup.add(back32, next32)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Выбираем каталог "etc"', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next136':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back37 = types.InlineKeyboardButton('<<', callback_data='back137')
+        next37 = types.InlineKeyboardButton('>>', callback_data='next137')
+
+        markup.add(back37, next37)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Меняем параметры файла, как показано на картинке:', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back137':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back36 = types.InlineKeyboardButton('<<', callback_data='back136')
+        next36 = types.InlineKeyboardButton('>>', callback_data='next136')
+
+        markup.add(back36, next36)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Ищем файл "sources.list" и заходим в него', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next137':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back38 = types.InlineKeyboardButton('<<', callback_data='back138')
+        next38 = types.InlineKeyboardButton('>>', callback_data='next138')
+
+        markup.add(back38, next38)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Сохраняем файл и выходим из него', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back138':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back37 = types.InlineKeyboardButton('<<', callback_data='back137')
+        next37 = types.InlineKeyboardButton('>>', callback_data='next137')
+
+        markup.add(back37, next37)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Меняем параметры файла, как показано на картинке:', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next138':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back39 = types.InlineKeyboardButton('<<', callback_data='back139')
+        next39 = types.InlineKeyboardButton('>>', callback_data='next139')
+
+        markup.add(back39, next39)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Ищем каталог "etc" и заходим в него', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back139':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back38 = types.InlineKeyboardButton('<<', callback_data='back138')
+        next38 = types.InlineKeyboardButton('>>', callback_data='next138')
+
+        markup.add(back38, next38)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Сохраняем файл и выходим из него', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next139':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back40 = types.InlineKeyboardButton('<<', callback_data='back140')
+        next40 = types.InlineKeyboardButton('>>', callback_data='next140')
+
+        markup.add(back40, next40)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Ищем каталог "ssh" и заходим в него', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back140':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back39 = types.InlineKeyboardButton('<<', callback_data='back139')
+        next39 = types.InlineKeyboardButton('>>', callback_data='next139')
+
+        markup.add(back39, next39)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Ищем каталог "etc" и заходим в него', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next140':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back41 = types.InlineKeyboardButton('<<', callback_data='back141')
+        next41 = types.InlineKeyboardButton('>>', callback_data='next141')
+
+        markup.add(back41, next41)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Ищем файл "ssh_config" и заходим в него', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back141':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back39 = types.InlineKeyboardButton('<<', callback_data='back139')
+        next39 = types.InlineKeyboardButton('>>', callback_data='next139')
+
+        markup.add(back39, next39)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Ищем каталог "ssh" и заходим в него', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next141':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back42 = types.InlineKeyboardButton('<<', callback_data='back142')
+        next42 = types.InlineKeyboardButton('>>', callback_data='next142')
+
+        markup.add(back42, next42)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Ищем параметр "ForwardX11" и меняем значение с no на yes', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back142':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back39 = types.InlineKeyboardButton('<<', callback_data='back139')
+        next39 = types.InlineKeyboardButton('>>', callback_data='next139')
+
+        markup.add(back39, next39)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Ищем каталог "ssh" и заходим в него', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next142':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back43 = types.InlineKeyboardButton('<<', callback_data='back143')
+        next43 = types.InlineKeyboardButton('>>', callback_data='next143')
+
+        markup.add(back43, next43)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Сохраняем файл и выходим из него', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back143':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back42 = types.InlineKeyboardButton('<<', callback_data='back142')
+        next42 = types.InlineKeyboardButton('>>', callback_data='next142')
+
+        markup.add(back42, next42)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Ищем параметр "ForwardX11" и меняем значение с no на yes', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next143':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back44 = types.InlineKeyboardButton('<<', callback_data='back144')
+        next44 = types.InlineKeyboardButton('>>', callback_data='next144')
+
+        markup.add(back44, next44)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Заходим в каталог "etc"', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back144' :
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back43 = types.InlineKeyboardButton('<<', callback_data='back143')
+        next43 = types.InlineKeyboardButton('>>', callback_data='next143')
+
+        markup.add(back43, next43)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Сохраняем файл и выходим из него', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next144':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back45 = types.InlineKeyboardButton('<<', callback_data='back145')
+        next45 = types.InlineKeyboardButton('>>', callback_data='next145')
+
+        markup.add(back45, next45)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Ищем файл с именем "hosts" и заходим в него', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back145':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back44 = types.InlineKeyboardButton('<<', callback_data='back144')
+        next44 = types.InlineKeyboardButton('>>', callback_data='next144')
+
+        markup.add(back44, next44)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Заходим в каталог "etc"', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next145':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back46 = types.InlineKeyboardButton('<<', callback_data='back146')
+        next46 = types.InlineKeyboardButton('>>', callback_data='next146')
+
+        markup.add(back46, next46)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Меняем значение как показанно на картинке', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back146':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back45 = types.InlineKeyboardButton('<<', callback_data='back145')
+        next45 = types.InlineKeyboardButton('>>', callback_data='next145')
+
+        markup.add(back45, next45)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Ищем файл с именем "hosts" и заходим в него', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next146':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back47 = types.InlineKeyboardButton('<<', callback_data='back147')
+        next47 = types.InlineKeyboardButton('>>', callback_data='next147')
+
+        markup.add(back47, next47)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Сохраняем файл и выходим из него', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back147':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back46 = types.InlineKeyboardButton('<<', callback_data='back146')
+        next46 = types.InlineKeyboardButton('>>', callback_data='next146')
+
+        markup.add(back46, next46)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Меняем значение как показанно на картинке', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next147':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back48 = types.InlineKeyboardButton('<<', callback_data='back148')
+        next48 = types.InlineKeyboardButton('>>', callback_data='next148')
+
+        markup.add(back48, next48)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Заходим в командную строку', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back148':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back47 = types.InlineKeyboardButton('<<', callback_data='back147')
+        next47 = types.InlineKeyboardButton('>>', callback_data='next147')
+
+        markup.add(back47, next47)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Сохраняем файл и выходим из него', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next148':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back49 = types.InlineKeyboardButton('<<', callback_data='back149')
+        next49 = types.InlineKeyboardButton('>>', callback_data='next149')
+
+        markup.add(back49, next49)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Вводим команду:\nsystemstl enable ssh.service', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back149':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back48 = types.InlineKeyboardButton('<<', callback_data='back148')
+        next48 = types.InlineKeyboardButton('>>', callback_data='next148')
+
+        markup.add(back48, next48)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Заходим в командную строку', parse_mode='HTML',
+                              reply_markup=markup)
+    elif callback.data == 'next149':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back50 = types.InlineKeyboardButton('<<', callback_data='back150')
+        next50 = types.InlineKeyboardButton('>>', callback_data='next150')
+
+        markup.add(back50, next50)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После чего вводим:\nsystemctl start ssh.service', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back150':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back49 = types.InlineKeyboardButton('<<', callback_data='back149')
+        next49 = types.InlineKeyboardButton('>>', callback_data='next149')
+
+        markup.add(back49, next49)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Вводим команду:\nsystemstl enable ssh.service', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next150':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back51 = types.InlineKeyboardButton('<<', callback_data='back151')
+        next51 = types.InlineKeyboardButton('>>', callback_data='next151')
+
+        markup.add(back51, next51)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Вводим команду:\nsudo -s', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back151':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back50 = types.InlineKeyboardButton('<<', callback_data='back150')
+        next50 = types.InlineKeyboardButton('>>', callback_data='next150')
+
+        markup.add(back50, next50)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После чего вводим:\nsystemctl start ssh.service', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next151':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back52 = types.InlineKeyboardButton('<<', callback_data='back152')
+        next52 = types.InlineKeyboardButton('>>', callback_data='next152')
+
+        markup.add(back52, next52)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После чего вводим:\napt dist-upgrade', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back152':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back51 = types.InlineKeyboardButton('<<', callback_data='back151')
+        next51 = types.InlineKeyboardButton('>>', callback_data='next151')
+
+        markup.add(back51, next51)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Вводим команду:\nsudo -s', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next152':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back53 = types.InlineKeyboardButton('<<', callback_data='back153')
+        next53 = types.InlineKeyboardButton('>>', callback_data='next153')
+
+        markup.add(back53, next53)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Вводим команду:\napt -f install', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back153':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back52 = types.InlineKeyboardButton('<<', callback_data='back152')
+        next52 = types.InlineKeyboardButton('>>', callback_data='next152')
+
+        markup.add(back52, next52)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После чего вводим:\napt dist-upgrade', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next153':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back54 = types.InlineKeyboardButton('<<', callback_data='back154')
+        next54 = types.InlineKeyboardButton('>>', callback_data='next154')
+
+        markup.add(back54, next54)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После чего вводим:\n Exit, и перезагружаем компюьтер', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back154':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back53 = types.InlineKeyboardButton('<<', callback_data='back153')
+        next53 = types.InlineKeyboardButton('>>', callback_data='next153')
+
+        markup.add(back53, next53)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Вводим команду:\napt -f install', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next154':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back55 = types.InlineKeyboardButton('<<', callback_data='back155')
+        next55 = types.InlineKeyboardButton('>>', callback_data='next155')
+
+        markup.add(back55, next55)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Заходим в командную строку и вводим:\nsudo apt-get clean', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back155':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back54 = types.InlineKeyboardButton('<<', callback_data='back154')
+        next54 = types.InlineKeyboardButton('>>', callback_data='next154')
+
+        markup.add(back54, next54)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После чего вводим:\n Exit, и перезагружаем компюьтер', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next155':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back56 = types.InlineKeyboardButton('<<', callback_data='back156')
+        next56 = types.InlineKeyboardButton('>>', callback_data='next156')
+
+        markup.add(back56, next56)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После чего вводим:\nsudo apt-get update', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back156':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back55 = types.InlineKeyboardButton('<<', callback_data='back155')
+        next55 = types.InlineKeyboardButton('>>', callback_data='next155')
+
+        markup.add(back55, next55)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После чего вводим:\nsudo apt-get clean', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next156':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back57 = types.InlineKeyboardButton('<<', callback_data='back157')
+        next57 = types.InlineKeyboardButton('>>', callback_data='next157')
+
+        markup.add(back57, next57)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После чего вводим:\ncd install', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back157':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back56 = types.InlineKeyboardButton('<<', callback_data='back156')
+        next56 = types.InlineKeyboardButton('>>', callback_data='next156')
+
+        markup.add(back56, next56)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После чего вводим:\nsudo apt-get update', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next157':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back58 = types.InlineKeyboardButton('<<', callback_data='back158')
+        next58 = types.InlineKeyboardButton('>>', callback_data='next158')
+
+        markup.add(back58, next58)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После чего вводим:\nsudo apt-get install xauth', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back158':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back57 = types.InlineKeyboardButton('<<', callback_data='back157')
+        next57 = types.InlineKeyboardButton('>>', callback_data='next157')
+
+        markup.add(back57, next57)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После чего вводим:\ncd install', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next158':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back59 = types.InlineKeyboardButton('<<', callback_data='back159')
+        next59 = types.InlineKeyboardButton('>>', callback_data='next159')
+
+        markup.add(back59, next59)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После чего вводим:\nsystemctl restart sshd', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back159':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back58 = types.InlineKeyboardButton('<<', callback_data='back158')
+        next58 = types.InlineKeyboardButton('>>', callback_data='next158')
+
+        markup.add(back58, next58)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После чего вводим:\nsudo apt-get install xauth', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next159':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back60 = types.InlineKeyboardButton('<<', callback_data='back160')
+        next60 = types.InlineKeyboardButton('>>', callback_data='next160')
+
+        markup.add(back60, next60)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После чего вводим:\nsudo ./iwtm-installer-7.9.1 64-astra-1.7', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back160':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back59 = types.InlineKeyboardButton('<<', callback_data='back159')
+        next59 = types.InlineKeyboardButton('>>', callback_data='next159')
+
+        markup.add(back59, next59)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После чего вводим:\nsystemctl restart sshd', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next160':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back61 = types.InlineKeyboardButton('<<', callback_data='back161')
+        next61 = types.InlineKeyboardButton('>>', callback_data='next161')
+
+        markup.add(back61, next61)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После установки заходим в браузер и вводим 192.168.88.10', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back161':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back60 = types.InlineKeyboardButton('<<', callback_data='back160')
+        next60 = types.InlineKeyboardButton('>>', callback_data='next160')
+
+        markup.add(back60, next60)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После чего вводим:\nsudo ./iwtm-installer-7.9.1 64-astra-1.7', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next161':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back62 = types.InlineKeyboardButton('<<', callback_data='back162')
+        next62 = types.InlineKeyboardButton('Закончить настройку', callback_data='next162')
+
+        markup.add(back62, next62)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Если установка прошла успешно, у вас должно появиться следующее окно:', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'back162':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        back61 = types.InlineKeyboardButton('<<', callback_data='back161')
+        next61 = types.InlineKeyboardButton('>>', callback_data='next161')
+
+        markup.add(back61, next61)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='После установки заходим в браузер и вводим 192.168.88.10', parse_mode='HTML',
+                              reply_markup=markup)
+
+    elif callback.data == 'next162':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        astra = types.InlineKeyboardButton('Настроить\nAstra(IWTM)', callback_data='iwtm')
+        windowsdm = types.InlineKeyboardButton('Настроить\nWindows(DM)', callback_data='dm')
+        windowsagent = types.InlineKeyboardButton('Настроить\nWindows(Agent)', callback_data='agent')
+        markupback2 = types.InlineKeyboardButton('Назад', callback_data='back2')
+
+        markup.add(astra, windowsdm, windowsagent, markupback2)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Вы закончили настройку', parse_mode='HTML',
+                              reply_markup=markup)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    elif callback.data == 'kurs4':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        AldPRO = types.InlineKeyboardButton('AldPRO', callback_data='AldPRO')
+        ARMA = types.InlineKeyboardButton('ARMA', callback_data='ARMA')
+        markupback2 = types.InlineKeyboardButton('Назад', callback_data='back1')
+
+        markup.add(ARMA, AldPRO, markupback2)
+
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Вы выбрали 4 курс, что дальше?', parse_mode='HTML', reply_markup=markup)
+
+    elif callback.data == 'back1':
+
+        markup = types.InlineKeyboardMarkup(row_width=5)
+
+        kurs2 = types.InlineKeyboardButton('2 курс', callback_data='kurs2')
+        kurs3 = types.InlineKeyboardButton('3 курс', callback_data='kurs3')
+        kurs4 = types.InlineKeyboardButton('4 курс', callback_data='kurs4')
+
+        markup.add(kurs2, kurs3, kurs4)
+        bot.edit_message_text(chat_id=callback.message.chat.id, message_id=callback.message.id,
+                              text='Вы вернулись в главное меню', parse_mode='HTML', reply_markup=markup)
+
+bot.polling(non_stop=True)

+ 46 - 0
ОАиП/2024-25/36гр/Шишкова.py

@@ -0,0 +1,46 @@
+import tkinter as tk
+from tkinter import messagebox
+
+def euclid_gcd(a, b):
+    while b != 0:
+        a, b = b, a % b
+    return a
+
+
+def find_gcd():
+    try:
+   
+        a = int(entry_a.get())
+        b = int(entry_b.get())
+        
+
+        gcd = euclid_gcd(a, b)
+        
+       
+        messagebox.showinfo("Результат", f"Наибольший общий делитель чисел {a} и {b} равен: {gcd}")
+    except ValueError:
+        
+        messagebox.showerror("Ошибка", "Пожалуйста, введите корректные целые числа!")
+
+
+root = tk.Tk()
+root.title("Нахождение НОД (Алгоритм Евклида)")
+
+
+label_a = tk.Label(root, text="Введите первое число:")
+label_a.pack()
+
+entry_a = tk.Entry(root, width=50)
+entry_a.pack()
+
+label_b = tk.Label(root, text="Введите второе число:")
+label_b.pack()
+
+entry_b = tk.Entry(root, width=50)
+entry_b.pack()
+
+
+button = tk.Button(root, text="Найти НОД", command=find_gcd)
+button.pack()
+
+root.mainloop()

+ 30 - 0
ОАиП/2024-25/36гр/Шишкова2.py

@@ -0,0 +1,30 @@
+import tkinter as tk
+from tkinter import messagebox
+
+# Функция для нахождения максимального и минимального элемента массива
+def find_max_min():
+    try:
+        arr = list(map(int, entry.get().split()))  # Получаем числа из текстового поля
+        maximum = max(arr)
+        minimum = min(arr)
+        messagebox.showinfo("Результат", f"Максимальный элемент: {maximum}\nМинимальный элемент: {minimum}")
+    except ValueError:
+        messagebox.showerror("Ошибка", "Пожалуйста, введите только числа!")
+
+# Создание основного окна
+root = tk.Tk()
+root.title("Максимум и минимум массива")
+
+# Метка и поле для ввода
+label = tk.Label(root, text="Введите числа через пробел:")
+label.pack()
+
+entry = tk.Entry(root, width=50)
+entry.pack()
+
+# Кнопка для вычисления максимум и минимум
+button = tk.Button(root, text="Найти максимум и минимум", command=find_max_min)
+button.pack()
+
+# Запуск GUI
+root.mainloop()