% Handle batch mode
  % to overcome problems with too many open files
  \let\mypdfximage\pdfximage\def\pdfximage{\immediate\mypdfximage}
  % Set document class depending on configuration
  \documentclass[twoside]{book}
  %% moved from doxygen.sty due to workaround for LaTex 2019 version and unmaintained tabu package
  \usepackage{ifthen}
  \ifx\requestedLaTeXdate\undefined
    \usepackage{array}
  \else
    \usepackage{array}[=2016-10-06]
  \fi
  %%
  % Packages required by doxygen
  \usepackage{fixltx2e} % for \textsubscript
  \usepackage{doxygen}
  \usepackage{graphicx}
  \usepackage[utf8]{inputenc}
  \usepackage{makeidx}
  \PassOptionsToPackage{warn}{textcomp}
  \usepackage{textcomp}
  \usepackage[nointegrals]{wasysym}
  \usepackage{ifxetex}
  % NLS support packages
  % Define default fonts
  % Font selection
  \usepackage[T1]{fontenc}
  % set main and monospaced font
  \usepackage[scaled=.90]{helvet}
\usepackage{courier}
\renewcommand{\familydefault}{\sfdefault}
  \usepackage{sectsty}
  \allsectionsfont{%
    \fontseries{bc}\selectfont%
    \color{darkgray}%
  }
  \renewcommand{\DoxyLabelFont}{%
    \fontseries{bc}\selectfont%
    \color{darkgray}%
  }
  \newcommand{\+}{\discretionary{\mbox{\scriptsize$\hookleftarrow$}}{}{}}
   % Arguments of doxygenemoji:
   % 1) ':<text>:' form of the emoji, already LaTeX-escaped
   % 2) file with the name of the emoji without the .png extension
   % in case image exist use this otherwise use the ':<text>:' form
   \newcommand{\doxygenemoji}[2]{%
     \IfFileExists{./#2.png}{\raisebox{-0.1em}{\includegraphics[height=0.9em]{./#2.png}}}{#1}%
   }
  % Page & text layout
  \usepackage{geometry}
  \geometry{%
    a4paper,%
    top=2.5cm,%
    bottom=2.5cm,%
    left=2.5cm,%
    right=2.5cm%
  }
  % Allow a bit of overflow to go unnoticed by other means
  \tolerance=750
  \hfuzz=15pt
  \hbadness=750
  \setlength{\emergencystretch}{15pt}
  \setlength{\parindent}{0cm}
  \newcommand{\doxynormalparskip}{\setlength{\parskip}{3ex plus 2ex minus 2ex}}
  \newcommand{\doxytocparskip}{\setlength{\parskip}{1ex plus 0ex minus 0ex}}
  \doxynormalparskip
  % Redefine paragraph/subparagraph environments, using sectsty fonts
  \makeatletter
  \renewcommand{\paragraph}{%
    \@startsection{paragraph}{4}{0ex}{-1.0ex}{1.0ex}{%
      \normalfont\normalsize\bfseries\SS@parafont%
    }%
  }
  \renewcommand{\subparagraph}{%
    \@startsection{subparagraph}{5}{0ex}{-1.0ex}{1.0ex}{%
      \normalfont\normalsize\bfseries\SS@subparafont%
    }%
  }
  \makeatother
  \makeatletter
  \newcommand\hrulefilll{\leavevmode\leaders\hrule\hskip 0pt plus 1filll\kern\z@}
  \makeatother
  % Headers & footers
  \usepackage{fancyhdr}
  \pagestyle{fancyplain}
  \renewcommand{\footrulewidth}{0.4pt}
  \fancypagestyle{fancyplain}{
    \fancyhf{}
    \fancyhead[LE, RO]{\bfseries\thepage}
    \fancyhead[LO]{\bfseries\rightmark}
    \fancyhead[RE]{\bfseries\leftmark}
    \fancyfoot[LO, RE]{\bfseries\scriptsize Generated by Doxygen }
  }
  \fancypagestyle{plain}{
    \fancyhf{}
    \fancyfoot[LO, RE]{\bfseries\scriptsize Generated by Doxygen }
    \renewcommand{\headrulewidth}{0pt}
  }
  \pagestyle{fancyplain}
  \renewcommand{\chaptermark}[1]{%
    \markboth{#1}{}%
  }
  \renewcommand{\sectionmark}[1]{%
    \markright{\thesection\ #1}%
  }
  % ToC, LoF, LoT, bibliography, and index
  % Indices & bibliography
  \usepackage{natbib}
  \usepackage[titles]{tocloft}
  \setcounter{tocdepth}{3}
  \setcounter{secnumdepth}{5}
  % creating indexes
  \makeindex
  \usepackage{newunicodechar}
  \newunicodechar{⁻}{${}^{-}$}% Superscript minus
  \newunicodechar{²}{${}^{2}$}% Superscript two
  \newunicodechar{³}{${}^{3}$}% Superscript three
  % Hyperlinks
  % Custom commands used by the header
  % Custom commands
  \newcommand{\clearemptydoublepage}{%
    \newpage{\pagestyle{empty}\cleardoublepage}%
  }
  % caption style definition
  \usepackage{caption}
  \captionsetup{labelsep=space,justification=centering,font={bf},singlelinecheck=off,skip=4pt,position=top}
  % in page table of contents
  \usepackage{etoc}
  \etocsettocstyle{\doxytocparskip}{\doxynormalparskip}
  % prevent numbers overlap the titles in toc
  \renewcommand{\numberline}[1]{#1~}
% End of preamble, now comes the document contents
%===== C O N T E N T S =====
\begin{document}
  \raggedbottom
  % Titlepage & ToC
  \pagenumbering{alph}
  \begin{titlepage}
  \vspace*{7cm}
  \begin{center}%
  {\Large libosmo-\/sigtran}\\
  \vspace*{1cm}
  {\large Generated by Doxygen 1.9.4}\\
  \end{center}
  \end{titlepage}
  \clearemptydoublepage
  \pagenumbering{roman}
  \tableofcontents
  \clearemptydoublepage
  \pagenumbering{arabic}
%--- Begin generated contents ---
\chapter{Data Structure Index}
\input{annotated}
\chapter{File Index}
\input{files}
\chapter{Data Structure Documentation}
\input{structipa__asp__fsm__priv}
\input{structlm__fsm__priv}
\input{structm3ua__data__hdr}
\input{structosmo__mtp__pause__param}
\input{structosmo__mtp__prim}
\input{structosmo__mtp__resume__param}
\input{structosmo__mtp__status__param}
\input{structosmo__mtp__transfer__param}
\input{structosmo__sccp__addr}
\input{structosmo__sccp__addr__entry}
\input{structosmo__sccp__gt}
\input{structosmo__sccp__instance}
\input{structosmo__sccp__user}
\input{structosmo__scu__connect__param}
\input{structosmo__scu__data__param}
\input{structosmo__scu__disconn__param}
\input{structosmo__scu__notice__param}
\input{structosmo__scu__pcstate__param}
\input{structosmo__scu__prim}
\input{structosmo__scu__reset__param}
\input{structosmo__scu__state__param}
\input{structosmo__scu__unitdata__param}
\input{structosmo__ss7__as}
\input{structosmo__ss7__asp}
\input{structosmo__ss7__asp__peer}
\input{structosmo__ss7__instance}
\input{structosmo__ss7__link}
\input{structosmo__ss7__linkset}
\input{structosmo__ss7__pc__fmt}
\input{structosmo__ss7__route}
\input{structosmo__ss7__route__table}
\input{structosmo__ss7__routing__key}
\input{structosmo__ss7__user}
\input{structosmo__xlm__prim}
\input{structosmo__xlm__prim__error}
\input{structosmo__xlm__prim__notify}
\input{structosmo__xlm__prim__rk__dereg}
\input{structosmo__xlm__prim__rk__reg}
\input{structosmo__xua__layer__manager}
\input{structosmo__xua__server}
\input{structsccp__connection}
\input{structsccp__scmg__msg}
\input{structxua__as__event__asp__inactive__ind__pars}
\input{structxua__as__fsm__priv}
\input{structxua__asp__fsm__priv}
\input{structxua__common__hdr}
\input{structxua__dialect}
\input{structxua__msg}
\input{structxua__msg__class}
\input{structxua__msg__event__map}
\input{structxua__msg__part}
\input{structxua__parameter__hdr}
\chapter{File Documentation}
\input{mtp__sap_8h}
\input{mtp__sap_8h_source}
\input{osmo__ss7_8h}
\input{osmo__ss7_8h_source}
\input{m2ua_8h}
\input{m2ua_8h_source}
\input{m3ua_8h}
\input{m3ua_8h_source}
\input{mtp_8h}
\input{mtp_8h_source}
\input{sccp__scmg_8h}
\input{sccp__scmg_8h_source}
\input{sua_8h}
\input{sua_8h_source}
\input{sccp__helpers_8h}
\input{sccp__helpers_8h_source}
\input{sccp__sap_8h}
\input{sccp__sap_8h_source}
\input{sigtran__sap_8h}
\input{sigtran__sap_8h_source}
\input{include_2osmocom_2sigtran_2xua__msg_8h}
\input{include_2osmocom_2sigtran_2xua__msg_8h_source}
\input{src_2xua__msg_8h}
\input{src_2xua__msg_8h_source}
\input{ipa_8c}
\input{m3ua_8c}
\input{osmo__ss7_8c}
\input{osmo__ss7__as_8c}
\input{osmo__ss7__asp_8c}
\input{osmo__ss7__asp__peer_8c}
\input{osmo__ss7__hmrt_8c}
\input{osmo__ss7__instance_8c}
\input{osmo__ss7__link_8c}
\input{osmo__ss7__linkset_8c}
\input{osmo__ss7__route_8c}
\input{osmo__ss7__route__table_8c}
\input{osmo__ss7__user_8c}
\input{osmo__ss7__vty_8c}
\input{osmo__ss7__xua__srv_8c}
\input{sccp2sua_8c}
\input{sccp__helpers_8c}
\input{sccp__internal_8h}
\input{sccp__internal_8h_source}
\input{sccp__lbcs_8c}
\input{sccp__sap_8c}
\input{sccp__sclc_8c}
\input{sccp__scmg_8c}
\input{sccp__scoc_8c}
\input{sccp__scrc_8c}
\input{sccp__types_8c}
\input{sccp__user_8c}
\input{sccp__vty_8c}
\input{ss7__as_8h}
\input{ss7__as_8h_source}
\input{ss7__asp_8h}
\input{ss7__asp_8h_source}
\input{ss7__asp__peer_8h}
\input{ss7__asp__peer_8h_source}
\input{ss7__instance_8h}
\input{ss7__instance_8h_source}
\input{ss7__internal_8h}
\input{ss7__internal_8h_source}
\input{ss7__link_8h}
\input{ss7__link_8h_source}
\input{ss7__linkset_8h}
\input{ss7__linkset_8h_source}
\input{ss7__route_8h}
\input{ss7__route_8h_source}
\input{ss7__route__table_8h}
\input{ss7__route__table_8h_source}
\input{ss7__user_8h}
\input{ss7__user_8h_source}
\input{ss7__xua__srv_8h}
\input{ss7__xua__srv_8h_source}
\input{sua_8c}
\input{xua__as__fsm_8c}
\input{xua__as__fsm_8h}
\input{xua__as__fsm_8h_source}
\input{xua__asp__fsm_8c}
\input{xua__asp__fsm_8h}
\input{xua__asp__fsm_8h_source}
\input{xua__default__lm__fsm_8c}
\input{xua__internal_8h}
\input{xua__internal_8h_source}
\input{xua__msg_8c}
\input{xua__rkm_8c}
\input{xua__shared_8c}
\input{xua__snm_8c}
\input{xua__types_8h}
\input{xua__types_8h_source}
%--- End generated contents ---
% Index
  \backmatter
  \newpage
  \phantomsection
  \clearemptydoublepage
  \addcontentsline{toc}{chapter}{\indexname}
  \printindex
% Required for some languages (in combination with latexdocumentpre from the header)
\end{document}