/* Дієкод */

взяти визначення КД;

простір КД {
  дія отримати_символ_кд_з_ю32(символ_Ю32: п32, вихід_першого_байта: *п8, вихід_другого_байта: *п8, вихід_третього_байта: *п8, вихід_четвертого_байта: *п8, вихід_розміру: *п8) -> логічне {
    якщо символ_Ю32 == відповідні_символи_юнікоду::Недійсний {
      вихід_першого_байта::вміст = символи::Недійсний;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Дія {
      вихід_першого_байта::вміст = символи::Дія;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    // 2 невизначено
    // 3 невизначено
    // 4 невизначено
    // 5 невизначено
    // 6 невизначено
    якщо символ_Ю32 == відповідні_символи_юнікоду::Відсоток {
      вихід_першого_байта::вміст = символи::Відсоток;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Долар {
      вихід_першого_байта::вміст = символи::Долар;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Мітка {
      вихід_першого_байта::вміст = символи::Мітка;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Адреса {
      вихід_першого_байта::вміст = символи::Адреса;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Обернена_похила {
      вихід_першого_байта::вміст = символи::Обернена_похила;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Підриска {
      вихід_першого_байта::вміст = символи::Підриска;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Циркумфлекс {
      вихід_першого_байта::вміст = символи::Циркумфлекс;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Хвиляста {
      вихід_першого_байта::вміст = символи::Хвиляста;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Двориска {
      вихід_першого_байта::вміст = символи::Двориска;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Нуль {
      вихід_першого_байта::вміст = символи::Нуль;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Один {
      вихід_першого_байта::вміст = символи::Один;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Два {
      вихід_першого_байта::вміст = символи::Два;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Три {
      вихід_першого_байта::вміст = символи::Три;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Чотири {
      вихід_першого_байта::вміст = символи::Чотири;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Пʼять {
      вихід_першого_байта::вміст = символи::Пʼять;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Шість {
      вихід_першого_байта::вміст = символи::Шість;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Сім {
      вихід_першого_байта::вміст = символи::Сім;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Вісім {
      вихід_першого_байта::вміст = символи::Вісім;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Девʼять {
      вихід_першого_байта::вміст = символи::Девʼять;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Хрестик {
      вихід_першого_байта::вміст = символи::Хрестик;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Риска {
      вихід_першого_байта::вміст = символи::Риска;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Зірочка {
      вихід_першого_байта::вміст = символи::Зірочка;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Похила {
      вихід_першого_байта::вміст = символи::Похила;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::І {
      вихід_першого_байта::вміст = символи::І;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Стояча {
      вихід_першого_байта::вміст = символи::Стояча;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Велика_буква_А {
      вихід_першого_байта::вміст = символи::Велика_буква_А;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Велика_буква_Б {
      вихід_першого_байта::вміст = символи::Велика_буква_Б;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Велика_буква_Г {
      вихід_першого_байта::вміст = символи::Велика_буква_Г;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Велика_буква_Д {
      вихід_першого_байта::вміст = символи::Велика_буква_Д;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Велика_буква_Е {
      вихід_першого_байта::вміст = символи::Велика_буква_Е;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Велика_буква_З {
      вихід_першого_байта::вміст = символи::Велика_буква_З;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Велика_буква_И {
      вихід_першого_байта::вміст = символи::Велика_буква_И;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Велика_буква_І {
      вихід_першого_байта::вміст = символи::Велика_буква_І;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Велика_буква_Й {
      вихід_першого_байта::вміст = символи::Велика_буква_Й;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Велика_буква_К {
      вихід_першого_байта::вміст = символи::Велика_буква_К;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Велика_буква_Л {
      вихід_першого_байта::вміст = символи::Велика_буква_Л;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Велика_буква_М {
      вихід_першого_байта::вміст = символи::Велика_буква_М;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Велика_буква_Н {
      вихід_першого_байта::вміст = символи::Велика_буква_Н;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Велика_буква_О {
      вихід_першого_байта::вміст = символи::Велика_буква_О;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Велика_буква_П {
      вихід_першого_байта::вміст = символи::Велика_буква_П;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Велика_буква_Р {
      вихід_першого_байта::вміст = символи::Велика_буква_Р;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Велика_буква_С {
      вихід_першого_байта::вміст = символи::Велика_буква_С;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Велика_буква_Т {
      вихід_першого_байта::вміст = символи::Велика_буква_Т;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Велика_буква_У {
      вихід_першого_байта::вміст = символи::Велика_буква_У;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Велика_буква_В {
      вихід_першого_байта::вміст = символи::Велика_буква_В;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Велика_буква_Ф {
      вихід_першого_байта::вміст = символи::Велика_буква_Ф;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Велика_буква_Х {
      вихід_першого_байта::вміст = символи::Велика_буква_Х;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Велика_буква_Ш {
      вихід_першого_байта::вміст = символи::Велика_буква_Ш;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Велика_буква_Ж {
      вихід_першого_байта::вміст = символи::Велика_буква_Ж;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Велика_буква_Ц {
      вихід_першого_байта::вміст = символи::Велика_буква_Ц;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Велика_буква_Ч {
      вихід_першого_байта::вміст = символи::Велика_буква_Ч;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Велика_буква_Щ {
      вихід_першого_байта::вміст = символи::Велика_буква_Щ;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Велика_буква_Я {
      вихід_першого_байта::вміст = символи::Велика_буква_Я;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Велика_буква_Є {
      вихід_першого_байта::вміст = символи::Велика_буква_Є;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Велика_буква_Ї {
      вихід_першого_байта::вміст = символи::Велика_буква_Ї;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Велика_буква_Ю {
      вихід_першого_байта::вміст = символи::Велика_буква_Ю;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Велика_буква_Ь {
      вихід_першого_байта::вміст = символи::Велика_буква_Ь;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Мала_буква_а {
      вихід_першого_байта::вміст = символи::Мала_буква_а;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Мала_буква_б {
      вихід_першого_байта::вміст = символи::Мала_буква_б;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Мала_буква_г {
      вихід_першого_байта::вміст = символи::Мала_буква_г;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Мала_буква_д {
      вихід_першого_байта::вміст = символи::Мала_буква_д;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Мала_буква_е {
      вихід_першого_байта::вміст = символи::Мала_буква_е;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Мала_буква_з {
      вихід_першого_байта::вміст = символи::Мала_буква_з;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Мала_буква_и {
      вихід_першого_байта::вміст = символи::Мала_буква_и;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Мала_буква_і {
      вихід_першого_байта::вміст = символи::Мала_буква_і;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Мала_буква_й {
      вихід_першого_байта::вміст = символи::Мала_буква_й;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Мала_буква_к {
      вихід_першого_байта::вміст = символи::Мала_буква_к;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Мала_буква_л {
      вихід_першого_байта::вміст = символи::Мала_буква_л;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Мала_буква_м {
      вихід_першого_байта::вміст = символи::Мала_буква_м;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Мала_буква_н {
      вихід_першого_байта::вміст = символи::Мала_буква_н;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Мала_буква_о {
      вихід_першого_байта::вміст = символи::Мала_буква_о;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Мала_буква_п {
      вихід_першого_байта::вміст = символи::Мала_буква_п;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Мала_буква_р {
      вихід_першого_байта::вміст = символи::Мала_буква_р;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Мала_буква_с {
      вихід_першого_байта::вміст = символи::Мала_буква_с;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Мала_буква_т {
      вихід_першого_байта::вміст = символи::Мала_буква_т;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Мала_буква_у {
      вихід_першого_байта::вміст = символи::Мала_буква_у;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Мала_буква_в {
      вихід_першого_байта::вміст = символи::Мала_буква_в;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Мала_буква_ф {
      вихід_першого_байта::вміст = символи::Мала_буква_ф;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Мала_буква_х {
      вихід_першого_байта::вміст = символи::Мала_буква_х;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Мала_буква_ш {
      вихід_першого_байта::вміст = символи::Мала_буква_ш;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Мала_буква_ж {
      вихід_першого_байта::вміст = символи::Мала_буква_ж;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Мала_буква_ц {
      вихід_першого_байта::вміст = символи::Мала_буква_ц;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Мала_буква_ч {
      вихід_першого_байта::вміст = символи::Мала_буква_ч;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Мала_буква_щ {
      вихід_першого_байта::вміст = символи::Мала_буква_щ;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Мала_буква_я {
      вихід_першого_байта::вміст = символи::Мала_буква_я;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Мала_буква_є {
      вихід_першого_байта::вміст = символи::Мала_буква_є;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Мала_буква_ї {
      вихід_першого_байта::вміст = символи::Мала_буква_ї;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Мала_буква_ю {
      вихід_першого_байта::вміст = символи::Мала_буква_ю;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Мала_буква_ь {
      вихід_першого_байта::вміст = символи::Мала_буква_ь;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Велика_буква_Ґ {
      вихід_першого_байта::вміст = символи::Велика_буква_Ґ;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    // 97 невизначено
    // 98 невизначено
    // 99 невизначено
    якщо символ_Ю32 == відповідні_символи_юнікоду::Велика_буква_Ъ {
      вихід_першого_байта::вміст = символи::Велика_буква_Ъ;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Мала_буква_ґ {
      вихід_першого_байта::вміст = символи::Мала_буква_ґ;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    // 102 невизначено
    // 103 невизначено
    // 104 невизначено
    якщо символ_Ю32 == відповідні_символи_юнікоду::Мала_буква_ъ {
      вихід_першого_байта::вміст = символи::Мала_буква_ъ;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Апостроф {
      вихід_першого_байта::вміст = символи::Апостроф;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Кома {
      вихід_першого_байта::вміст = символи::Кома;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Двокрапка {
      вихід_першого_байта::вміст = символи::Двокрапка;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Крапкакома {
      вихід_першого_байта::вміст = символи::Крапкакома;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Крапка {
      вихід_першого_байта::вміст = символи::Крапка;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Питання {
      вихід_першого_байта::вміст = символи::Питання;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Оклик {
      вихід_першого_байта::вміст = символи::Оклик;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Дволапка {
      вихід_першого_байта::вміст = символи::Дволапка;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Однолапка {
      вихід_першого_байта::вміст = символи::Однолапка;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Косолапка {
      вихід_першого_байта::вміст = символи::Косолапка;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Відкрита_квадратна_дужка {
      вихід_першого_байта::вміст = символи::Відкрита_квадратна_дужка;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Закрита_квадратна_дужка {
      вихід_першого_байта::вміст = символи::Закрита_квадратна_дужка;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Відкрита_дужка {
      вихід_першого_байта::вміст = символи::Відкрита_дужка;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Закрита_дужка {
      вихід_першого_байта::вміст = символи::Закрита_дужка;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Відкрита_фігурна_дужка {
      вихід_першого_байта::вміст = символи::Відкрита_фігурна_дужка;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Закрита_фігурна_дужка {
      вихід_першого_байта::вміст = символи::Закрита_фігурна_дужка;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Менше {
      вихід_першого_байта::вміст = символи::Менше;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Більше {
      вихід_першого_байта::вміст = символи::Більше;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    // 124 невизначено
    // 125 невизначено
    якщо символ_Ю32 == відповідні_символи_юнікоду::Пропуск {
      вихід_першого_байта::вміст = символи::Пропуск;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_Ю32 == відповідні_символи_юнікоду::Міжряд {
      вихід_першого_байта::вміст = символи::Міжряд;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    вернути ні;
  }

  дія перекодувати_з_ю8(система: *Система, вхід: ю8, екранувати_невідомі: логічне, з_нульовим_байтом_в_кінці: логічне, вихід: *кд, вихід_позиції_помилки: *природне) -> логічне {
    змінна дані_виходу = виділити<п8>(система, вхід.розмір * 4 + 1);
    змінна розмір_виходу: природне = 0;
    змінна п: природне = 0;
    поки п < вхід.розмір {
      змінна перший_байт = вхід.дані[п];
      змінна розмір_символа = дізнатись_розмір_символа_ю8(перший_байт);
      якщо розмір_символа == 1 {
        змінна символ_кд_0: п8 = 0;
        змінна символ_кд_1: п8 = 0;
        змінна символ_кд_2: п8 = 0;
        змінна символ_кд_3: п8 = 0;
        змінна символ_кд_розмір: п8 = 0;
        змінна успіх_отримання_кд_з_ю32 = отримати_символ_кд_з_ю32(п32(перший_байт), символ_кд_0::адреса, символ_кд_1::адреса, символ_кд_2::адреса, символ_кд_3::адреса, символ_кд_розмір::адреса);
        якщо не успіх_отримання_кд_з_ю32 {
          якщо екранувати_невідомі {
            // потім: втілити
          }
          звільнити(система, дані_виходу);
          якщо вихід_позиції_помилки != пусто {
            вихід_позиції_помилки::вміст = п;
          }
          вернути ні;
        }
        якщо символ_кд_розмір == 1 {
          дані_виходу[розмір_виходу] = символ_кд_0;
          розмір_виходу += 1;
        } інакше якщо символ_кд_розмір == 2 {
          дані_виходу[розмір_виходу] = символ_кд_0;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_кд_1;
          розмір_виходу += 1;
        } інакше якщо символ_кд_розмір == 3 {
          дані_виходу[розмір_виходу] = символ_кд_0;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_кд_1;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_кд_2;
          розмір_виходу += 1;
        } інакше якщо символ_кд_розмір == 4 {
          дані_виходу[розмір_виходу] = символ_кд_0;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_кд_1;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_кд_3;
          розмір_виходу += 1;
        }
      } інакше якщо розмір_символа == 2 {
        п += 1;
        змінна другий_байт = вхід.дані[п];
        змінна символ_ю16 = п16((п16(перший_байт & 31) << 6) | п16(другий_байт & 63));
        змінна символ_кд_0: п8 = 0;
        змінна символ_кд_1: п8 = 0;
        змінна символ_кд_2: п8 = 0;
        змінна символ_кд_3: п8 = 0;
        змінна символ_кд_розмір: п8 = 0;
        змінна успіх_отримання_кд_з_ю32 = отримати_символ_кд_з_ю32(п32(символ_ю16), символ_кд_0::адреса, символ_кд_1::адреса, символ_кд_2::адреса, символ_кд_3::адреса, символ_кд_розмір::адреса);
        якщо не успіх_отримання_кд_з_ю32 {
          якщо екранувати_невідомі {
            // потім: втілити
          }
          звільнити(система, дані_виходу);
          якщо вихід_позиції_помилки != пусто {
            вихід_позиції_помилки::вміст = п - 1;
          }
          вернути ні;
        }
        якщо символ_кд_розмір == 1 {
          дані_виходу[розмір_виходу] = символ_кд_0;
          розмір_виходу += 1;
        } інакше якщо символ_кд_розмір == 2 {
          дані_виходу[розмір_виходу] = символ_кд_0;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_кд_1;
          розмір_виходу += 1;
        } інакше якщо символ_кд_розмір == 3 {
          дані_виходу[розмір_виходу] = символ_кд_0;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_кд_1;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_кд_2;
          розмір_виходу += 1;
        } інакше якщо символ_кд_розмір == 4 {
          дані_виходу[розмір_виходу] = символ_кд_0;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_кд_1;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_кд_3;
          розмір_виходу += 1;
        }
      } інакше якщо розмір_символа == 3 {
        п += 1;
        змінна другий_байт = вхід.дані[п];
        п += 1;
        змінна третій_байт = вхід.дані[п];
        змінна символ_ю32 = п32((п32(перший_байт & 15) << 12) | (п32(другий_байт & 63) << 6) | п32(третій_байт & 63));
        змінна символ_кд_0: п8 = 0;
        змінна символ_кд_1: п8 = 0;
        змінна символ_кд_2: п8 = 0;
        змінна символ_кд_3: п8 = 0;
        змінна символ_кд_розмір: п8 = 0;
        змінна успіх_отримання_кд_з_ю32 = отримати_символ_кд_з_ю32(символ_ю32, символ_кд_0::адреса, символ_кд_1::адреса, символ_кд_2::адреса, символ_кд_3::адреса, символ_кд_розмір::адреса);
        якщо не успіх_отримання_кд_з_ю32 {
          якщо екранувати_невідомі {
            // потім: втілити
          }
          звільнити(система, дані_виходу);
          якщо вихід_позиції_помилки != пусто {
            вихід_позиції_помилки::вміст = п - 2;
          }
          вернути ні;
        }
        якщо символ_кд_розмір == 1 {
          дані_виходу[розмір_виходу] = символ_кд_0;
          розмір_виходу += 1;
        } інакше якщо символ_кд_розмір == 2 {
          дані_виходу[розмір_виходу] = символ_кд_0;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_кд_1;
          розмір_виходу += 1;
        } інакше якщо символ_кд_розмір == 3 {
          дані_виходу[розмір_виходу] = символ_кд_0;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_кд_1;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_кд_2;
          розмір_виходу += 1;
        } інакше якщо символ_кд_розмір == 4 {
          дані_виходу[розмір_виходу] = символ_кд_0;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_кд_1;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_кд_3;
          розмір_виходу += 1;
        }
      } інакше {
        якщо екранувати_невідомі {
          // потім: втілити
        }
        звільнити(система, дані_виходу);
        якщо вихід_позиції_помилки != пусто {
          вихід_позиції_помилки::вміст = п;
        }
        вернути ні;
      }
      п += 1;
    }
    якщо з_нульовим_байтом_в_кінці {
      дані_виходу[розмір_виходу] = 0;
    }
    вихід::вміст = кд {
      дані_виходу,
      розмір_виходу,
    };
    вернути так;
  }

  дія перекодувати_ю8_в_ю32(система: *Система, вхід: ю8, з_нульовим_байтом_в_кінці: логічне, вихід: *ю32, вихід_позиції_помилки: *природне) -> логічне {
    змінна дані_виходу = виділити<п32>(система, вхід.розмір + 1);
    змінна розмір_виходу: природне = 0;
    змінна п: природне = 0;
    поки п < вхід.розмір {
      змінна перший_байт = вхід.дані[п];
      змінна розмір_символа = дізнатись_розмір_символа_ю8(перший_байт);
      якщо розмір_символа == 1 {
        дані_виходу[розмір_виходу] = п32(перший_байт & 127);
        розмір_виходу += 1;
      }
      якщо розмір_символа == 2 {
        змінна другий_байт = вхід.дані[п + 1];
        дані_виходу[розмір_виходу] = (п32(перший_байт & 31) << 6) | п32(другий_байт & 63);
        розмір_виходу += 1;
        п += 1;
      }
      якщо розмір_символа == 3 {
        змінна другий_байт = вхід.дані[п + 1];
        змінна третій_байт = вхід.дані[п + 2];
        дані_виходу[розмір_виходу] = (п32(перший_байт & 15) << 12) | (п32(другий_байт & 63) << 6) | п32(третій_байт & 63);
        розмір_виходу += 1;
        п += 2;
      }
      якщо розмір_символа == 4 {
        змінна другий_байт = вхід.дані[п + 1];
        змінна третій_байт = вхід.дані[п + 2];
        змінна четвертий_байт = вхід.дані[п + 3];
        дані_виходу[розмір_виходу] = (п32(перший_байт & 15) << 18) | (п32(другий_байт & 63) << 12) | (п32(третій_байт & 63) << 6) | п32(четвертий_байт & 63);
        розмір_виходу += 1;
        п += 3;
      }
      п += 1;
    }
    якщо з_нульовим_байтом_в_кінці {
      дані_виходу[розмір_виходу] = 0;
    }
    вихід::вміст = ю32 {
      розмір_виходу,
      дані_виходу
    };
    вернути так;
  }

  дія перекодувати_ю32_в_ю8(система: *Система, вхід: ю32, з_нульовим_байтом_в_кінці: логічне, вихід: *ю8, вихід_позиції_помилки: *природне) -> логічне {
    змінна дані_виходу = виділити<п8>(система, вхід.розмір * 4 + 1);
    змінна розмір_виходу: природне = 0;
    змінна п: природне = 0;
    поки п < вхід.розмір {
      змінна с = вхід.дані[п];
      якщо с < 128 {
        дані_виходу[розмір_виходу] = п8(с);
        розмір_виходу += 1;
      } інакше якщо с < 2048 {
        дані_виходу[розмір_виходу] = п8(п32(192) | (с >> 6));
        розмір_виходу += 1;
        дані_виходу[розмір_виходу] = п8(п32(128) | (с & 63));
        розмір_виходу += 1;
      } інакше якщо с < 65536 {
        дані_виходу[розмір_виходу] = п8(п32(224) | (с >> 12));
        розмір_виходу += 1;
        дані_виходу[розмір_виходу] = п8(п32(128) | ((с >> 6) & 63));
        розмір_виходу += 1;
        дані_виходу[розмір_виходу] = п8(п32(128) | (с & 63));
        розмір_виходу += 1;
      } інакше {
        дані_виходу[розмір_виходу] = п8(п32(240) | (с >> 18));
        розмір_виходу += 1;
        дані_виходу[розмір_виходу] = п8(п32(128) | ((с >> 12) & 63));
        розмір_виходу += 1;
        дані_виходу[розмір_виходу] = п8(п32(128) | ((с >> 6) & 63));
        розмір_виходу += 1;
        дані_виходу[розмір_виходу] = п8(п32(128) | (с & 63));
        розмір_виходу += 1;
      }
      п += 1;
    }
    якщо з_нульовим_байтом_в_кінці {
      дані_виходу[розмір_виходу] = 0;
    }
    вихід::вміст = ю8 {
      дані_виходу,
      розмір_виходу,
    };
    вернути так;
  }

  дія отримати_символ_ю8_з_т32(символ_КД: п32, вихід_першого_байта: *п8, вихід_другого_байта: *п8, вихід_третього_байта: *п8, вихід_четвертого_байта: *п8, вихід_розміру: *п8) -> логічне {
    якщо символ_КД == символи::Недійсний {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Недійсний;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::Дія {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Дія;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    // 2 невизначено
    // 3 невизначено
    // 4 невизначено
    // 5 невизначено
    // 6 невизначено
    якщо символ_КД == символи::Відсоток {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Відсоток;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::Долар {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Долар;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::Мітка {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Мітка;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::Адреса {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Адреса;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::Обернена_похила {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Обернена_похила;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::Підриска {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Підриска;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::Циркумфлекс {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Циркумфлекс;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::Хвиляста {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Хвиляста;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::Двориска {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Двориска;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::Нуль {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Нуль;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::Один {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Один;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::Два {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Два;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::Три {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Три;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::Чотири {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Чотири;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::Пʼять {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Пʼять;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::Шість {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Шість;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::Сім {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Сім;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::Вісім {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Вісім;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::Девʼять {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Девʼять;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::Хрестик {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Хрестик;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::Риска {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Риска;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::Зірочка {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Зірочка;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::Похила {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Похила;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::І {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::І;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::Стояча {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Стояча;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::Велика_буква_А {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Велика_буква_А) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Велика_буква_А) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Велика_буква_Б {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Велика_буква_Б) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Велика_буква_Б) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Велика_буква_Г {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Велика_буква_Г) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Велика_буква_Г) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Велика_буква_Д {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Велика_буква_Д) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Велика_буква_Д) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Велика_буква_Е {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Велика_буква_Е) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Велика_буква_Е) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Велика_буква_З {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Велика_буква_З) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Велика_буква_З) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Велика_буква_И {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Велика_буква_И) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Велика_буква_И) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Велика_буква_І {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Велика_буква_І) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Велика_буква_І) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Велика_буква_Й {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Велика_буква_Й) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Велика_буква_Й) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Велика_буква_К {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Велика_буква_К) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Велика_буква_К) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Велика_буква_Л {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Велика_буква_Л) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Велика_буква_Л) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Велика_буква_М {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Велика_буква_М) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Велика_буква_М) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Велика_буква_Н {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Велика_буква_Н) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Велика_буква_Н) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Велика_буква_О {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Велика_буква_О) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Велика_буква_О) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Велика_буква_П {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Велика_буква_П) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Велика_буква_П) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Велика_буква_Р {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Велика_буква_Р) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Велика_буква_Р) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Велика_буква_С {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Велика_буква_С) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Велика_буква_С) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Велика_буква_Т {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Велика_буква_Т) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Велика_буква_Т) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Велика_буква_У {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Велика_буква_У) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Велика_буква_У) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Велика_буква_В {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Велика_буква_В) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Велика_буква_В) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Велика_буква_Ф {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Велика_буква_Ф) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Велика_буква_Ф) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Велика_буква_Х {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Велика_буква_Х) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Велика_буква_Х) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Велика_буква_Ш {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Велика_буква_Ш) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Велика_буква_Ш) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Велика_буква_Ж {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Велика_буква_Ж) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Велика_буква_Ж) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Велика_буква_Ц {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Велика_буква_Ц) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Велика_буква_Ц) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Велика_буква_Ч {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Велика_буква_Ч) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Велика_буква_Ч) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Велика_буква_Щ {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Велика_буква_Щ) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Велика_буква_Щ) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Велика_буква_Я {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Велика_буква_Я) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Велика_буква_Я) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Велика_буква_Є {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Велика_буква_Є) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Велика_буква_Є) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Велика_буква_Ї {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Велика_буква_Ї) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Велика_буква_Ї) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Велика_буква_Ю {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Велика_буква_Ю) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Велика_буква_Ю) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Велика_буква_Ь {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Велика_буква_Ь) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Велика_буква_Ь) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Мала_буква_а {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Мала_буква_а) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Мала_буква_а) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Мала_буква_б {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Мала_буква_б) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Мала_буква_б) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Мала_буква_г {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Мала_буква_г) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Мала_буква_г) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Мала_буква_д {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Мала_буква_д) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Мала_буква_д) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Мала_буква_е {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Мала_буква_е) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Мала_буква_е) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Мала_буква_з {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Мала_буква_з) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Мала_буква_з) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Мала_буква_и {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Мала_буква_и) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Мала_буква_и) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Мала_буква_і {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Мала_буква_і) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Мала_буква_і) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Мала_буква_й {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Мала_буква_й) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Мала_буква_й) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Мала_буква_к {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Мала_буква_к) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Мала_буква_к) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Мала_буква_л {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Мала_буква_л) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Мала_буква_л) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Мала_буква_м {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Мала_буква_м) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Мала_буква_м) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Мала_буква_н {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Мала_буква_н) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Мала_буква_н) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Мала_буква_о {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Мала_буква_о) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Мала_буква_о) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Мала_буква_п {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Мала_буква_п) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Мала_буква_п) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Мала_буква_р {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Мала_буква_р) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Мала_буква_р) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Мала_буква_с {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Мала_буква_с) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Мала_буква_с) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Мала_буква_т {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Мала_буква_т) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Мала_буква_т) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Мала_буква_у {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Мала_буква_у) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Мала_буква_у) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Мала_буква_в {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Мала_буква_в) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Мала_буква_в) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Мала_буква_ф {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Мала_буква_ф) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Мала_буква_ф) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Мала_буква_х {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Мала_буква_х) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Мала_буква_х) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Мала_буква_ш {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Мала_буква_ш) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Мала_буква_ш) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Мала_буква_ж {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Мала_буква_ж) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Мала_буква_ж) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Мала_буква_ц {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Мала_буква_ц) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Мала_буква_ц) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Мала_буква_ч {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Мала_буква_ч) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Мала_буква_ч) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Мала_буква_щ {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Мала_буква_щ) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Мала_буква_щ) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Мала_буква_я {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Мала_буква_я) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Мала_буква_я) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Мала_буква_є {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Мала_буква_є) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Мала_буква_є) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Мала_буква_ї {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Мала_буква_ї) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Мала_буква_ї) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Мала_буква_ю {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Мала_буква_ю) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Мала_буква_ю) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Мала_буква_ь {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Мала_буква_ь) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Мала_буква_ь) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Велика_буква_Ґ {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Велика_буква_Ґ) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Велика_буква_Ґ) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    // 97 невизначено
    // 98 невизначено
    // 99 невизначено
    якщо символ_КД == символи::Велика_буква_Ъ {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Велика_буква_Ъ) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Велика_буква_Ъ) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Мала_буква_ґ {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Мала_буква_ґ) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Мала_буква_ґ) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    // 102 невизначено
    // 103 невизначено
    // 104 невизначено
    якщо символ_КД == символи::Мала_буква_ъ {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Мала_буква_ъ) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Мала_буква_ъ) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Апостроф {
      вихід_першого_байта::вміст = п8(п32(192) | (п32(відповідні_символи_юнікоду::Апостроф) >> 6));
      вихід_другого_байта::вміст = п8(п32(128) | (п32(відповідні_символи_юнікоду::Апостроф) & 63));
      вихід_розміру::вміст = 2;
      вернути так;
    }
    якщо символ_КД == символи::Кома {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Кома;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::Двокрапка {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Двокрапка;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::Крапкакома {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Крапкакома;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::Крапка {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Крапка;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::Питання {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Питання;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::Оклик {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Оклик;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::Дволапка {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Дволапка;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::Однолапка {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Однолапка;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::Косолапка {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Косолапка;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::Відкрита_квадратна_дужка {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Відкрита_квадратна_дужка;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::Закрита_квадратна_дужка {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Закрита_квадратна_дужка;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::Відкрита_дужка {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Відкрита_дужка;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::Закрита_дужка {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Закрита_дужка;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::Відкрита_фігурна_дужка {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Відкрита_фігурна_дужка;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::Закрита_фігурна_дужка {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Закрита_фігурна_дужка;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::Менше {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Менше;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::Більше {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Більше;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    // 124 невизначено
    // 125 невизначено
    якщо символ_КД == символи::Пропуск {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Пропуск;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    якщо символ_КД == символи::Міжряд {
      вихід_першого_байта::вміст = відповідні_символи_юнікоду::Міжряд;
      вихід_розміру::вміст = 1;
      вернути так;
    }
    вернути ні;
  }

  дія порахувати_розмір_ю8сі(значення: *п8) -> природне {
    змінна п: природне = 0;
    поки значення[п] != 0 {
      п += 1;
    }
    вернути п;
  }

  дія перевірити_чи_ю8_рівні(а: ю8, б: ю8) -> логічне {
    якщо а.розмір != б.розмір {
      вернути ні;
    }
    змінна п: природне = 0;
    поки п < а.розмір {
      якщо а.дані[п] != б.дані[п] {
        вернути ні;
      }
      п += 1;
    }
    вернути так;
  }

  дія перевірити_чи_ю32_рівні(а: ю32, б: ю32) -> логічне {
    якщо а.розмір != б.розмір {
      вернути ні;
    }
    змінна п: природне = 0;
    поки п < а.розмір {
      якщо а.дані[п] != б.дані[п] {
        вернути ні;
      }
      п += 1;
    }
    вернути так;
  }

  дія перевірити_чи_кд_рівні(а: кд, б: кд) -> логічне {
    якщо а.розмір != б.розмір {
      вернути ні;
    }
    змінна п: природне = 0;
    поки п < а.розмір {
      якщо а.дані[п] != б.дані[п] {
        вернути ні;
      }
      п += 1;
    }
    вернути так;
  }

  дія перекодувати_в_ю8(система: *Система, вхід: кд, з_нульовим_байтом_в_кінці: логічне, вихід: *ю8, вихід_позиції_помилки: *природне) -> логічне {
    змінна дані_виходу = виділити<п8>(система, вхід.розмір * 4 + 1);
    змінна розмір_виходу: природне = 0;
    змінна п: природне = 0;
    поки п < вхід.розмір {
      змінна перший_байт = вхід.дані[п];
      змінна розмір_символа = дізнатись_розмір_символа_кд(перший_байт);
      якщо розмір_символа == 1 {
        змінна символ_ю8_0: п8 = 0;
        змінна символ_ю8_1: п8 = 0;
        змінна символ_ю8_2: п8 = 0;
        змінна символ_ю8_3: п8 = 0;
        змінна символ_ю8_розмір: п8 = 0;
        змінна успіх_отримання_ю8_з_т32 = отримати_символ_ю8_з_т32(п32(перший_байт), символ_ю8_0::адреса, символ_ю8_1::адреса, символ_ю8_2::адреса, символ_ю8_3::адреса, символ_ю8_розмір::адреса);
        якщо не успіх_отримання_ю8_з_т32 {
          вернути ні;
        }
        якщо символ_ю8_розмір == 1 {
          дані_виходу[розмір_виходу] = символ_ю8_0;
          розмір_виходу += 1;
        } інакше якщо символ_ю8_розмір == 2 {
          дані_виходу[розмір_виходу] = символ_ю8_0;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_ю8_1;
          розмір_виходу += 1;
        } інакше якщо символ_ю8_розмір == 3 {
          дані_виходу[розмір_виходу] = символ_ю8_0;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_ю8_1;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_ю8_2;
          розмір_виходу += 1;
        } інакше якщо символ_ю8_розмір == 4 {
          дані_виходу[розмір_виходу] = символ_ю8_0;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_ю8_1;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_ю8_3;
          розмір_виходу += 1;
        }
      } інакше якщо розмір_символа == 2 {
        п += 1;
        змінна другий_байт = вхід.дані[п];
        змінна символ_т16 = п16((п16(перший_байт & 31) << 6) | п16(другий_байт & 63));
        змінна символ_ю8_0: п8 = 0;
        змінна символ_ю8_1: п8 = 0;
        змінна символ_ю8_2: п8 = 0;
        змінна символ_ю8_3: п8 = 0;
        змінна символ_ю8_розмір: п8 = 0;
        змінна успіх_отримання_ю8_з_т32 = отримати_символ_ю8_з_т32(п32(символ_т16), символ_ю8_0::адреса, символ_ю8_1::адреса, символ_ю8_2::адреса, символ_ю8_3::адреса, символ_ю8_розмір::адреса);
        якщо не успіх_отримання_ю8_з_т32 {
          вернути ні;
        }
        якщо символ_ю8_розмір == 1 {
          дані_виходу[розмір_виходу] = символ_ю8_0;
          розмір_виходу += 1;
        } інакше якщо символ_ю8_розмір == 2 {
          дані_виходу[розмір_виходу] = символ_ю8_0;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_ю8_1;
          розмір_виходу += 1;
        } інакше якщо символ_ю8_розмір == 3 {
          дані_виходу[розмір_виходу] = символ_ю8_0;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_ю8_1;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_ю8_2;
          розмір_виходу += 1;
        } інакше якщо символ_ю8_розмір == 4 {
          дані_виходу[розмір_виходу] = символ_ю8_0;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_ю8_1;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_ю8_3;
          розмір_виходу += 1;
        }
      } інакше якщо розмір_символа == 3 {
        п += 1;
        змінна другий_байт = вхід.дані[п];
        п += 1;
        змінна третій_байт = вхід.дані[п];
        змінна символ_т32 = п32((п32(перший_байт & 15) << 12) | (п32(другий_байт & 63) << 6) | п32(третій_байт & 63));
        змінна символ_ю8_0: п8 = 0;
        змінна символ_ю8_1: п8 = 0;
        змінна символ_ю8_2: п8 = 0;
        змінна символ_ю8_3: п8 = 0;
        змінна символ_ю8_розмір: п8 = 0;
        змінна успіх_отримання_ю8_з_т32 = отримати_символ_ю8_з_т32(символ_т32, символ_ю8_0::адреса, символ_ю8_1::адреса, символ_ю8_2::адреса, символ_ю8_3::адреса, символ_ю8_розмір::адреса);
        якщо не успіх_отримання_ю8_з_т32 {
          вернути ні;
        }
        якщо символ_ю8_розмір == 1 {
          дані_виходу[розмір_виходу] = символ_ю8_0;
          розмір_виходу += 1;
        } інакше якщо символ_ю8_розмір == 2 {
          дані_виходу[розмір_виходу] = символ_ю8_0;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_ю8_1;
          розмір_виходу += 1;
        } інакше якщо символ_ю8_розмір == 3 {
          дані_виходу[розмір_виходу] = символ_ю8_0;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_ю8_1;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_ю8_2;
          розмір_виходу += 1;
        } інакше якщо символ_ю8_розмір == 4 {
          дані_виходу[розмір_виходу] = символ_ю8_0;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_ю8_1;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_ю8_3;
          розмір_виходу += 1;
        }
      } інакше {
        вернути ні;
      }
      п += 1;
    }
    якщо з_нульовим_байтом_в_кінці {
      дані_виходу[розмір_виходу] = 0;
    }
    вихід::вміст = ю8 {
      дані_виходу,
      розмір_виходу,
    };
    вернути так;
  }

  дія перекодувати_з_ю8_з_місцезнаходженнями(система: *Система, вхід: ю8, екранувати_невідомі: логічне, з_нульовим_байтом_в_кінці: логічне, вихід: *кд, вихід_місцезнаходжень: *Місцезнаходження, вихід_позиції_помилки: *природне) -> логічне {
    змінна місцезнаходження = Місцезнаходження {
      0,
      виділити<п32>(система, вхід.розмір),
      вхід.розмір
    };

    змінна дані_виходу = виділити<п8>(система, вхід.розмір * 4 + 1);
    змінна розмір_виходу: природне = 0;

    змінна п: природне = 0;

    поки п < вхід.розмір {
      змінна перший_байт = вхід.дані[п];
      змінна розмір_символа = дізнатись_розмір_символа_ю8(перший_байт);
      якщо розмір_символа == 1 {
        змінна символ_кд_0: п8 = 0;
        змінна символ_кд_1: п8 = 0;
        змінна символ_кд_2: п8 = 0;
        змінна символ_кд_3: п8 = 0;
        змінна символ_кд_розмір: п8 = 0;
        змінна успіх_отримання_кд_з_ю32 = отримати_символ_кд_з_ю32(п32(перший_байт), символ_кд_0::адреса, символ_кд_1::адреса, символ_кд_2::адреса, символ_кд_3::адреса, символ_кд_розмір::адреса);
        якщо не успіх_отримання_кд_з_ю32 {
          якщо екранувати_невідомі {
            // потім: втілити
          }
          звільнити(система, дані_виходу);
          якщо вихід_позиції_помилки != пусто {
            вихід_позиції_помилки::вміст = п;
          }
          вернути ні;
        }
        якщо символ_кд_розмір == 1 {
          дані_виходу[розмір_виходу] = символ_кд_0;
          розмір_виходу += 1;
          покласти_в_місцезнаходження(система, місцезнаходження::адреса, п32(п));
        } інакше якщо символ_кд_розмір == 2 {
          дані_виходу[розмір_виходу] = символ_кд_0;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_кд_1;
          розмір_виходу += 1;
          покласти_в_місцезнаходження(система, місцезнаходження::адреса, п32(п));
        } інакше якщо символ_кд_розмір == 3 {
          дані_виходу[розмір_виходу] = символ_кд_0;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_кд_1;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_кд_2;
          розмір_виходу += 1;
          покласти_в_місцезнаходження(система, місцезнаходження::адреса, п32(п));
        } інакше якщо символ_кд_розмір == 4 {
          дані_виходу[розмір_виходу] = символ_кд_0;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_кд_1;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_кд_3;
          розмір_виходу += 1;
          покласти_в_місцезнаходження(система, місцезнаходження::адреса, п32(п));
        }
      } інакше якщо розмір_символа == 2 {
        п += 1;
        змінна другий_байт = вхід.дані[п];
        змінна символ_ю16 = п16((п16(перший_байт & 31) << 6) | п16(другий_байт & 63));
        змінна символ_кд_0: п8 = 0;
        змінна символ_кд_1: п8 = 0;
        змінна символ_кд_2: п8 = 0;
        змінна символ_кд_3: п8 = 0;
        змінна символ_кд_розмір: п8 = 0;
        змінна успіх_отримання_кд_з_ю32 = отримати_символ_кд_з_ю32(п32(символ_ю16), символ_кд_0::адреса, символ_кд_1::адреса, символ_кд_2::адреса, символ_кд_3::адреса, символ_кд_розмір::адреса);
        якщо не успіх_отримання_кд_з_ю32 {
          якщо екранувати_невідомі {
            // потім: втілити
          }
          звільнити(система, дані_виходу);
          якщо вихід_позиції_помилки != пусто {
            вихід_позиції_помилки::вміст = п - 1;
          }
          вернути ні;
        }
        якщо символ_кд_розмір == 1 {
          дані_виходу[розмір_виходу] = символ_кд_0;
          розмір_виходу += 1;
          покласти_в_місцезнаходження(система, місцезнаходження::адреса, п32(п - 1));
        } інакше якщо символ_кд_розмір == 2 {
          дані_виходу[розмір_виходу] = символ_кд_0;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_кд_1;
          розмір_виходу += 1;
          покласти_в_місцезнаходження(система, місцезнаходження::адреса, п32(п - 1));
        } інакше якщо символ_кд_розмір == 3 {
          дані_виходу[розмір_виходу] = символ_кд_0;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_кд_1;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_кд_2;
          розмір_виходу += 1;
          покласти_в_місцезнаходження(система, місцезнаходження::адреса, п32(п - 1));
        } інакше якщо символ_кд_розмір == 4 {
          дані_виходу[розмір_виходу] = символ_кд_0;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_кд_1;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_кд_3;
          розмір_виходу += 1;
          покласти_в_місцезнаходження(система, місцезнаходження::адреса, п32(п - 1));
        }
      } інакше якщо розмір_символа == 3 {
        п += 1;
        змінна другий_байт = вхід.дані[п];
        п += 1;
        змінна третій_байт = вхід.дані[п];
        змінна символ_ю32 = п32((п32(перший_байт & 15) << 12) | (п32(другий_байт & 63) << 6) | п32(третій_байт & 63));
        змінна символ_кд_0: п8 = 0;
        змінна символ_кд_1: п8 = 0;
        змінна символ_кд_2: п8 = 0;
        змінна символ_кд_3: п8 = 0;
        змінна символ_кд_розмір: п8 = 0;
        змінна успіх_отримання_кд_з_ю32 = отримати_символ_кд_з_ю32(символ_ю32, символ_кд_0::адреса, символ_кд_1::адреса, символ_кд_2::адреса, символ_кд_3::адреса, символ_кд_розмір::адреса);
        якщо не успіх_отримання_кд_з_ю32 {
          якщо екранувати_невідомі {
            // потім: втілити
          }
          звільнити(система, дані_виходу);
          якщо вихід_позиції_помилки != пусто {
            вихід_позиції_помилки::вміст = п - 2;
          }
          вернути ні;
        }
        якщо символ_кд_розмір == 1 {
          дані_виходу[розмір_виходу] = символ_кд_0;
          розмір_виходу += 1;
          покласти_в_місцезнаходження(система, місцезнаходження::адреса, п32(п - 2));
        } інакше якщо символ_кд_розмір == 2 {
          дані_виходу[розмір_виходу] = символ_кд_0;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_кд_1;
          розмір_виходу += 1;
          покласти_в_місцезнаходження(система, місцезнаходження::адреса, п32(п - 2));
        } інакше якщо символ_кд_розмір == 3 {
          дані_виходу[розмір_виходу] = символ_кд_0;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_кд_1;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_кд_2;
          розмір_виходу += 1;
          покласти_в_місцезнаходження(система, місцезнаходження::адреса, п32(п - 2));
        } інакше якщо символ_кд_розмір == 4 {
          дані_виходу[розмір_виходу] = символ_кд_0;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_кд_1;
          розмір_виходу += 1;
          дані_виходу[розмір_виходу] = символ_кд_3;
          розмір_виходу += 1;
          покласти_в_місцезнаходження(система, місцезнаходження::адреса, п32(п - 2));
        }
      } інакше {
        якщо екранувати_невідомі {
          // потім: втілити
        }
        звільнити(система, дані_виходу);
        якщо вихід_позиції_помилки != пусто {
          вихід_позиції_помилки::вміст = п;
        }
        вернути ні;
      }
      п += 1;
    }

    якщо з_нульовим_байтом_в_кінці {
      дані_виходу[розмір_виходу] = 0;
    }

    вихід::вміст = кд {
      дані_виходу,
      розмір_виходу,
    };

    вихід_місцезнаходжень::вміст = місцезнаходження;

    вернути так;
  }

  дія перекодувати_в_ю8_з_місцезнаходженнями(система: *Система, вхід: кд, з_нульовим_байтом_в_кінці: логічне, вихід: *ю8, вихід_місцезнаходжень: *Місцезнаходження, вихід_позиції_помилки: *природне) -> логічне {
    якщо вихід_позиції_помилки != пусто {
      вихід_позиції_помилки::вміст = 0;
    }
    вернути ні;
  }

  дія обробити_екранізації_в_кд(система: *Система, вхід: кд, з_нульовим_байтом_в_кінці: логічне, вихід: *кд) -> логічне {
    змінна розмір_виходу: природне = 0;
    змінна дані_виходу = виділити<п8>(система, вхід.розмір + 1);

    змінна п: природне = 0;

    поки п < вхід.розмір {
      змінна символ = вхід.дані[п];
      змінна розмір_символа = дізнатись_розмір_символа_кд(символ);

      якщо розмір_символа == 1 {
        якщо символ == символи::Обернена_похила {
          якщо (п + 1) < вхід.розмір {
            змінна наступний_символ = вхід.дані[п + 1];
            змінна розмір_наступного_символа = дізнатись_розмір_символа_кд(наступний_символ);

            якщо розмір_наступного_символа == 1 {
              якщо наступний_символ == символи::Обернена_похила {
                дані_виходу[розмір_виходу] = символи::Обернена_похила;
                розмір_виходу += 1;
                п += 1;
              } інакше якщо наступний_символ == символи::Дволапка {
                дані_виходу[розмір_виходу] = символи::Дволапка;
                розмір_виходу += 1;
                п += 1;
              } інакше якщо наступний_символ == символи::Однолапка {
                дані_виходу[розмір_виходу] = символи::Однолапка;
                розмір_виходу += 1;
                п += 1;
              } інакше якщо наступний_символ == символи::Мала_буква_р {
                дані_виходу[розмір_виходу] = символи::Міжряд;
                розмір_виходу += 1;
                п += 1;
              } інакше {
                дані_виходу[розмір_виходу] = вхід.дані[п];
                розмір_виходу += 1;
              }
            } інакше {
              дані_виходу[розмір_виходу] = вхід.дані[п];
              розмір_виходу += 1;
            }
          } інакше {
            дані_виходу[розмір_виходу] = вхід.дані[п];
            розмір_виходу += 1;
          }
        } інакше {
          дані_виходу[розмір_виходу] = вхід.дані[п];
          розмір_виходу += 1;
        }
      } інакше якщо розмір_символа == 2 {
        дані_виходу[розмір_виходу] = вхід.дані[п];
        розмір_виходу += 1;
        п += 1;
        дані_виходу[розмір_виходу] = вхід.дані[п];
        розмір_виходу += 1;
      } інакше якщо розмір_символа == 3 {
        дані_виходу[розмір_виходу] = вхід.дані[п];
        розмір_виходу += 1;
        п += 1;
        дані_виходу[розмір_виходу] = вхід.дані[п];
        розмір_виходу += 1;
        п += 1;
        дані_виходу[розмір_виходу] = вхід.дані[п];
        розмір_виходу += 1;
      } інакше якщо розмір_символа == 4 {
        дані_виходу[розмір_виходу] = вхід.дані[п];
        розмір_виходу += 1;
        п += 1;
        дані_виходу[розмір_виходу] = вхід.дані[п];
        розмір_виходу += 1;
        п += 1;
        дані_виходу[розмір_виходу] = вхід.дані[п];
        розмір_виходу += 1;
        п += 1;
        дані_виходу[розмір_виходу] = вхід.дані[п];
        розмір_виходу += 1;
      }

      п += 1;
    }

    якщо з_нульовим_байтом_в_кінці {
      дані_виходу[розмір_виходу] = 0;
    }

    вихід::вміст = кд {
      дані_виходу,
      розмір_виходу,
    };

    вернути так;

  }

  дія обробити_екранізації_в_ю8(система: *Система, вхід: ю8, з_нульовим_байтом_в_кінці: логічне, вихід: *ю8) -> логічне {
    змінна розмір_виходу: природне = 0;
    змінна дані_виходу = виділити<п8>(система, вхід.розмір);

    змінна п: природне = 0;

    поки п < вхід.розмір {
      змінна символ = вхід.дані[п];
      змінна розмір_символа = дізнатись_розмір_символа_ю8(символ);

      якщо розмір_символа == 1 {
        якщо символ == відповідні_символи_юнікоду::Обернена_похила {
          якщо (п + 1) < вхід.розмір {
            змінна наступний_символ = вхід.дані[п + 1];
            змінна розмір_наступного_символа = дізнатись_розмір_символа_ю8(наступний_символ);

            якщо розмір_наступного_символа == 1 {
              якщо наступний_символ == відповідні_символи_юнікоду::Обернена_похила {
                дані_виходу[розмір_виходу] = відповідні_символи_юнікоду::Обернена_похила;
                розмір_виходу += 1;
                п += 1;
              } інакше якщо наступний_символ == відповідні_символи_юнікоду::Дволапка {
                дані_виходу[розмір_виходу] = відповідні_символи_юнікоду::Дволапка;
                розмір_виходу += 1;
                п += 1;
              } інакше якщо наступний_символ == відповідні_символи_юнікоду::Однолапка {
                дані_виходу[розмір_виходу] = відповідні_символи_юнікоду::Однолапка;
                розмір_виходу += 1;
                п += 1;
              } інакше якщо наступний_символ == 110 {
                дані_виходу[розмір_виходу] = відповідні_символи_юнікоду::Міжряд;
                розмір_виходу += 1;
                п += 1;
              } інакше {
                дані_виходу[розмір_виходу] = вхід.дані[п];
                розмір_виходу += 1;
              }
            } інакше якщо розмір_наступного_символа == 2 {
              якщо (п + 2) < вхід.розмір {
                // р
                якщо вхід.дані[п + 1] == 209 {
                  якщо вхід.дані[п + 2] == 128 {
                    дані_виходу[розмір_виходу] = відповідні_символи_юнікоду::Міжряд;
                    розмір_виходу += 1;
                    п += 1;
                    п += 1;
                  } інакше {
                    дані_виходу[розмір_виходу] = вхід.дані[п];
                    розмір_виходу += 1;
                  }
                } інакше {
                  дані_виходу[розмір_виходу] = вхід.дані[п];
                  розмір_виходу += 1;
                }
              } інакше {
                дані_виходу[розмір_виходу] = вхід.дані[п];
                розмір_виходу += 1;
              }
            } інакше {
              дані_виходу[розмір_виходу] = вхід.дані[п];
              розмір_виходу += 1;
            }
          } інакше {
            дані_виходу[розмір_виходу] = вхід.дані[п];
            розмір_виходу += 1;
          }
        } інакше {
          дані_виходу[розмір_виходу] = вхід.дані[п];
          розмір_виходу += 1;
        }
      } інакше якщо розмір_символа == 2 {
        дані_виходу[розмір_виходу] = вхід.дані[п];
        розмір_виходу += 1;
        п += 1;
        дані_виходу[розмір_виходу] = вхід.дані[п];
        розмір_виходу += 1;
      } інакше якщо розмір_символа == 3 {
        дані_виходу[розмір_виходу] = вхід.дані[п];
        розмір_виходу += 1;
        п += 1;
        дані_виходу[розмір_виходу] = вхід.дані[п];
        розмір_виходу += 1;
        п += 1;
        дані_виходу[розмір_виходу] = вхід.дані[п];
        розмір_виходу += 1;
      } інакше якщо розмір_символа == 4 {
        дані_виходу[розмір_виходу] = вхід.дані[п];
        розмір_виходу += 1;
        п += 1;
        дані_виходу[розмір_виходу] = вхід.дані[п];
        розмір_виходу += 1;
        п += 1;
        дані_виходу[розмір_виходу] = вхід.дані[п];
        розмір_виходу += 1;
        п += 1;
        дані_виходу[розмір_виходу] = вхід.дані[п];
        розмір_виходу += 1;
      }

      п += 1;
    }

    вихід::вміст = ю8 {
      дані_виходу,
      розмір_виходу,
    };

    вернути так;
  }

  дія дізнатись_розмір_символа_кд(перший_байт: п8) -> п8 {
    якщо (перший_байт & 128) == 0 {
      вернути 1;
    }
    якщо (перший_байт & 224) == 192 {
      вернути 2;
    }
    якщо (перший_байт & 240) == 224 {
      вернути 3;
    }
    якщо (перший_байт & 248) == 240 {
      вернути 4;
    }
    вернути 0;
  }

  дія дізнатись_розмір_символа_ю8(перший_байт: п8) -> п8 {
    якщо (перший_байт & 128) == 0 {
      вернути 1;
    }
    якщо (перший_байт & 224) == 192 {
      вернути 2;
    }
    якщо (перший_байт & 240) == 224 {
      вернути 3;
    }
    якщо (перший_байт & 248) == 240 {
      вернути 4;
    }
    вернути 0;
  }
}