%%
%% This is file `hyperref.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% hyperref.dtx  (with options: `package')
%% hyperref-linktarget.dtx  (with options: `package,package-include')
%% hyperref.dtx  (with options: `packageEnd')
%% 
%% Copyright
%% 1995-2001 Sebastian Rahtz, with portions written by David Carlisle and Heiko Oberdiek
%% 2001-2015 Heiko Oberdiek
%% 2016-2019 Oberdiek Package Support Group
%% 2019-2024 LaTeX Project
%%      https://github.com/latex3/hyperref/issues
%% 
%% This file is part of the `Hyperref Bundle'.
%% -------------------------------------------
%% 
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%%   http://www.latex-project.org/lppl.txt
%% and version 1.3 or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
%% 
%% This work has the LPPL maintenance status `maintained'.
%% 
%% The Current Maintainer of this work is the LaTeX Project.
%% 
%% The list of all files belonging to the `Hyperref Bundle' is
%% given in the file `manifest.txt'.
%% 
%% File: hyperref.dtx
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
\ProvidesPackage{hyperref}
  [2024-11-05 v7.01l %
  Hypertext links for LaTeX]
\begingroup
  \@makeother\`%
  \@makeother\=%
  \edef\x{%
    \edef\noexpand\x{%
      \endgroup
      \noexpand\toks@{%
        \catcode 96=\noexpand\the\catcode`\noexpand\`\relax
        \catcode 61=\noexpand\the\catcode`\noexpand\=\relax
      }%
    }%
    \noexpand\x
  }%
\x
\@makeother\`
\@makeother\=
\def\Hy@SetCatcodes{%
  \@makeother\`%
  \@makeother\=%
  \catcode`\$=3 %
  \catcode`\&=4 %
  \catcode`\^=7 %
  \catcode`\_=8 %
  \@makeother\|%
  \@makeother\:%
  \@makeother\(%
  \@makeother\)%
  \@makeother\[%
  \@makeother\]%
  \@makeother\/%
  \@makeother\!%
  \@makeother\<%
  \@makeother\>%
  \@makeother\.%
  \@makeother\;%
  \@makeother\+%
  \@makeother\-%
  \@makeother\"%
  \@makeother\'%
}
\begingroup
  \def\x#1{\catcode`\noexpand#1=\the\catcode`#1\relax}%
  \xdef\Hy@RestoreCatcodes{%
    \the\toks@
    \x\$%
    \x\&%
    \x\^%
    \x\_%
    \x\|%
    \x\:%
    \x\(%
    \x\)%
    \x\[%
    \x\]%
    \x\/%
    \x\!%
    \x\<%
    \x\>%
    \x\.%
    \x\;%
    \x\+%
    \x\-%
    \x\"%
    \x\'%
  }%
\endgroup
\Hy@SetCatcodes
\RequirePackage{iftex}[2019/10/24]
\RequirePackage{keyval}[1997/11/10]
\RequirePackage{kvsetkeys}[2007/09/29]
\RequirePackage{kvdefinekeys}[2011/04/07]
\RequirePackage{pdfescape}[2007/11/11]
\RequirePackage{hycolor}
\RequirePackage{nameref}[2012/07/28]
\RequirePackage{etoolbox}
\RequirePackage{stringenc}[2009/12/15]%
\def\Hy@Error{\PackageError{hyperref}}
\def\Hy@Warning{\PackageWarning{hyperref}}
\def\Hy@WarningNoLine{\PackageWarningNoLine{hyperref}}
\def\Hy@Info{\PackageInfo{hyperref}}
\def\Hy@InfoNoLine#1{\PackageInfo{hyperref}{#1\@gobble}}
\def\Hy@Message#1{%
  \GenericWarning{%
    (hyperref)\@spaces\@spaces\@spaces\@spaces
  }{%
    Package hyperref Message: #1\@gobble
  }%
}
\chardef\Hy@VersionChecked=0 %
\def\Hy@VersionCheck#1{%
  \begingroup
    \@ifundefined{ver@hyperref.sty}{%
      \Hy@Error{%
        This should not happen!\MessageBreak
        Missing hyperref version%
      }\@ehd
    }{%
      \@ifundefined{ver@#1}{%
        \Hy@Error{%
          This should not happen!\MessageBreak
          Missing version of `#1'%
        }\@ehd
      }{%
        \def\x##1##2##3{%
          \expandafter\expandafter\expandafter\Hy@@VersionCheck
          \expandafter\expandafter\expandafter##2%
          \csname ver@##3\endcsname##1##1\@nil
        }%
        \x{ }\y{hyperref.sty}%
        \x{ }\z{#1}%
        \ifx\y\z
        \else
          \edef\a{#1}%
          \edef\b{\HyOpt@CustomDriver.def}%
          \ifx\a\b
            \Hy@WarningNoLine{%
              Version mismatch (custom driver)!\MessageBreak
              * \y: hyperref.sty\MessageBreak
              * \z: \a
            }%
          \else
            \Hy@Error{%
              Version mismatch!\MessageBreak
              * \y: hyperref.sty\MessageBreak
              * \z: \a
            }\@ehd
          \fi
        \fi
      }%
    }%
  \endgroup
  \chardef\Hy@VersionChecked=1 %
}
\def\Hy@@VersionCheck #1#2 #3 #4\@nil{%
  \def#1{#2 #3}%
}
\edef\Hy@leftbracechar{\string{}
\edef\Hy@rightbracechar{\string}}
\@ifundefined{pdfmatch}{%
  \def\Hy@Match#1#2#3#4#5{}%
}{%
  \def\Hy@Match#1#2#3{%
    \begingroup
    \edef\^{\@backslashchar\string^}%
    \edef\.{\@backslashchar.}%
    \edef\[{\@backslashchar[}% ]]
    \edef\${\@backslashchar$}%
    \edef\({\@backslashchar(}%
    \edef\){\@backslashchar)}%
    \edef\|{\@backslashchar|}%
    \edef\*{\@backslashchar*}%
    \edef\+{\@backslashchar+}%
    \edef\?{\@backslashchar?}%
    \edef\{{\@backslashchar\Hy@leftbracechar}%
    \edef\}{\Hy@rightbracechar}%
    \edef\\{\@backslashchar\@backslashchar}%
    \let\ \Hy@space
    \ifcase\pdfmatch#2{#3}{#1} %
      \endgroup
      \expandafter\@secondoftwo
    \or
      \endgroup
      \expandafter\@firstoftwo
    \else
      \Hy@Warning{%
        Internal error: Wrong pattern!\MessageBreak
        --> #3 <--\MessageBreak
        Pattern check ignored%
      }%
      \endgroup
      \expandafter\@firstoftwo
    \fi
  }%
}
\@ifundefined{AfterBeginDocument}{%
  \def\AfterBeginDocument{\AtBeginDocument}%
}{}%
\ExplSyntaxOn
\let\Hy@LocalAppendToMacro\tl_put_right:Nn
\let\Hy@GlobalAppendToMacro\tl_gput_right:Nn
\let\Hy@ifempty\tl_if_empty:nTF
\ExplSyntaxOff
\def\Hy@AtBeginDocument{%
  \Hy@LocalAppendToMacro\Hy@AtBeginDocumentHook
}
\def\Hy@AtEndOfPackage{%
  \Hy@LocalAppendToMacro\Hy@AtEndOfPackageHook
}
\let\Hy@AtBeginDocumentHook\@empty
\let\Hy@AtEndOfPackageHook\@empty
\AtEndOfPackage{%
  \Hy@AtEndOfPackageHook
  \let\Hy@AtEndOfPackageHook\@undefined
  \AfterBeginDocument{%
    \Hy@AtBeginDocumentHook{}%
    \let\Hy@AtBeginDocumentHook\@undefined
  }%
}
\RequirePackage{kvoptions}[2009/07/21]
\newif\ifHy@stoppedearly
\newif\ifHy@typexml
\newif\ifHy@activeanchor
\newif\ifHy@backref
\newif\ifHy@bookmarks
\newif\ifHy@bookmarksnumbered
\newif\ifHy@bookmarksopen
\newif\ifHy@breaklinks
\newif\ifHy@pdfcenterwindow
\newif\ifHy@CJKbookmarks
\newif\ifHy@colorlinks
\newif\ifHy@destlabel
\newif\ifHy@draft
\let\Hy@finaltrue\Hy@draftfalse
\let\Hy@finalfalse\Hy@drafttrue
\newif\ifHy@pdfescapeform
\newif\ifHy@hyperfigures
\newif\ifHy@pdffitwindow
\newif\ifHy@frenchlinks
\newif\ifHy@hyperfootnotes
\newif\ifHy@hyperindex
\newif\ifHy@hypertexnames
\newif\ifHy@implicit
\newif\ifHy@linktocpage
\newif\ifHy@localanchorname
\newif\ifHy@pdfmenubar
\newif\ifHy@naturalnames
\newif\ifHy@nesting
\newif\ifHy@pdfnewwindowset
\newif\ifHy@pdfnewwindow
\newif\ifHy@ocgcolorlinks
\newif\ifHy@pageanchor
\newif\ifHy@pdfpagelabels
\newif\ifHy@pdfstring
\newif\ifHy@plainpages
\newif\ifHy@psize
\newif\ifHy@raiselinks
\newif\ifHy@seminarslides
\newif\ifHy@setpagesize
\newif\ifHy@texht
\newif\ifHy@psdextra
\newif\ifHy@pdftoolbar
\newif\ifHy@unicode
\newif\ifHy@pdfusetitle
\newif\ifHy@verbose
\let\Hy@debugtrue\Hy@verbosetrue
\let\Hy@debugfalse\Hy@verbosefalse
\newif\ifHy@pdfwindowui
\newif\ifHy@pdfdisplaydoctitle
\newif\ifHy@pdfa
\Hy@backreffalse
\Hy@bookmarksnumberedfalse
\Hy@bookmarksopenfalse
\Hy@bookmarkstrue
\Hy@breaklinksfalse
\Hy@pdfcenterwindowfalse
\Hy@CJKbookmarksfalse
\Hy@destlabelfalse
\Hy@pdfescapeformfalse
\Hy@hyperfiguresfalse
\Hy@pdffitwindowfalse
\Hy@hyperfootnotestrue
\Hy@hyperindextrue
\Hy@hypertexnamestrue
\Hy@implicittrue
\Hy@linktocpagefalse
\Hy@localanchornamefalse
\Hy@pdfmenubartrue
\Hy@naturalnamesfalse
\Hy@nestingfalse
\Hy@pdfnewwindowsetfalse
\Hy@pdfnewwindowfalse
\Hy@pageanchortrue
\Hy@pdfpagelabelstrue
\Hy@pdfstringfalse
\Hy@plainpagesfalse
\Hy@raiselinksfalse
\Hy@setpagesizetrue
\Hy@texhtfalse
\Hy@psdextrafalse
\Hy@pdftoolbartrue
\Hy@unicodetrue
\ifx\kanjiskip\@undefined
\else
  \ifx\forcecjktoken\@undefined
   \Hy@unicodefalse
  \fi
\fi
\Hy@pdfusetitlefalse
\Hy@verbosefalse
\Hy@pdfwindowuitrue
\Hy@pdfdisplaydoctitlefalse
\Hy@pdfafalse
\def\Hy@StepCount#1{\advance#1 by 1 }%
\def\Hy@GlobalStepCount#1{\global\advance#1 by 1 }%
\newdimen\@linkdim
\let\Hy@driver\@empty
\let\MaybeStopEarly\relax
\newcount\Hy@linkcounter
\newcount\Hy@pagecounter
\Hy@linkcounter0
\Hy@pagecounter0
\def\Hy@space{ }
\let\Hy@ReturnEnd\@empty
\long\def\Hy@ReturnAfterFi#1\fi{\fi#1}
\long\def\Hy@ReturnAfterElseFi#1\else#2\fi{\fi#1}
\long\def\Hy@ReturnAfterFiFiEnd#1\fi#2\Hy@ReturnEnd{\fi\fi#1}
\long\def\Hy@ReturnAfterElseFiFiEnd#1\else#2\Hy@ReturnEnd{\fi\fi#1}
\def\Hy@safe@activestrue{\csname @safe@activestrue\endcsname}
\def\Hy@safe@activesfalse{\csname @safe@activesfalse\endcsname}
  \def\hypercalcbp#1{%
    \strip@pt\dimexpr 0.99626401\dimexpr(#1)\relax\relax
  }%
  \def\hypercalcbpdef{\def}%
\providecommand*\BCPdata[1]{}
\ExplSyntaxOn
\@ifundefined{text_uppercase:n}{}
 {
   \def\MakeUppercaseUnsupportedInPdfStrings#1
         {\use:e
           {\exp_args:Ne
              \text_uppercase:nn{\BCPdata { casing }}{#1}
           }
         }
   \def\MakeLowercaseUnsupportedInPdfStrings#1
         {\use:e
           {\exp_args:Ne
              \text_lowercase:nn{\BCPdata { casing }}{#1}
           }
         }
 }
\ExplSyntaxOff
\def\pdfstringdef#1#2{%
  \begingroup
    \escapechar`\\%
    \edef\0{\string\0}%
    \edef\1{\string\1}%
    \edef\2{\string\2}%
    \edef\3{\string\3}%
    \ifHy@unicode
      \edef\8{\string\8}%
      \edef\9{\string\9}%
      \fontencoding{PU}%
      \HyPsd@UTFviii
      \def\ifpdfstringunicode##1##2{##1}%
    \else
      \fontencoding{PD1}%
      \def\ifpdfstringunicode##1##2{##2}%
    \fi
    \let\utf@viii@undeferr\HyPsd@utf@viii@undeferr
    \enc@update
    \@inmathwarn\pdfstringdef
    \let\@inmathwarn\HyPsd@inmathwarn
    \let\add@accent\HyPsd@add@accent
    \let\{\textbraceleft
    \let\}\textbraceright
    \let\\\textbackslash
    \let\#\textnumbersign
    \let\$\textdollar
    \let\%\textpercent
    \let\&\textampersand
    \let\_\textunderscore
    \let\P\textparagraph
    \let\ldots\textellipsis
    \let\dots\textellipsis
    \@ifundefined{textEncodingNoboundary}%
      {}{\let\noboundary\textEncodingNoboundary}%
    \def\\{\pdfstringdefWarn\\}%
    \def\newline{\pdfstringdefWarn\newline}%
    \def\TeX{TeX}%
    \def\LaTeX{La\TeX}%
    \def\LaTeXe{%
      \LaTeX2%
      \ifHy@unicode\83\265\else e\fi
    }%
    \def\eTeX{%
      \ifHy@unicode\83\265\else e\fi
      -\TeX%
    }%
    \def\SliTeX{Sli\TeX}%
    \def\MF{Metafont}%
    \def\MP{Metapost}%
    \let\fontencoding\@gobble
    \let\fontfamily\@gobble
    \let\fontseries\@gobble
    \let\fontshape\@gobble
    \let\fontsize\@gobbletwo
    \let\selectfont\@empty
    \let\usefont\@gobblefour
    \let\emph\@firstofone
    \let\textnormal\@firstofone
    \let\textrm\@firstofone
    \let\textsf\@firstofone
    \let\texttt\@firstofone
    \let\textbf\@firstofone
    \let\textmd\@firstofone
    \let\textit\@firstofone
    \let\textsc\@firstofone
    \let\textsl\@firstofone
    \let\textup\@firstofone
    \let\normalfont\@empty
    \let\rmfamily\@empty
    \let\sffamily\@empty
    \let\ttfamily\@empty
    \let\bfseries\@empty
    \let\mdseries\@empty
    \let\itshape\@empty
    \let\scshape\@empty
    \let\slshape\@empty
    \let\upshape\@empty
    \let\em\@empty
    \let\rm\@empty
    \let\Huge\@empty
    \let\LARGE\@empty
    \let\Large\@empty
    \let\footnotesize\@empty
    \let\huge\@empty
    \let\large\@empty
    \let\normalsize\@empty
    \let\scriptsize\@empty
    \let\small\@empty
    \let\tiny\@empty
    \let\mathversion\@gobble
    \let\phantom\@gobble
    \let\vphantom\@gobble
    \let\hphantom\@gobble
    \let\ding\HyPsd@ding
    \let\Cube\HyPsd@DieFace
    \def\begin##1{\csname##1\endcsname}%
    \def\end##1{\csname end##1\endcsname}%
    \def\textcolor##1##{\@secondoftwo}%
    \def\MakeUppercase{\MakeUppercaseUnsupportedInPdfStrings}%
    \def\MakeLowercase{\MakeLowercaseUnsupportedInPdfStrings}%
   \def\TextOrMath{\ifmmode\expandafter\@secondoftwo\else\expandafter\@firstoftwo\fi}%
    \ifHy@psdextra
      \ifHy@unicode
        \csname psdmapshortnames\endcsname
        \csname psdaliasnames\endcsname
      \fi
    \fi
    \let\foreignlanguage\@secondoftwo
    \let\textlatin\@firstofone
    \@ifundefined{language@group}{}{%
      \let\bbl@info\@gobble
      \csname HyPsd@babel@\language@group\endcsname
    }%
    \let\@safe@activestrue\relax
    \let\@safe@activesfalse\relax
    \let\cyr\relax
    \let\glqq\textglqq
    \let\grqq\textgrqq
    \let\glq\textglq
    \let\grq\textgrq
    \let\flqq\textflqq
    \let\frqq\textfrqq
    \let\flq\textflq
    \let\frq\textfrq
    \let\if@mid@expandable\@firstoftwo
    \HyPsd@AMSclassfix
    \let\hspace\HyPsd@hspace
    \let\label\@gobble
    \let\index\@gobble
    \let\glossary\@gobble
    \let\href\HyPsd@href
    \let\@mkboth\@gobbletwo
    \let\ref\HyPsd@ref
    \let\pageref\HyPsd@pageref
    \let\nameref\HyPsd@nameref
    \let\autoref\HyPsd@autoref
    \let\leavevmode\@empty
    \let\mbox\@empty
    \def\halign{\pdfstringdefWarn\halign\@gobble}%
    \let\ignorespaces\HyPsd@ignorespaces
    \let\Hy@SectionAnchorHref\@gobble
    \let\ensuremath\@firstofone
    \HyPsd@CJKhook
    \Hy@pdfstringtrue
    \pdfstringdefPreHook
    \HyPsd@LetUnexpandableSpace\space
    \HyPsd@LetUnexpandableSpace\ %
    \HyPsd@LetUnexpandableSpace~%
    \HyPsd@LetUnexpandableSpace\nobreakspace
    \@ifundefined{@xspace}{%
      \let\xspace\HyPsd@ITALCORR
    }{%
      \let\xspace\HyPsd@XSPACE
    }%
    \let\/\HyPsd@ITALCORR
    \let\bgroup\/%
    \let\egroup\/%
    \let\discretionary\@gobbletwo
    \def\@ifnextchar{\HyPsd@ifnextchar\@ifnextchar}%
    \def\kernel@ifnextchar{\HyPsd@ifnextchar\kernel@ifnextchar}%
    \def\new@ifnextchar{\HyPsd@ifnextchar\new@ifnextchar}%
    \let\@protected@testopt\HyPsd@protected@testopt
    \let\@protected@testopt@xargs\HyPsd@protected@testopt
    \begingroup
      \let\GenericError\@gobblefour
      \let\GenericWarning\@gobbletwo
      \let\GenericInfo\@gobbletwo
      \ifx\nofrenchguillemets\@undefined
      \else
        \nofrenchguillemets
      \fi
      \let\Hy@temp\xdef
      \let\def\HyPsd@DefCommand
      \let\gdef\HyPsd@DefCommand
      \let\edef\HyPsd@DefCommand
      \let\xdef\HyPsd@DefCommand
      \let\futurelet\HyPsd@LetCommand
      \let\let\HyPsd@LetCommand
      \Hy@temp#1{#2}%
    \endgroup
    \ifx#1\@empty
    \else
      \HyPsd@ProtectSpaces#1%
      \let\HyPsd@String\@empty
      \expandafter\HyPsd@RemoveBraces\expandafter{#1|}%
      \global\let#1\HyPsd@String
      \let\HyPsd@SPACEOPTI\relax
      {%
         \let\HyPsd@String\@empty
         \expandafter\HyPsd@CheckCatcodes#1\HyPsd@End
         \global\let#1\HyPsd@String
      }%
      \expandafter\HyPsd@RemoveMask\expandafter
        |\expandafter\@empty#1\HyPsd@End#1%
      \expandafter
      \HyPsd@Subst\expandafter{\HyPsd@GLYPHERR}{\relax}#1%
      \let\HyPsd@String\@empty
      \expandafter\HyPsd@GlyphProcess#1\relax\@empty
      \global\let#1\HyPsd@String
      \HyPsd@StringSubst{\\}{\textbackslash}#1%
      \ifHy@unicode
        \expandafter\HyPsd@StringSubst\csname 80\040\endcsname
          \HyPsd@SPACEOPTI#1%
        \edef\Hy@temp@A{\HyPsd@SPACEOPTI\HyPsd@SPACEOPTI\80\273}%
        \expandafter\HyPsd@Subst\expandafter{\Hy@temp@A}%
          {\HyPsd@SPACEOPTI\80\273}#1%
      \else
        \HyPsd@StringSubst{\040}\HyPsd@SPACEOPTI#1%
        \expandafter\HyPsd@Subst\expandafter{%
          \expandafter\HyPsd@SPACEOPTI\expandafter\HyPsd@SPACEOPTI
          \string\273}{\HyPsd@SPACEOPTI\273}#1%
      \fi
      \ifHy@unicode
        \HyPsd@StringSubst{\)}{\80\051}#1%
        \HyPsd@Subst){\80\051}#1%
        \let\HyPsd@empty\relax
        \expandafter\HyPsd@StringSubst\csname 80\051\endcsname
          {\HyPsd@empty\80\051}#1%
      \else
        \HyPsd@StringSubst{\)}{\051}#1%
        \HyPsd@Subst){\051}#1%
        \let\HyPsd@empty\relax
        \HyPsd@StringSubst{\051}{\HyPsd@empty\string\)}#1%
      \fi
      \expandafter\HyPsd@Subst\expandafter{\/}\HyPsd@empty#1%
      \@ifundefined{@xspace}{%
      }{%
        \let\HyPsd@xspace\relax
        \expandafter\HyPsd@Subst\expandafter
          {\HyPsd@XSPACE}\HyPsd@xspace#1%
        \let\HyPsd@xspace\HyPsd@doxspace
      }%
      \xdef#1{#1\HyPsd@empty}%
      \HyPsd@Subst{---}\textemdash#1%
      \HyPsd@Subst{--}\textendash#1%
      \HyPsd@Subst{!`}\textexclamdown#1%
      \HyPsd@Subst{?`}\textquestiondown#1%
      \let\HyPsd@empty\@empty
      \ifHy@unicode
        \HyPsd@StringSubst\(\textparenleft#1%
        \HyPsd@Subst(\textparenleft#1%
      \else
        \HyPsd@StringSubst\({\050}#1%
        \HyPsd@Subst({\050}#1%
        \HyPsd@StringSubst{\050}{\string\(}#1%
      \fi
      \ifHy@unicode
        \edef\HyPsd@SPACEOPTI{\80\040}%
      \else
        \let\HyPsd@SPACEOPTI\HyPsd@spaceopti
      \fi
      \xdef#1{#1\@empty}%
    \fi
  \endgroup
  \begingroup
    \ifHy@unicode
      \HyPsd@ConvertToUnicode#1%
      \ifx\HyPsd@pdfencoding\HyPsd@pdfencoding@auto
         \EdefUnescapeString\HyPsd@temp#1%
         \iftutex
           \let\HyPsd@UnescapedString\HyPsd@temp
           \StringEncodingConvertTest\HyPsd@temp\HyPsd@temp
                                     {utf16be}{ascii-print}{%
             \EdefEscapeString\HyPsd@temp\HyPsd@temp
             \global\let#1\HyPsd@temp
             \HyPsd@EscapeTeX#1%
             \Hy@unicodefalse
           }{%
             \HyPsd@EscapeTeX#1%
           }%
         \else
           \StringEncodingConvertTest\HyPsd@temp\HyPsd@temp
                                     {utf16be}{pdfdoc}{%
             \EdefEscapeString\HyPsd@temp\HyPsd@temp
             \global\let#1\HyPsd@temp
             \HyPsd@EscapeTeX#1%
             \Hy@unicodefalse
           }{}%
         \fi
      \fi
    \fi
    \pdfstringdefPostHook#1%
  \endgroup
}
\def\Hy@pdfstringdef#1#2{%
  \pdfstringdef\Hy@gtemp{#2}%
  \let#1\Hy@gtemp
}
\@ifpackageloaded{linguex}{%
  \let\HyLinguex@OrgB\b
  \let\HyLinguex@OrgC\c
  \let\HyLinguex@OrgD\d
  \def\HyLinguex@Restore{%
    \let\b\HyLinguex@OrgB
    \let\c\HyLinguex@OrgC
    \let\d\HyLinguex@OrgD
  }%
  \Hy@AtEndOfPackage{%
    \pdfstringdefDisableCommands{%
      \@ifundefined{oldb}{}{\let\b\oldb}%
      \@ifundefined{oldc}{}{\let\c\oldc}%
      \@ifundefined{oldd}{}{\let\d\oldd}%
    }%
  }%
}{%
  \let\HyLinguex@Restore\relax
}%
\def\Hy@SaveCatcodeSettings#1{%
  \expandafter\edef\csname Hy@cat@#1\endcsname{%
    \endlinechar=\the\endlinechar\relax
    \catcode32 \the\catcode32\relax % (space)
    \catcode34 \the\catcode34\relax % "
    \catcode35 \the\catcode35\relax % #
    \catcode37 \the\catcode37\relax % (percent)
    \catcode40 \the\catcode40\relax % (
    \catcode41 \the\catcode41\relax % )
    \catcode42 \the\catcode42\relax % *
    \catcode46 \the\catcode46\relax % .
    \catcode58 \the\catcode58\relax % :
    \catcode60 \the\catcode60\relax % <
    \catcode61 \the\catcode61\relax % =
    \catcode62 \the\catcode62\relax % >
    \catcode64 \the\catcode64\relax % @
    \catcode91 \the\catcode91\relax % [
    \catcode92 \the\catcode92\relax % (backslash)
    \catcode93 \the\catcode93\relax % ]
    \catcode123 \the\catcode123\relax % {
    \catcode124 \the\catcode124\relax % |
    \catcode125 \the\catcode125\relax % }
  }%
  \endlinechar=-1 %
  \catcode32 10 % (space)
  \catcode34 12 % "
  \catcode35 6 % #
  \catcode37 14 % (percent)
  \catcode40 12 % (
  \catcode41 12 % )
  \catcode42 12 % *
  \catcode46 12 % .
  \catcode58 12 % :
  \catcode60 12 % <
  \catcode61 12 % =
  \catcode62 12 % >
  \catcode91 12 % [
  \catcode92 0 % (backslash)
  \catcode93 12 % ]
  \catcode123 1 % {
  \catcode124 12 % |
  \catcode125 2 % }
  \makeatletter
}
\def\Hy@RestoreCatcodeSettings#1{%
  \csname Hy@cat@#1\endcsname
  \expandafter\let\csname Hy@cat@#1\endcsname\relax
}
\@ifundefined{T@PD1}{%
  \Hy@SaveCatcodeSettings{pd1}%
  \input{pd1enc.def}%
  \Hy@RestoreCatcodeSettings{pd1}%
  \HyLinguex@Restore
}{}
\DeclareFontFamily{PD1}{pdf}{}
\DeclareFontShape{PD1}{pdf}{m}{n}{ <-> cmr10 }{}
\DeclareFontSubstitution{PD1}{pdf}{m}{n}
\def\HyPsd@LoadUnicode{%
  \@ifundefined{T@PU}{%
    \Hy@SaveCatcodeSettings{pu}%
    \input{puenc.def}%
    \Hy@RestoreCatcodeSettings{pu}%
    \HyLinguex@Restore
  }{}%
  \DeclareFontFamily{PU}{pdf}{}%
  \DeclareFontShape{PU}{pdf}{m}{n}{ <-> cmr10 }{}%
  \DeclareFontSubstitution{PU}{pdf}{m}{n}%
  \HyPsd@LoadExtra
  \let\HyPsd@LoadUnicode\relax
}
\def\Hy@iffileloaded#1{%
  \@ifundefined{ver@#1}\@secondoftwo\@firstoftwo
}
\def\HyPsd@LoadExtra{%
  \ifHy@psdextra
    \Hy@iffileloaded{puenc.def}{%
      \Hy@SaveCatcodeSettings{psdextra}%
      \input{psdextra.def}%
      \Hy@RestoreCatcodeSettings{psdextra}%
      \let\HyPsd@LoadExtra\relax
    }{}%
  \fi
}
\def\texorpdfstring{%
   \ifHy@pdfstring
     \expandafter\@secondoftwo
   \else
     \expandafter\@firstoftwo
   \fi
}
\@ifundefined{pdfstringdefPreHook}{%
  \let\pdfstringdefPreHook\@empty
}{}
\@ifundefined{pdfstringdefPostHook}{%
  \let\pdfstringdefPostHook\@gobble
}{}
\def\pdfstringdefDisableCommands{%
  \begingroup
    \makeatletter
    \HyPsd@DisableCommands
}
\long\def\HyPsd@DisableCommands#1{%
    \Hy@GlobalAppendToMacro\pdfstringdefPreHook{#1}%
  \endgroup
}
\def\pdfstringdefWarn#1{%
   \expandafter\noexpand\csname<>-\string#1\endcsname
}
\begingroup
  \catcode0=12 %
  \def\x{\endgroup
    \def\HyPsd@ignorespaces{%
      \romannumeral\expandafter`\expandafter^^@%
      \romannumeral`^^@%
    }%
  }%
\x
\newif\ifHy@next
\RequirePackage{intcalc}[2007/09/27]
\def\HyPsd@CJKhook{%
  \@ifpackageloaded{CJK}{%
    \let\CJK@kern\relax
    \let\CJKkern\relax
    \let\CJK@CJK\relax
    \ifHy@CJKbookmarks
      \HyPsd@CJKhook@bookmarks
    \fi
    \HyPsd@CJKhook@unicode
  }{}%
}
\begingroup
  \catcode"7F=\active
  \toks@{%
    \let\CJK@ignorespaces\empty
    \def\CJK@char#1{\@gobbletwo}%
    \let\CJK@charx\@gobblefour
    \let\CJK@punctchar\@gobblefour
    \def\CJK@punctcharx#1{\@gobblefour}%
    \catcode"7F=\active
    \def^^7f#1^^7f#2^^7f{%
      \string #1\HyPsd@DecimalToOctal{#2}%
    }%
    % ... ?
    \ifHy@unicode
      \def\Hy@cjkpu{\80}%
    \else
      \let\Hy@cjkpu\@empty
    \fi
    \HyPsd@CJKActiveChars
  }%
  \count@=127 %
  \@whilenum\count@<255 \do{%
    \advance\count@ by 1 %
    \lccode`\~=\count@
    \lowercase{%
      \toks@\expandafter{\the\toks@ ~}%
    }%
  }%
  \toks@\expandafter{\the\toks@ !}%
  \xdef\HyPsd@CJKhook@bookmarks{%
    \the\toks@
  }%
\endgroup
\def\HyPsd@CJKActiveChars#1{%
  \ifx#1!%
    \let\HyPsd@CJKActiveChars\relax
  \else
    \edef#1{\noexpand\Hy@cjkpu\string#1}%
  \fi
  \HyPsd@CJKActiveChars
}
\def\HyPsd@DecimalToOctal#1{%
  \ifcase #1 %
        \000\or \001\or \002\or \003\or \004\or \005\or \006\or \007%
    \or \010\or \011\or \012\or \013\or \014\or \015\or \016\or \017%
    \or \020\or \021\or \022\or \023\or \024\or \025\or \026\or \027%
    \or \030\or \031\or \032\or \033\or \034\or \035\or \036\or \037%
    \or \040\or \041\or \042\or \043\or \044\or \045\or \046\or \047%
    \or \050\or \051\or \052\or \053\or \054\or \055\or \056\or \057%
    \or    0\or    1\or    2\or    3\or    4\or    5\or    6\or    7%
    \or    8\or    9\or \072\or \073\or \074\or \075\or \076\or \077%
    \or    @\or    A\or    B\or    C\or    D\or    E\or    F\or    G%
    \or    H\or    I\or    J\or    K\or    L\or    M\or    N\or    O%
    \or    P\or    Q\or    R\or    S\or    T\or    U\or    V\or    W%
    \or    X\or    Y\or    Z\or \133\or \134\or \135\or \136\or \137%
    \or \140\or    a\or    b\or    c\or    d\or    e\or    f\or    g%
    \or    h\or    i\or    j\or    k\or    l\or    m\or    n\or    o%
    \or    p\or    q\or    r\or    s\or    t\or    u\or    v\or    w%
    \or    x\or    y\or    z\or \173\or \174\or \175\or \176\or \177%
    \or \200\or \201\or \202\or \203\or \204\or \205\or \206\or \207%
    \or \210\or \211\or \212\or \213\or \214\or \215\or \216\or \217%
    \or \220\or \221\or \222\or \223\or \224\or \225\or \226\or \227%
    \or \230\or \231\or \232\or \233\or \234\or \235\or \236\or \237%
    \or \240\or \241\or \242\or \243\or \244\or \245\or \246\or \247%
    \or \250\or \251\or \252\or \253\or \254\or \255\or \256\or \257%
    \or \260\or \261\or \262\or \263\or \264\or \265\or \266\or \267%
    \or \270\or \271\or \272\or \273\or \274\or \275\or \276\or \277%
    \or \300\or \301\or \302\or \303\or \304\or \305\or \306\or \307%
    \or \310\or \311\or \312\or \313\or \314\or \315\or \316\or \317%
    \or \320\or \321\or \322\or \323\or \324\or \325\or \326\or \327%
    \or \330\or \331\or \332\or \333\or \334\or \335\or \336\or \337%
    \or \340\or \341\or \342\or \343\or \344\or \345\or \346\or \347%
    \or \350\or \351\or \352\or \353\or \354\or \355\or \356\or \357%
    \or \360\or \361\or \362\or \363\or \364\or \365\or \366\or \367%
    \or \370\or \371\or \372\or \373\or \374\or \375\or \376\or \377%
  \fi
}
\def\HyPsd@CJKhook@unicode{%
  \let\Unicode\HyPsd@CJK@Unicode
  \let\CJKnumber\HyPsd@CJKnumber
  \let\CJKdigits\HyPsd@CJKdigits
}
\def\HyPsd@CJK@Unicode#1#2{%
  \ifnum#1<256 %
    \HyPsd@DecimalToOctalFirst{#1}%
    \HyPsd@DecimalToOctalSecond{#2}%
  \else
    \933%
    \expandafter\expandafter\expandafter\HyPsd@HighA
    \intcalcDiv{#1}{4}!%
    \933%
    \ifcase\intcalcMod{#1}{4} %
      4\or 5\or 6\or 7%
    \fi
    \HyPsd@DecimalToOctalSecond{#2}%
  \fi
}
\def\HyPsd@HighA#1!{%
  \expandafter\expandafter\expandafter\HyPsd@HighB
  \IntCalcDiv#1!64!!%
  \expandafter\expandafter\expandafter\HyPsd@HighD
  \IntCalcMod#1!64!!%
}
\def\HyPsd@HighB#1!{%
  \expandafter\expandafter\expandafter\HyPsd@HighC
  \IntCalcDec#1!!%
}
\def\HyPsd@HighC#1!{%
  \IntCalcDiv#1!4!%
  \@backslashchar
  \IntCalcMod#1!4!%
}
\def\HyPsd@HighD#1!{%
  \ifcase\IntCalcDiv#1!8! %
    0\or 1\or 2\or 3\or 4\or 5\or 6\or 7%
  \fi
  \ifcase\IntCalcMod#1!8! %
    0\or 1\or 2\or 3\or 4\or 5\or 6\or 7%
  \fi
}
\def\HyPsd@DecimalToOctalFirst#1{%
  \9%
  \ifcase#1 %
        000\or 001\or 002\or 003\or 004\or 005\or 006\or 007%
    \or 010\or 011\or 012\or 013\or 014\or 015\or 016\or 017%
    \or 020\or 021\or 022\or 023\or 024\or 025\or 026\or 027%
    \or 030\or 031\or 032\or 033\or 034\or 035\or 036\or 037%
    \or 040\or 041\or 042\or 043\or 044\or 045\or 046\or 047%
    \or 050\or 051\or 052\or 053\or 054\or 055\or 056\or 057%
    \or 060\or 061\or 062\or 063\or 064\or 065\or 066\or 067%
    \or 070\or 071\or 072\or 073\or 074\or 075\or 076\or 077%
    \or 100\or 101\or 102\or 103\or 104\or 105\or 106\or 107%
    \or 120\or 111\or 112\or 113\or 114\or 115\or 116\or 117%
    \or 120\or 121\or 122\or 123\or 124\or 125\or 126\or 127%
    \or 130\or 131\or 132\or 133\or 134\or 135\or 136\or 137%
    \or 140\or 141\or 142\or 143\or 144\or 145\or 146\or 147%
    \or 150\or 151\or 152\or 153\or 154\or 155\or 156\or 157%
    \or 160\or 161\or 162\or 163\or 164\or 165\or 166\or 167%
    \or 170\or 171\or 172\or 173\or 174\or 175\or 176\or 177%
    \or 200\or 201\or 202\or 203\or 204\or 205\or 206\or 207%
    \or 210\or 211\or 212\or 213\or 214\or 215\or 216\or 217%
    \or 220\or 221\or 222\or 223\or 224\or 225\or 226\or 227%
    \or 230\or 231\or 232\or 233\or 234\or 235\or 236\or 237%
    \or 240\or 241\or 242\or 243\or 244\or 245\or 246\or 247%
    \or 250\or 251\or 252\or 253\or 254\or 255\or 256\or 257%
    \or 260\or 261\or 262\or 263\or 264\or 265\or 266\or 267%
    \or 270\or 271\or 272\or 273\or 274\or 275\or 276\or 277%
    \or 300\or 301\or 302\or 303\or 304\or 305\or 306\or 307%
    \or 310\or 311\or 312\or 313\or 314\or 315\or 316\or 317%
    \or 320\or 321\or 322\or 323\or 324\or 325\or 326\or 327%
    \or 330\or 331\or 332\or 333\or 334\or 335\or 336\or 337%
    \or 340\or 341\or 342\or 343\or 344\or 345\or 346\or 347%
    \or 350\or 351\or 352\or 353\or 354\or 355\or 356\or 357%
    \or 360\or 361\or 362\or 363\or 364\or 365\or 366\or 367%
    \or 370\or 371\or 372\or 373\or 374\or 375\or 376\or 377%
  \fi
}
\def\HyPsd@DecimalToOctalSecond#1{%
  \ifcase #1 %
        \000\or \001\or \002\or \003\or \004\or \005\or \006\or \007%
    \or \010\or \011\or \012\or \013\or \014\or \015\or \016\or \017%
    \or \020\or \021\or \022\or \023\or \024\or \025\or \026\or \027%
    \or \030\or \031\or \032\or \033\or \034\or \035\or \036\or \037%
    \or \040\or \041\or \042\or \043\or \044\or \045\or \046\or \047%
    \or \050\or \051\or \052\or \053\or \054\or \055\or \056\or \057%
    \or \060\or \061\or \062\or \063\or \064\or \065\or \066\or \067%
    \or \070\or \071\or \072\or \073\or \074\or \075\or \076\or \077%
    \or \100\or \101\or \102\or \103\or \104\or \105\or \106\or \107%
    \or \110\or \111\or \112\or \113\or \114\or \115\or \116\or \117%
    \or \120\or \121\or \122\or \123\or \124\or \125\or \126\or \127%
    \or \130\or \131\or \132\or \133\or \134\or \135\or \136\or \137%
    \or \140\or \141\or \142\or \143\or \144\or \145\or \146\or \147%
    \or \150\or \151\or \152\or \153\or \154\or \155\or \156\or \157%
    \or \160\or \161\or \162\or \163\or \164\or \165\or \166\or \167%
    \or \170\or \171\or \172\or \173\or \174\or \175\or \176\or \177%
    \or \200\or \201\or \202\or \203\or \204\or \205\or \206\or \207%
    \or \210\or \211\or \212\or \213\or \214\or \215\or \216\or \217%
    \or \220\or \221\or \222\or \223\or \224\or \225\or \226\or \227%
    \or \230\or \231\or \232\or \233\or \234\or \235\or \236\or \237%
    \or \240\or \241\or \242\or \243\or \244\or \245\or \246\or \247%
    \or \250\or \251\or \252\or \253\or \254\or \255\or \256\or \257%
    \or \260\or \261\or \262\or \263\or \264\or \265\or \266\or \267%
    \or \270\or \271\or \272\or \273\or \274\or \275\or \276\or \277%
    \or \300\or \301\or \302\or \303\or \304\or \305\or \306\or \307%
    \or \310\or \311\or \312\or \313\or \314\or \315\or \316\or \317%
    \or \320\or \321\or \322\or \323\or \324\or \325\or \326\or \327%
    \or \330\or \331\or \332\or \333\or \334\or \335\or \336\or \337%
    \or \340\or \341\or \342\or \343\or \344\or \345\or \346\or \347%
    \or \350\or \351\or \352\or \353\or \354\or \355\or \356\or \357%
    \or \360\or \361\or \362\or \363\or \364\or \365\or \366\or \367%
    \or \370\or \371\or \372\or \373\or \374\or \375\or \376\or \377%
  \fi
}
\def\HyPsd@CJKnumber#1{%
  \ifnum#1<\z@
    \CJK@minus
    \expandafter\HyPsd@@CJKnumber\expandafter{\number-\number#1}%
  \else
    \expandafter\HyPsd@@CJKnumber\expandafter{\number#1}%
  \fi
}
\def\HyPsd@@CJKnumber#1{%
  \ifcase#1 %
    \CJK@zero\or\CJK@one\or\CJK@two\or\CJK@three\or\CJK@four\or
    \CJK@five\or\CJK@six\or\CJK@seven\or\CJK@eight\or\CJK@nine\or
    \CJK@ten\or\CJK@ten\CJK@one\or\CJK@ten\CJK@two\or
    \CJK@ten\CJK@three\or\CJK@ten\CJK@four\or\CJK@ten\CJK@five\or
    \CJK@ten\CJK@six\or\CJK@ten\CJK@seven\or\CJK@ten\CJK@eight\or
    \CJK@ten\CJK@nine
  \else
    \ifnum#1<10000 %
      \HyPsd@CJKnumberFour#1!\@empty{20}%
      \@empty
    \else
      \ifnum#1<100000000 %
        \expandafter\expandafter\expandafter\HyPsd@CJKnumberFour
          \IntCalcDiv#1!10000!%
        !{}{20}%
        \CJK@tenthousand
        \expandafter\expandafter\expandafter\HyPsd@CJKnumberFour
          \IntCalcMod#1!10000!%
        !\CJK@zero{10}%
        \@empty
      \else
        \expandafter\HyPsd@CJKnumberLarge
        \number\IntCalcDiv#1!100000000!\expandafter!%
        \number\IntCalcMod#1!100000000!!%
      \fi
    \fi
  \fi
}
\def\HyPsd@CJKnumberLarge#1!#2!{%
  \HyPsd@CJKnumberFour#1!{}{20}%
  \CJK@hundredmillion
  \ifnum#2=\z@
  \else
    \expandafter\expandafter\expandafter\HyPsd@CJKnumberFour
      \IntCalcDiv#2!10000!%
    !\CJK@zero{10}%
    \CJK@tenthousand
    \expandafter\expandafter\expandafter\HyPsd@CJKnumberFour
      \IntCalcMod#2!10000!%
    !\CJK@zero{10}%
    \@empty
  \fi
}
\def\HyPsd@CJKnumberFour#1!#2#3{%
  \ifnum#1=\z@
    \expandafter\@gobble
  \else
    \ifnum#1<1000 %
      #2%
      \HyPsd@CJKnumberThree#1!{}{#3}%
    \else
      \HyPsd@@CJKnumber{\IntCalcDiv#1!1000!}%
      \CJK@thousand
      \expandafter\expandafter\expandafter\HyPsd@CJKnumberThree
        \IntCalcMod#1!1000!%
      !\CJK@zero{10}%
    \fi
  \fi
}
\def\HyPsd@CJKnumberThree#1!#2#3{%
  \ifnum#1=\z@
  \else
    \ifnum#1<100 %
      #2%
      \HyPsd@CJKnumberTwo#1!{}{#3}%
    \else
      \HyPsd@@CJKnumber{\IntCalcDiv#1!100!}%
      \CJK@hundred
      \expandafter\expandafter\expandafter\HyPsd@CJKnumberTwo
        \IntCalcMod#1!100!%
      !\CJK@zero{10}%
    \fi
  \fi
}
\def\HyPsd@CJKnumberTwo#1!#2#3{%
  \ifnum#1=\z@
  \else
    \ifnum#1<#3 %
      #2%
      \HyPsd@@CJKnumber{#1}%
    \else
      \HyPsd@@CJKnumber{\IntCalcDiv#1!10!}%
      \CJK@ten
      \ifnum\IntCalcMod#1!10!=\z@
      \else
        \HyPsd@@CJKnumber{\IntCalcMod#1!10!}%
      \fi
    \fi
  \fi
}
\def\HyPsd@CJKdigits#1{%
  \ifx*#1\relax
    \expandafter\HyPsd@@CJKdigits\expandafter\CJK@zero
  \else
    \HyPsd@@CJKdigits\CJK@null{#1}%
  \fi
}
\def\HyPsd@@CJKdigits#1#2{%
  \ifx\\#2\\%
  \else
    \HyPsd@@@CJKdigits#1#2\@nil
  \fi
}%
\def\HyPsd@@@CJKdigits#1#2#3\@nil{%
  \HyPsd@CJKdigit#1{#2}%
  \ifx\\#3\\%
    \expandafter\@gobble
  \else
    \expandafter\@firstofone
  \fi
  {%
    \HyPsd@@@CJKdigits#1#3\@nil
  }%
}
\def\HyPsd@CJKdigit#1#2{%
  \ifcase#2 %
    #1\or
    \CJK@one\or\CJK@two\or\CJK@three\or\CJK@four\or
    \CJK@five\or\CJK@six\or\CJK@seven\or\CJK@eight\or\CJK@nine
  \fi
}
\def\HyPsd@inmathwarn#1#2{%
  \ifx#2\expandafter
    \expandafter\ifx\csname\cf@encoding\string#1\endcsname\relax
      \HyPsd@GLYPHERR
      \expandafter\@gobble\string#1%
      >%
      \expandafter\expandafter\expandafter\HyPsd@EndWithElse
    \else
      \expandafter\expandafter\expandafter\HyPsd@GobbleFiFi
    \fi
  \else
    \expandafter#2%
  \fi
}
\def\HyPsd@GobbleFiFi#1\fi#2\fi{}
\def\HyPsd@EndWithElse#1\else{\else}
\def\HyPsd@add@accent#1#2{%
  \HyPsd@GLYPHERR\expandafter\@gobble\string#1+\string#2>%
  #2%
}%
\def\HyPsd@LetUnexpandableSpace#1{%
  \expandafter\futurelet\expandafter#1\expandafter\@gobble\space\relax
}
\HyPsd@LetUnexpandableSpace\HyPsd@UnexpandableSpace
\edef\HyPsd@XSPACE{\string#\string X}
\edef\HyPsd@ITALCORR{\string#\string I}
\edef\HyPsd@GLYPHERR{\string#\string G}
\def\HyPsd@hspace#1{\HyPsd@@hspace#1*\END}
\def\HyPsd@@hspace#1*#2\END{%
  \ifx\\#2\\%
    \HyPsd@hspacetest{#1}%
  \else
    \expandafter\HyPsd@hspacetest
  \fi
}
\def\HyPsd@hspacetest#1{\ifdim\dimexpr#1\relax>\z@\space\fi}
\@ifundefined{tocsection}{%
  \let\HyPsd@AMSclassfix\relax
}{%
  \def\HyPsd@AMSclassfix{%
    \let\tocpart\HyPsd@tocsection
    \let\tocchapter\HyPsd@tocsection
    \let\tocappendix\HyPsd@tocsection
    \let\tocsection\HyPsd@tocsection
    \let\tocsubsection\HyPsd@tocsection
    \let\tocsubsubsection\HyPsd@tocsection
    \let\tocparagraph\HyPsd@tocsection
  }%
  \def\HyPsd@tocsection#1#2#3{%
    \if @#2@\else\if @#1@\else#1 \fi#2. \fi
    #3%
  }%
}
\def\HyPsd@href#1#{\@secondoftwo}
\def\HyPsd@ref#1{\HyPsd@@ref#1*\END}%
\def\HyPsd@@ref#1*#2\END{%
  \ifx\\#2\\%
    \HyPsd@@@ref{#1}%
  \else
    \expandafter\HyPsd@@@ref
  \fi
}%
\def\HyPsd@@@ref#1{%
  \expandafter\ifx\csname r@#1\endcsname\relax
    ??%
  \else
    \expandafter\expandafter\expandafter
    \@car\csname r@#1\endcsname\@nil
  \fi
}
\def\HyPsd@pageref#1{\HyPsd@@pageref#1*\END}
\def\HyPsd@@pageref#1*#2\END{%
  \ifx\\#2\\%
    \HyPsd@@@pageref{#1}%
  \else
    \expandafter\HyPsd@@@pageref
  \fi
}
\def\HyPsd@@@pageref#1{%
  \expandafter\ifx\csname r@#1\endcsname\relax
    ??%
  \else
    \expandafter\expandafter\expandafter\expandafter
    \expandafter\expandafter\expandafter\@car
    \expandafter\expandafter\expandafter\@gobble
    \csname r@#1\endcsname{}\@nil
  \fi
}
\def\HyPsd@nameref#1{\HyPsd@@nameref#1*\END}
\def\HyPsd@@nameref#1*#2\END{%
  \ifx\\#2\\%
    \HyPsd@@@nameref{#1}%
  \else
    \expandafter\HyPsd@@@nameref
  \fi
}
\def\HyPsd@@@nameref#1{%
  \expandafter\ifx\csname r@#1\endcsname\relax
    ??%
  \else
    \expandafter\expandafter\expandafter\expandafter
    \expandafter\expandafter\expandafter\@car
    \expandafter\expandafter\expandafter\@gobbletwo
    \csname r@#1\endcsname{}{}\@nil
  \fi
}
\def\HyPsd@autoref#1{\HyPsd@@autoref#1*\END}
\def\HyPsd@@autoref#1*#2\END{%
  \ifx\\#2\\%
    \HyPsd@@@autoref{#1}%
  \else
    \expandafter\HyPsd@@@autoref
  \fi
}
\def\HyPsd@@@autoref#1{%
  \expandafter\ifx\csname r@#1\endcsname\relax
    ??%
  \else
    \expandafter\expandafter\expandafter\HyPsd@autorefname
        \csname r@#1\endcsname{}{}{}{}\@nil
    \expandafter\expandafter\expandafter
    \@car\csname r@#1\endcsname\@nil
  \fi
}
\def\HyPsd@autorefname#1#2#3#4#5\@nil{%
  \ifx\\#4\\%
  \else
    \HyPsd@@autorefname#4.\@nil
  \fi
}
\def\HyPsd@@autorefname#1.#2\@nil{%
  \@ifundefined{#1autorefname}{%
    \@ifundefined{#1name}{%
    }{%
      \csname#1name\endcsname\space
    }%
  }{%
    \csname#1autorefname\endcsname\space
  }%
}
\begingroup
  \def\x#1#2{%
    \endgroup
    \let#1\def
    \def\HyPsd@DefCommand##1##2##{%
      #1%
      \expandafter\noexpand
        \csname\expandafter\@gobble\string##1\@empty\endcsname
      \@gobble
    }%
    \let#2\let
    \def\HyPsd@@LetCommand##1{%
      \expandafter\ifx\csname##1\expandafter\endcsname
                      \csname iftrue\endcsname
        \pdfstringdefWarn\let
        \expandafter\@gobble
      \else
        \expandafter\ifx\csname##1\expandafter\endcsname
                        \csname iffalse\endcsname
          \pdfstringdefWarn\let
          \expandafter\expandafter\expandafter\@gobble
        \else
          #2%
          \expandafter\noexpand
            \csname##1\expandafter\expandafter\expandafter\endcsname
        \fi
      \fi
    }%
  }%
\expandafter\x\csname <def>-command\expandafter\endcsname
              \csname <let>-command\endcsname
\def\HyPsd@LetCommand#1{%
  \expandafter\expandafter\expandafter\HyPsd@@LetCommand
    \expandafter\expandafter\expandafter{%
    \expandafter\@gobble\string#1\@empty
  }%
}
\def\HyPsd@ifnextchar#1{%
  \pdfstringdefWarn#1%
  \expandafter\@gobbletwo\@gobble
}
\def\HyPsd@protected@testopt#1{%
  \pdfstringdefWarn#1%
  \@gobbletwo
}
\def\HyPsd@Warning#1{%
  \begingroup
    \let\space\Hy@space
    \Hy@Warning{#1}%
  \endgroup
}
\let\HyPsd@fi\fi
\def\HyPsd@ProtectSpaces#1{%
  \xdef#1{%
    \iftrue
      \expandafter\HyPsd@@ProtectSpacesFi
        \expandafter|\expandafter\@empty#1| %
    \HyPsd@fi
  }%
  \expandafter\HyPsd@RemoveMask#1\HyPsd@End#1%
}%
\def\HyPsd@@ProtectSpacesFi#1 #2\HyPsd@fi{%
  \fi
  \unexpanded{#1}%
  \ifx\scrollmode#2\scrollmode
  \else
    \HyPsd@@ProtectSpacesFi\HyPsd@UnexpandableSpace#2%
  \HyPsd@fi
}%
\def\HyPsd@RemoveMask|#1|\HyPsd@End#2{%
  \xdef#2{\unexpanded\expandafter{#1}}%
}%
\def\HyPsd@RemoveBraces#1{%
  \ifx\scrollmode#1\scrollmode
  \else
    \HyPsd@@RemoveBracesFi#1\HyPsd@End{#1}%
  \fi
}
\def\HyPsd@@RemoveBracesFi#1#2\HyPsd@End#3\fi{%
  \fi
  \def\Hy@temp@A{#1#2}%
  \def\Hy@temp@B{#3}%
  \ifx\Hy@temp@A\Hy@temp@B
    \expandafter\def\expandafter\HyPsd@String\expandafter{%
      \HyPsd@String#1%
    }%
    \ifx\scrollmode#2\scrollmode
    \else
      \Hy@ReturnAfterFiFiEnd{%
        \HyPsd@RemoveBraces{#2}%
      }%
    \fi
  \else
    \def\Hy@temp@A{#1}%
    \HyPsd@AppendItalcorr\HyPsd@String
    \ifx\Hy@temp@A\@empty
      \Hy@ReturnAfterElseFiFiEnd{%
        \HyPsd@RemoveBraces{#2}%
      }%
    \else
      \HyPsd@ProtectSpaces\Hy@temp@A
      \HyPsd@AppendItalcorr\Hy@temp@A
      \Hy@ReturnAfterFiFiEnd{%
        \expandafter\HyPsd@RemoveBraces\expandafter
          {\Hy@temp@A#2}%
      }%
    \fi
  \fi
  \Hy@ReturnEnd
}
\def\HyPsd@AppendItalcorr#1{%
  \expandafter\HyPsd@@AppendItalcorr\expandafter{\/}#1%
}
\def\HyPsd@@AppendItalcorr#1#2{%
  \expandafter\def\expandafter#2\expandafter{#2#1}%
}
\@ifundefined{directlua}{%
}{%
  \expandafter\ifx\csname\endcsname\relax\fi
}
\begingroup
  \catcode`\Q=\active
  \let Q\@empty
  \gdef\HyPsd@CheckCatcodes#1#2\HyPsd@End{%
    \global\let\HyPsd@Rest\relax
    \ifcat\relax\noexpand#1\relax
      \ifx#1\protect
      \else
        \ifx#1\penalty
          \setbox\z@=\hbox{%
            \afterassignment\HyPsd@AfterCountRemove
            \count@=#2\HyPsd@End
          }%
        \else
          \ifx#1\kern
            \setbox\z@=\hbox{%
              \afterassignment\HyPsd@AfterDimenRemove
              \dimen@=#2\HyPsd@End
            }%
          \else
            \ifx#1\hskip
              \setbox\z@=\hbox{%
                \afterassignment\HyPsd@AfterSkipRemove
                \skip@=#2\HyPsd@End
              }%
            \else
              \HyPsd@CatcodeWarning{#1}%
            \fi
          \fi
        \fi
      \fi
    \else
      \ifcat\noexpand#1\noexpandQ% active character
        \expandafter\expandafter\expandafter\def
        \expandafter\expandafter\expandafter\HyPsd@String
        \expandafter\expandafter\expandafter{%
          \expandafter\HyPsd@String\string#1%
        }%
      \else
        \ifcat#1A% letter
          \expandafter\def\expandafter\HyPsd@String\expandafter{%
            \HyPsd@String#1%
          }%
        \else
          \ifcat#1 % SPACE
            \expandafter\def\expandafter\HyPsd@String\expandafter{%
              \HyPsd@String\HyPsd@SPACEOPTI
            }%
          \else
            \ifcat$#1%
              \HyPsd@CatcodeWarning{math shift}%
            \else
              \ifcat&#1%
                \HyPsd@CatcodeWarning{alignment tab}%
              \else
                \ifcat^#1%
                  \HyPsd@CatcodeWarning{superscript}%
                \else
                  \ifcat_#1%
                    \HyPsd@CatcodeWarning{subscript}%
                  \else
                    \expandafter\def\expandafter\HyPsd@String\expandafter{%
                      \HyPsd@String#1%
                    }%
                  \fi
                \fi
              \fi
            \fi
          \fi
        \fi
      \fi
    \fi
    \ifx\HyPsd@Rest\relax
      \ifx\scrollmode#2\scrollmode
      \else
        \Hy@ReturnAfterFiFiEnd{%
          \HyPsd@CheckCatcodes#2\HyPsd@End
        }%
      \fi
    \else
      \ifx\HyPsd@Rest\@empty
      \else
        \Hy@ReturnAfterFiFiEnd{%
          \expandafter\HyPsd@CheckCatcodes\HyPsd@Rest\HyPsd@End
        }%
      \fi
    \fi
    \Hy@ReturnEnd
  }%
\endgroup
\def\HyPsd@AfterCountRemove#1\HyPsd@End{%
  \gdef\HyPsd@Rest{#1}%
}
\def\HyPsd@AfterDimenRemove#1\HyPsd@End{%
  \ifdim\ifx\HyPsd@String\@empty\z@\else\dimen@\fi>1ex %
    \HyPsd@ReplaceSpaceWarning{\string\kern\space\the\dimen@}%
    \gdef\HyPsd@Rest{\HyPsd@UnexpandableSpace #1}%
  \else
    \ifdim\dimen@=\z@
    \else
      \HyPsd@RemoveSpaceWarning{\string\kern\space\the\dimen@}%
    \fi
    \gdef\HyPsd@Rest{#1}%
  \fi
}
\def\HyPsd@AfterSkipRemove#1\HyPsd@End{%
  \ifdim\ifx\HyPsd@String\@empty\z@\else\skip@\fi>1ex %
    \HyPsd@ReplaceSpaceWarning{\string\hskip\space\the\skip@}%
    \gdef\HyPsd@Rest{\HyPsd@UnexpandableSpace #1}%
  \else
    \ifdim\skip@=\z@
    \else
      \HyPsd@RemoveSpaceWarning{\string\kern\space\the\skip@}%
    \fi
    \gdef\HyPsd@Rest{#1}%
  \fi
}
\def\HyPsd@CatcodeWarning#1{%
  \HyPsd@Warning{%
    Token not allowed in a PDF string (%
    \ifHy@unicode
      Unicode%
    \else
      PDFDocEncoding%
    \fi
    ):%
    \MessageBreak removing `\HyPsd@RemoveCmdPrefix#1'%
  }%
}
\begingroup
  \catcode`\|=0 %
  \catcode`\\=12 %
  |gdef|HyPsd@RemoveCmdPrefix#1{%
    |expandafter|HyPsd@@RemoveCmdPrefix
      |string#1|@empty\<>-|@empty|@empty
  }%
  |gdef|HyPsd@@RemoveCmdPrefix#1\<>-#2|@empty#3|@empty{#1#2}%
|endgroup
\def\HyPsd@RemoveSpaceWarning#1{%
  \HyPsd@Warning{%
    Token not allowed in a PDF string (%
    \ifHy@unicode
      Unicode%
    \else
      PDFDocEncoding%
    \fi
    ):%
    \MessageBreak #1\MessageBreak
    removed%
  }%
}
\def\HyPsd@ReplaceSpaceWarning#1{%
  \HyPsd@Warning{%
    Token not allowed in a PDF string (%
    \ifHy@unicode
      Unicode%
    \else
      PDFDocEncoding%
    \fi
    ):%
    \MessageBreak #1\MessageBreak
    replaced by space%
  }%
}
\def\HyPsd@GlyphProcess#1\relax#2\@empty{%
  \expandafter\def\expandafter\HyPsd@String\expandafter{%
    \HyPsd@String#1%
  }%
  \ifx\\#2\\%
  \else
    \Hy@ReturnAfterFi{%
      \HyPsd@GlyphProcessWarning#2\@empty
    }%
  \fi
}
\def\HyPsd@GlyphProcessWarning#1>#2\@empty{%
  \HyPsd@@GlyphProcessWarning#1++>%
  \HyPsd@GlyphProcess#2\@empty
}
\def\HyPsd@@GlyphProcessWarning#1+#2+#3>{%
  \ifx\\#2\\%
    \HyPsd@Warning{%
      Glyph not defined in %
      P\ifHy@unicode U\else D1\fi\space encoding,\MessageBreak
      removing `\@backslashchar#1'%
    }%
  \else
    \HyPsd@Warning{%
      Composite letter `\@backslashchar#1+#2'\MessageBreak
      not defined in P\ifHy@unicode U\else D1\fi\space encoding,%
      \MessageBreak
      removing `\@backslashchar#1'%
    }%
  \fi
}
\def\HyPsd@spaceopti#1{ % first space
  \ifx\HyPsd@spaceopti#1%
    \040%
  \else
    #1%
  \fi
}%
\def\HyPsd@Subst#1#2#3{%
  \def\HyPsd@@ReplaceFi##1#1##2\END\fi{%
    \fi
    ##1%
    \ifx\scrollmode##2\scrollmode
    \else
      #2%
      \HyPsd@@ReplaceFi##2\END
    \fi
  }%
  \xdef#3{%
    \iftrue
      \expandafter\HyPsd@@ReplaceFi#3#1\END
    \fi
  }%
}
\def\HyPsd@StringSubst#1{%
  \expandafter\HyPsd@Subst\expandafter{\string#1}%
}
\begingroup
  \lccode`\!=`\%%
  \lccode`\|=`\\%
  \lccode`\(=`\{%
  \lccode`\)=`\}%
  \lccode`0=\z@
  \lccode`1=\z@
  \lccode`3=\z@
  \lccode`4=\z@
  \lccode`5=\z@
  \lccode`7=\z@
\lowercase{\endgroup
  \def\HyPsd@EscapeTeX#1{%
    \HyPsd@Subst!{|045}#1%
    \HyPsd@Subst({|173}#1%
    \HyPsd@Subst){|175}#1%
  }%
}
\def\HyPsd@doxspace#1{%
  \ifx#1\relax\else
   \ifx#1.\else
    \ifx#1:\else
     \ifx#1,\else
      \ifx#1;\else
       \ifx#1!\else
        \ifx#1?\else
         \ifx#1/\else
          \ifx#1-\else
           \ifx#1'\else
             \HyPsd@SPACEOPTI
           \fi
          \fi
         \fi
        \fi
       \fi
      \fi
     \fi
    \fi
   \fi
  \fi
  #1%
}%
\begingroup
  \catcode`\|=0 %
  \catcode`\\=12 %
  |gdef|HyPsd@ConvertToUnicode#1{%
    |xdef#1{%
      |expandafter|HyPsd@DoConvert#1|@empty|@empty|@empty
    }%
    |ifx#1|@empty
    |else
      |xdef#1{%
        \376\377%
        #1%
      }%
    |fi
  }%
  |gdef|HyPsd@DoConvert#1{%
    |ifx#1|@empty
    |else
      |Hy@ReturnAfterFi{%
        |ifx#1\%%
          \%%
          |expandafter|HyPsd@DoEscape
        |else
          |HyPsd@Char{#1}%
          |expandafter|HyPsd@DoConvert
        |fi
      }%
    |fi
  }%
  |gdef|HyPsd@DoEscape#1{%
    |ifx#19%
      |expandafter|HyPsd@GetTwoBytes
    |else
      |Hy@ReturnAfterFi{%
        |ifx#18%
          00%
          |expandafter|HyPsd@GetTwoBytes
        |else
          #1%
          |expandafter|HyPsd@GetOneByte
        |fi
      }%
    |fi
  }%
  |gdef|HyPsd@GetTwoBytes#1\#2#3#4{%
    #1\#2#3#4%
    |HyPsd@DoConvert
  }%
  |gdef|HyPsd@GetOneByte#1#2{%
    #1#2%
    |HyPsd@DoConvert
  }%
|endgroup
\def\HyPsd@GetNextTwoTokens#1#2#3\END#4{%
  \xdef#4{#4#1#2}%
  \HyPsd@@ConvertToUnicode#3\END#4%
}
\begingroup
  \catcode0=9 %
  \catcode`\^=7 %
  \catcode`\^^^=12 %
  \def\x{^^^^0000}%
\expandafter\endgroup
\ifx\x\@empty
  \def\HyPsd@Char#1{%
    \ifnum`#1<128 %
      \@backslashchar 000#1%
    \else
      \ifnum`#1<65536 %
        \expandafter\HyPsd@CharTwoByte\number`#1!%
      \else
        \expandafter\expandafter\expandafter\HyPsd@CharSurrogate
        \intcalcSub{`#1}{65536}!%
      \fi
    \fi
  }%
  \def\HyPsd@CharTwoByte#1!{%
    \expandafter\expandafter\expandafter\HyPsd@CharOctByte
    \IntCalcDiv#1!256!!%
    \expandafter\expandafter\expandafter\HyPsd@CharOctByte
    \IntCalcMod#1!256!!%
  }%
  \def\HyPsd@CharOctByte#1!{%
    \@backslashchar
    \IntCalcDiv#1!64!%
    \intcalcDiv{\IntCalcMod#1!64!}{8}%
    \IntCalcMod#1!8!%
  }%
  \def\HyPsd@CharSurrogate#1!{%
    \@backslashchar 33%
    \IntCalcDiv#1!262144!%
    \expandafter\expandafter\expandafter\HyPsd@CharOctByte
    \intcalcDiv{\IntCalcMod#1!262144!}{1024}!%
    \@backslashchar 33%
    \expandafter\expandafter\expandafter\IntCalcAdd
    \intcalcDiv{\IntCalcMod#1!1024!}{256}!4!%
    \expandafter\expandafter\expandafter\HyPsd@CharOctByte
    \IntCalcMod#1!256!!%
  }%
\else
  \def\HyPsd@Char#1{%
    \@backslashchar 000#1%
  }%
\fi
\ifcsname UTFviii@loop\endcsname
 \def\HyPsd@expand@utfviii {%
    \count@"C2
    \@tempcnta"F5
    \def\UTFviii@tmp{\expandafter\def\expandafter~\expandafter{~}}%
    \UTFviii@loop
  }
\else
 \def\HyPsd@expand@utfviii {}
\fi
  \begingroup
    \lccode`\~=`^^f4\relax
  \lowercase{\endgroup
    \def\HyPsd@UTFviii{%
      \HyPsd@expand@utfviii
      \let\UTFviii@two@octets\HyPsd@UTFviii@two
      \let\UTFviii@three@octets\HyPsd@UTFviii@three
      \let\UTFviii@four@octets\HyPsd@UTFviii@four
      \ifx~\HyPsd@UTFviii@ccxliv@undef
        \let~\HyPsd@UTFviii@ccxliv@def
      \fi
      \let\unichar\HyPsd@unichar
    }%
  }%
  \def\HyPsd@UTFviii@ccxliv@undef{\@inpenc@undefined@{utf8}}%
  \edef\HyPsd@UTFviii@ccxliv@def{%
    \noexpand\UTFviii@four@octets\string ^^f4%
  }%
  \def\HyPsd@UTFviii@two#1#2{%
    \expandafter\HyPsd@UTFviii@@two
      \number\dimexpr.25\dimexpr`#1sp\expandafter\relax\expandafter|%
      \number`#1\expandafter|%
      \number\dimexpr.125\dimexpr`#2sp\expandafter\relax\expandafter|%
      \number`#2 \@nil
  }%
  \def\HyPsd@UTFviii@@two#1|#2|#3|#4\@nil{%
    \expandafter\8%
    \number\numexpr #1-48\expandafter\relax
    \csname\number\numexpr #2-4*#1\relax\expandafter\endcsname
    \number\numexpr #3-8*%
        \number\dimexpr.125\dimexpr#3sp\relax\relax\expandafter\relax
    \number\numexpr #4-8*#3\relax
  }%
  \def\HyPsd@UTFviii@three#1#2#3{%
    \expandafter\HyPsd@UTFviii@@three
      \number\dimexpr.25\dimexpr`#1sp\expandafter\relax\expandafter|%
      \number`#1\expandafter|%
      \number\ifnum\numexpr`#2-128\relax <32 0\else 1\fi\expandafter|%
      \number\dimexpr.25\dimexpr`#2sp\expandafter\relax\expandafter|%
      \number`#2\expandafter|%
      \number\dimexpr.125\dimexpr`#3sp\expandafter\relax\expandafter|%
      \number`#3 \@nil
  }%
  \def\HyPsd@UTFviii@@three#1|#2|#3|#4|#5|#6|#7\@nil{%
    \expandafter\9%
    \number\numexpr #1-56\expandafter\relax
    \number\numexpr 2*(#2-4*#1)+#3\expandafter\relax
    \number\numexpr #4 - 32 -\ifcase#3 0\else 8\fi\expandafter\relax
    \csname\number\numexpr #5-4*#4\relax\expandafter\endcsname
    \number\numexpr #6-16\expandafter\relax
    \number\numexpr #7-8*#6\relax
  }%
  \def\HyPsd@UTFviii@four#1#2{%
    \expandafter\HyPsd@@UTFviii@four\number
    \numexpr-1+(`#1-240)*4+\dimexpr.0625\dimexpr`#2sp-128sp%
    \expandafter|\number
    \numexpr`#2-16*\dimexpr.0625\dimexpr`#2sp|%
  }%
  \def\HyPsd@@UTFviii@four#1|#2|#3{%
    \933\number\dimexpr.25\dimexpr#1sp\relax\relax
    \csname\number\numexpr#1-4*\dimexpr.25\dimexpr#1sp\endcsname
    \ifodd#2 %
      \number\numexpr(#2-1)/2\relax
    \else
      \number\numexpr#2/2\relax
    \fi
    \number\numexpr\ifodd#2 4+\fi
        \dimexpr.0625\dimexpr`#3sp-128sp\relax\relax\relax
    \933%
    \expandafter\HyPsd@@@UTFviii@four\number
    \numexpr`#3-16*\dimexpr.0625\dimexpr`#3sp|%
  }%
  \def\HyPsd@@@UTFviii@four#1|#2{%
    \number\numexpr4+\dimexpr.25\dimexpr#1sp\relax\relax\relax
    \csname\number\numexpr#1-4*\dimexpr.25\dimexpr#1sp\endcsname
    \number\dimexpr.125\dimexpr`#2sp-128sp\relax\relax
    \number\numexpr`#2-8*\dimexpr.125\dimexpr`#2sp\relax\relax\relax
  }%
  \def\HyPsd@unichar#1{%
    \ifHy@unicode
      \ifnum#1>"10FFFF %
        \HyPsd@UnicodeReplacementCharacter % illegal
      \else
        \ifnum#1>"FFFF %
          \expandafter\HyPsd@unichar\expandafter{%
            \number\numexpr 55296+%
                \dimexpr.0009765625\dimexpr\number#1sp-\p@
                \relax\relax\relax
          }%
          \expandafter\HyPsd@unichar\expandafter{%
            \number\numexpr#1-9216%
                -1024*\dimexpr.0009765625\dimexpr\number#1sp-\p@
                \relax\relax\relax
        }%
        \else
          \ifnum#1>"7FF %
            \9%
            \expandafter\HyPsd@unichar@first@byte\expandafter{%
              \number
              \dimexpr.00390625\dimexpr\number#1sp\relax\relax
            }%
          \else
            \8%
            \number\dimexpr.00390625\dimexpr\number#1sp\relax\relax
          \fi
          \expandafter\HyPsd@unichar@second@byte\expandafter{%
            \number
            \numexpr#1-256*\number
                \dimexpr.00390625\dimexpr\number#1sp\relax\relax\relax
          }%
        \fi
      \fi
    \else
      .% unsupported (Unicode -> PDF Doc Encoding)
    \fi
  }%
  \def\HyPsd@UnicodeReplacementCharacter{\9377\375}%
  \def\HyPsd@unichar@first@byte#1{%
    \number\dimexpr.015625\dimexpr#1sp\relax\relax
    \expandafter\HyPsd@unichar@octtwo\expandafter{%
      \number
      \numexpr#1-64*\number\dimexpr.015625\dimexpr#1sp%
      \relax\relax\relax
    }%
  }%
  \def\HyPsd@unichar@second@byte#1{%
    \csname\number\dimexpr.015625\dimexpr#1sp\relax\relax\endcsname
    \expandafter\HyPsd@unichar@octtwo\expandafter{%
      \number
      \numexpr#1-64*\number\dimexpr.015625\dimexpr#1sp%
      \relax\relax\relax
    }%
  }%
  \def\HyPsd@unichar@octtwo#1{%
    \number\dimexpr.125\dimexpr#1sp\relax\relax
    \number\numexpr#1-8*\number\dimexpr.125\dimexpr#1sp%
    \relax\relax\relax
  }%
\def\HyPsd@utf@viii@undeferr#1#2#3#4#5#6{%
  \ifx\@gobble#1%
  \else
    [Please insert \textbackslash PrerenderUnicode%
    \textbraceleft#1\textbraceright\space
    into preamble]%
  \fi
}%
\def\HyPsd@DieFace#1{%
  \ifHy@unicode
    \ifnum#1<1 %
      \HyPsd@UnicodeReplacementCharacter
    \else
      \ifnum#1>6 %
        \9046\205%
        \expandafter\expandafter\expandafter
        \HyPsd@DieFaceLarge\intcalcSub{#1}{6}!%
      \else
        \9046\20\intcalcDec{#1}%
      \fi
    \fi
  \else
    .% Die faces are not part of PDFDocEncoding
  \fi
}
\def\HyPsd@DieFaceLarge#1!{%
  \ifnum#1>6 %
    \expandafter\@firstoftwo
  \else
    \expandafter\@secondoftwo
  \fi
  {%
    \9046\205%
    \expandafter\expandafter\expandafter
    \HyPsd@DieFaceLarge\IntCalcSub#1!6!!%
  }{%
    \9046\20\IntCalcDec#1!%
  }%
}
\def\HyPsd@MoonPha#1{%
  \ifcase\intcalcNum{#1} %
    \HyPsd@UnicodeReplacementCharacter
  \or % 1
    \9330\074\9337\032%
  \or % 2
    \HyPsd@UnicodeReplacementCharacter
  \or % 3
    \9330\074\9337\035%
  \or % 4
    \9330\074\9337\034%
  \else
    \HyPsd@UnicodeReplacementCharacter
  \fi
}
\def\HyPsd@ding#1{%
  \ifHy@unicode
    \ifnum#1<32 %
      \HyPsd@UnicodeReplacementCharacter
    \else
      \ifnum#1>254 %
        \HyPsd@UnicodeReplacementCharacter
      \else
        \ifnum#1<127 %
          \expandafter\expandafter\expandafter
          \HyPsd@@ding\intcalcNum{#1}!%
        \else
          \ifnum#1>160 %
            \expandafter\expandafter\expandafter
            \HyPsd@@ding\intcalcNum{#1}!%
          \else
            \HyPsd@UnicodeReplacementCharacter
          \fi
        \fi
      \fi
    \fi
  \else
    .% Dingbats are not part of PDFDocEncoding
  \fi
}
\def\HyPsd@@ding#1!{%
  \@ifundefined{HyPsd@ding@#1}{%
    \ifnum#1<127 %
      \9047%
      \HyPsd@DecimalToOctalSecond{\IntCalcSub#1!32!}%
    \else
      \ifnum#1<168 %
        \9047\14\IntCalcSub#1!160!%
      \else
        \ifnum#1>181 %
          \9047\HyPsd@DecimalToOctalSecond{\IntCalcSub#1!64!}%
        \else
          % 172..181 -> U+2460..U+2469
          \9044\HyPsd@DecimalToOctalSecond{\IntCalcSub#1!76!}%
        \fi
      \fi
    \fi
  }{%
    \csname HyPsd@ding@#1\endcsname
  }%
}
\@namedef{HyPsd@ding@32}{\space}
\@namedef{HyPsd@ding@37}{\9046\016}% U+260E
\@namedef{HyPsd@ding@42}{\9046\033}% U+261B
\@namedef{HyPsd@ding@43}{\9046\036}% U+261E
\@namedef{HyPsd@ding@72}{\9046\005}% U+2605
\@namedef{HyPsd@ding@108}{\9045\317}% U+25CF
\@namedef{HyPsd@ding@110}{\9045\240}% U+25A0
\@namedef{HyPsd@ding@115}{\9045\262}% U+25B2
\@namedef{HyPsd@ding@116}{\9045\274}% U+25BC
\@namedef{HyPsd@ding@117}{\9045\306}% U+25C6
\@namedef{HyPsd@ding@119}{\9045\327}% U+25D7
\@namedef{HyPsd@ding@168}{\textclubsuitblack}%
\@namedef{HyPsd@ding@169}{\textdiamondsuitblack}%
\@namedef{HyPsd@ding@170}{\textheartsuitblack}%
\@namedef{HyPsd@ding@171}{\textspadesuitblack}%
\@namedef{HyPsd@ding@213}{\textrightarrow}%
\@namedef{HyPsd@ding@214}{\textleftrightarrow}%
\@namedef{HyPsd@ding@215}{\textupdownarrow}%
\@namedef{HyPsd@ding@240}{\HyPsd@UnicodeReplacementCharacter}
\@ifpackageloaded{subfigure}{%
  \@ifundefined{sub@label}{%
    \Hy@hypertexnamesfalse
  }{%
    \renewcommand*{\sub@label}[1]{%
      \@bsphack
      \subfig@oldlabel{#1}%
      \if@filesw
        \begingroup
          \edef\@currentlabstr{%
            \expandafter\strip@prefix\meaning\@currentlabelname
          }%
          \protected@write\@auxout{}{%
            \string\newlabel{sub@#1}{%
              {\@nameuse{@@thesub\@captype}}%
              {\thepage}%
              {%
                \expandafter\strip@period\@currentlabstr
                \relax.\relax\@@@%
              }%
              {\@currentHref}%
              {}%
            }%
          }%
        \endgroup
      \fi
      \@esphack
    }%
  }%
}{}
\def\Hy@true{true}
\def\Hy@false{false}
\let\literalps@out\@gobble
\newcommand\pdfbookmark[3][]{}
\def\Acrobatmenu#1#2{\leavevmode#2}
\def\Hy@writebookmark#1#2#3#4#5{}%
\let\HyperRaiseLinkHook\@empty
\def\HyperRaiseLinkDefault{\baselineskip}
\newcount\Hy@SavedSpaceFactor
\def\Hy@SaveSpaceFactor{%
  \global\Hy@SavedSpaceFactor=\ifhmode\spacefactor\else\z@\fi
}
\def\Hy@RestoreSpaceFactor{%
  \relax
  \ifhmode
    \ifnum\Hy@SavedSpaceFactor>\z@
      \spacefactor=\Hy@SavedSpaceFactor
    \fi
  \fi
}
\def\Hy@SaveSavedSpaceFactor{%
  \edef\Hy@RestoreSavedSpaceFactor{%
    \global\Hy@SavedSpaceFactor=\the\Hy@SavedSpaceFactor\relax
  }%
}
\@ifl@t@r\fmtversion{2023-11-01}
 {\NewSocket{hyp/raisedlink}{1}}
 {\providecommand\UseSocket[2]{#2}}
\def\Hy@raisedlink#1{%
  \ifvmode
    \UseSocket{hyp/raisedlink}{#1}%
  \else
    \Hy@SaveSpaceFactor
    \penalty\@M
    \smash{%
      \begingroup
        \let\HyperRaiseLinkLength\@tempdima
        \setlength\HyperRaiseLinkLength\HyperRaiseLinkDefault
        \HyperRaiseLinkHook
      \expandafter\endgroup
      \expandafter\raise\the\HyperRaiseLinkLength\hbox{%
        \Hy@RestoreSpaceFactor
        #1%
        \Hy@SaveSpaceFactor
      }%
    }%
    \Hy@RestoreSpaceFactor
  \fi
}
\def\Hy@SaveLastskip{%
  \let\Hy@RestoreLastskip\relax
  \ifvmode
    \ifdim\lastskip=\z@
      \ifnum\lastnodetype=1 %
        \let\Hy@RestoreLastskip\relax
      \else
        \let\Hy@RestoreLastskip\nobreak
      \fi
    \else
      \begingroup
        \skip@=-\lastskip
        \edef\x{%
          \endgroup
          \def\noexpand\Hy@RestoreLastskip{%
            \noexpand\ifvmode
              \noexpand\nobreak
              \vskip\the\skip@
              \vskip\the\lastskip\relax
            \noexpand\fi
          }%
        }%
      \x
    \fi
  \else
    \ifhmode
      \ifdim\lastskip=\z@
        \let\Hy@RestoreLastskip\nobreak
      \else
        \begingroup
          \skip@=-\lastskip
          \edef\x{%
            \endgroup
            \def\noexpand\Hy@RestoreLastskip{%
              \noexpand\ifhmode
                \noexpand\nobreak
                \hskip\the\skip@
                \hskip\the\lastskip\relax
              \noexpand\fi
            }%
          }%
        \x
      \fi
    \fi
  \fi
}%
\SetupKeyvalOptions{%
  family=Hyp,%
  prefix=HyOpt%
}
\ExplSyntaxOn
\@ifundefined{AddToDocumentProperties}
  {
   \prop_new:N \g__hyp_documentproperties_prop
   \NewDocumentCommand\AddToDocumentProperties{O{\@currname}mm}
    {
      \exp_args:NNx
      \prop_gput:Nnn \g__hyp_documentproperties_prop
        {
          \tl_if_blank:eTF {#1}{top-level/}{#1/} #2
        }
        { #3}
    }
   \NewExpandableDocumentCommand\GetDocumentProperties{m}
     {
       \prop_item:Nn \g__hyp_documentproperties_prop {#1}
     }
  }{}
\ExplSyntaxOff
\def\IfHyperBooleanExists#1{%
  \@ifundefined{Hy@#1false}\@secondoftwo{%
    \@ifundefined{KV@Hyp@#1@default}\@secondoftwo\@firstoftwo
  }%
}
\@namedef{KV@Hyp@stoppedearly@default}{}
\def\IfHyperBoolean#1{%
  \IfHyperBooleanExists{#1}{%
    \csname ifHy@#1\endcsname
      \expandafter\@firstoftwo
    \else
      \expandafter\@secondoftwo
    \fi
  }\@secondoftwo
}
\def\Hy@boolkey#1#2{%
  \edef\Hy@tempa{#2}%
  \lowercase\expandafter{%
    \expandafter\def\expandafter\Hy@tempa\expandafter{\Hy@tempa}%
  }%
  \ifx\Hy@tempa\@empty
    \let\Hy@tempa\Hy@true
  \fi
  \ifx\Hy@tempa\Hy@true
  \else
    \ifx\Hy@tempa\Hy@false
    \else
      \let\Hy@tempa\relax
    \fi
  \fi
  \ifx\Hy@tempa\relax
    \Hy@WarnOptionValue{#2}{#1}{`true' or 'false'}%
  \else
    \Hy@Info{Option `#1' set `\Hy@tempa'}%
    \csname Hy@#1\Hy@tempa\endcsname
  \fi
}
\def\Hy@WarnOptionValue#1#2#3{%
  \Hy@Warning{%
    Unexpected value `#1'\MessageBreak
    of option `#2' instead of\MessageBreak
    #3%
  }%
}
\def\Hy@DisableOption#1{%
  \@ifundefined{KV@Hyp@#1@default}{%
    \define@key{Hyp}{#1}%
  }{%
    \define@key{Hyp}{#1}[]%
  }%
  {\Hy@WarnOptionDisabled{#1}}%
}

\def\Hy@WarnOptionDisabled#1{%
  \Hy@Warning{%
    Option `#1' has already been used,\MessageBreak
    setting the option has no effect%
  }%
}
\def\Hy@CheckOptionValue#1#2#3{%
  \begingroup
    \edef\x{#1}%
    \@onelevel@sanitize\x
    \let\y=y%
    \def\do##1##2{%
      \def\z{##1}%
      \@onelevel@sanitize\z
      \ifx\x\z
        \let\y=n%
        \let\do\@gobbletwo
      \fi
    }%
    #3%
    \ifx\y y%
      \def\do##1##2{%
        * `##1'%
        \ifx\\##2\\\else\space(##2)\fi
        \MessageBreak
      }%
      \Hy@Warning{%
        Values of option `#2':\MessageBreak
        #3%
        * An empty value disables the option.\MessageBreak
        Unknown value `\x'%
      }%
    \fi
  \endgroup
}
\def\Hy@DefNameKey#1{%
  \expandafter\Hy@@DefNameKey\csname @#1\endcsname{#1}%
}
\def\Hy@@DefNameKey#1#2#3{%
  \define@key{Hyp}{#2}{%
    \edef#1{##1}%
    \ifx#1\@empty
    \else
      \Hy@CheckOptionValue{##1}{#2}{#3}%
    \fi
  }%
  \let#1\@empty
}
\def\Hy@UseNameKey#1#2{%
  \ifx#2\@empty
  \else
    /#1/#2%
  \fi
}
\define@key{Hyp}{implicit}[true]{%
  \Hy@boolkey{implicit}{#1}%
}
\define@key{Hyp}{draft}[true]{%
  \Hy@boolkey{draft}{#1}%
}
\define@key{Hyp}{final}[true]{%
  \Hy@boolkey{final}{#1}%
}
\let\KV@Hyp@nolinks\KV@Hyp@draft
\def\Hy@ObsoletePaperOption#1{%
  \Hy@WarningNoLine{%
    Option `#1' is no longer used%
  }%
  \define@key{Hyp}{#1}[true]{}%
}
\def\Hy@temp#1{%
  \define@key{Hyp}{#1}[true]{%
    \Hy@ObsoletePaperOption{#1}%
  }%
}
\Hy@temp{a4paper}
\Hy@temp{a5paper}
\Hy@temp{b5paper}
\Hy@temp{letterpaper}
\Hy@temp{legalpaper}
\Hy@temp{executivepaper}
\define@key{Hyp}{setpagesize}[true]{%
  \Hy@boolkey{setpagesize}{#1}%
}
\define@key{Hyp}{debug}[true]{%
  \Hy@boolkey{debug}{#1}%
}
\define@key{Hyp}{linktocpage}[true]{%
  \Hy@boolkey{linktocpage}{#1}%
  \ifHy@linktocpage
    \let\Hy@linktoc\Hy@linktoc@page
  \else
    \let\Hy@linktoc\Hy@linktoc@section
  \fi
}
\chardef\Hy@linktoc@none=0 %
\chardef\Hy@linktoc@section=1 %
\chardef\Hy@linktoc@page=2 %
\chardef\Hy@linktoc@all=3 %
\ifHy@linktocpage
  \let\Hy@linktoc\Hy@linktoc@page
\else
  \let\Hy@linktoc\Hy@linktoc@section
\fi
\define@key{Hyp}{linktoc}{%
  \@ifundefined{Hy@linktoc@#1}{%
    \Hy@Warning{%
      Unexpected value `#1' of\MessageBreak
      option `linktoc' instead of `none',\MessageBreak
      `section', `page' or `all'%
    }%
  }{%
    \expandafter\let\expandafter\Hy@linktoc
    \csname Hy@linktoc@#1\endcsname
  }%
}
\define@key{Hyp}{extension}{\def\XR@ext{#1}}
\let\XR@ext\relax
\define@key{Hyp}{verbose}[true]{%
  \Hy@boolkey{verbose}{#1}%
}
\define@key{Hyp}{raiselinks}[true]{%
  \Hy@boolkey{raiselinks}{#1}%
}
\def\Hy@setbreaklinks#1{%
  \csname breaklinks#1\endcsname
}
\def\Hy@breaklinks@unsupported{%
  \ifx\Hy@setbreaklinks\@gobble
    \ifHy@breaklinks
      \Hy@WarningNoLine{%
        You have enabled option `breaklinks'.\MessageBreak
        But driver `\Hy@driver.def' does not suppport this.\MessageBreak
        Expect trouble with the link areas of broken links%
      }%
    \fi
  \fi
}
\define@key{Hyp}{breaklinks}[true]{%
  \Hy@boolkey{breaklinks}{#1}%
  \let\Hy@setbreaklinks\@gobble
}
\define@key{Hyp}{localanchorname}[true]{%
  \Hy@WarningNoLine{%
        Option `localanchorname' is deprecated%
      }%
  \Hy@boolkey{localanchorname}{#1}%
}
\define@key{Hyp}{pageanchor}[true]{%
  \Hy@boolkey{pageanchor}{#1}%
}
\define@key{Hyp}{plainpages}[true]{%
  \Hy@boolkey{plainpages}{#1}%
}
\define@key{Hyp}{naturalnames}[true]{%
  \Hy@boolkey{naturalnames}{#1}%
}
\define@key{Hyp}{hypertexnames}[true]{%
  \Hy@boolkey{hypertexnames}{#1}%
}
\define@key{Hyp}{nesting}[true]{%
  \Hy@boolkey{nesting}{#1}%
}
\define@key{Hyp}{destlabel}[true]{%
  \Hy@boolkey{destlabel}{#1}%
}
\define@key{Hyp}{unicode}[true]{%
  \Hy@boolkey{unicode}{#1}%
  \ifHy@unicode
    \def\HyPsd@pdfencoding{unicode}%
    \HyPsd@LoadUnicode
  \else
    \def\HyPsd@pdfencoding{pdfdoc}%
  \fi
}
\Hy@AtBeginDocument{%
  \ifx\HyPsd@LoadUnicode\relax
  \else
    \def\HyPsd@LoadUnicode{%
      \Hy@Error{%
        Unicode support for bookmarks is not available.\MessageBreak
        Activate unicode support by using one of the options\MessageBreak
        `unicode', `pdfencoding=unicode', `pdfencoding=auto'\MessageBreak
        in the preamble%
      }\@ehc
      \global\let\HyPsd@LoadUnicode\relax
      \global\Hy@unicodefalse
      \global\let\Hy@unicodetrue\Hy@unicodefalse
    }%
  \fi
}
\define@key{Hyp}{pdfencoding}{%
  \edef\HyPsd@temp{#1}%
  \ifx\HyPsd@temp\HyPsd@pdfencoding@pdfdoc
    \let\HyPsd@pdfencoding\HyPsd@temp
    \Hy@unicodefalse
  \else
    \ifcase\ifx\HyPsd@temp\HyPsd@pdfencoding@unicode
             \z@
           \else
             \ifx\HyPsd@temp\HyPsd@pdfencoding@auto
               \z@
             \else
               \@ne
             \fi
           \fi
      \let\HyPsd@pdfencoding\HyPsd@temp
      \hypersetup{unicode}%
      \ifHy@unicode
        \def\HyPsd@pdfencoding{#1}%
      \else
        \Hy@Warning{Cannot switch to unicode bookmarks}%
        \let\HyPsd@pdfencoding\HyPsd@pdfencoding@pdfdoc
      \fi
    \else
      \@onelevel@sanitize\HyPsd@temp
      \Hy@Warning{%
        Values of option `pdfencoding':\MessageBreak
        `pdfdoc', `unicode', `auto'.\MessageBreak
        Ignoring unknown value `\HyPsd@temp'%
      }%
    \fi
  \fi
}
\def\HyPsd@pdfencoding@auto{auto}
\def\HyPsd@pdfencoding@pdfdoc{pdfdoc}
\def\HyPsd@pdfencoding@unicode{unicode}
\let\HyPsd@pdfencoding\HyPsd@pdfencoding@unicode
\HyPsd@LoadUnicode
\define@key{Hyp}{psdextra}[true]{%
  \Hy@boolkey{psdextra}{#1}%
  \HyPsd@LoadExtra
}
\def\hypersetup{\kvsetkeys{Hyp}}
\newif\ifHy@setpdfversion
\define@key{Hyp}{pdfversion}{%
  \@ifundefined{Hy@pdfversion@#1}{%
    \PackageWarning{hyperref}{%
      Unsupported PDF version `#1'.\MessageBreak
      Valid values: 1.2-1.7, 2.0%
    }%
  }{%
    \Hy@setpdfversiontrue
    \@nameuse{Hy@pdfversion@#1}%
  }%
}
\@namedef{Hy@pdfversion@1.2}{\def\Hy@pdf@majorversion{1}\def\Hy@pdf@minorversion{2}}%
\@namedef{Hy@pdfversion@1.3}{\def\Hy@pdf@majorversion{1}\def\Hy@pdf@minorversion{3}}%
\@namedef{Hy@pdfversion@1.4}{\def\Hy@pdf@majorversion{1}\def\Hy@pdf@minorversion{4}}%
\@namedef{Hy@pdfversion@1.5}{\def\Hy@pdf@majorversion{1}\def\Hy@pdf@minorversion{5}}%
\@namedef{Hy@pdfversion@1.6}{\def\Hy@pdf@majorversion{1}\def\Hy@pdf@minorversion{6}}%
\@namedef{Hy@pdfversion@1.7}{\def\Hy@pdf@majorversion{1}\def\Hy@pdf@minorversion{7}}%
\@namedef{Hy@pdfversion@2.0}{\def\Hy@pdf@majorversion{2}\def\Hy@pdf@minorversion{0}}%
\def\Hy@pdf@majorversion{1}\def\Hy@pdf@minorversion{5}
\let\Hy@pdfversion\Hy@pdf@minorversion
\def\Hy@pdf@majorminor@version{\numexpr100*\Hy@pdf@majorversion+\Hy@pdf@minorversion\relax}
\def\Hy@pdfmajorminor@version{\numexpr100*\Hy@pdfmajorversion+\Hy@pdfminorversion\relax}
\@ifundefined{pdfminorversion}{}{%
\@ifundefined{pdfmajorversion}{%
\newcount\pdfmajorversion
\pdfmajorversion=1
}{}%
}
\ifx\pdfmajorversion\@undefined\else
\def\Hy@pdfmajorversion{\pdfmajorversion}
\fi
\newif\ifHy@DviMode
\let\Hy@DviErrMsg\@empty
\ifpdf
  \def\Hy@DviErrMsg{pdfTeX or LuaTeX is running in PDF mode}%
\else
  \ifxetex
    \def\Hy@DviErrMsg{XeTeX is running}%
  \else
    \ifvtex
      \ifnum\OpMode=\z@
        \Hy@DviModetrue
      \else
        \def\Hy@DviErrMsg{VTeX is running, but not in DVI mode}%
      \fi
    \else
      \Hy@DviModetrue
    \fi
  \fi
\fi
\def\HyOpt@CheckDvi#1{%
  \ifHy@DviMode
    \expandafter\@firstofone
  \else
    \Hy@Error{%
      Wrong DVI mode driver option `#1',\MessageBreak
      because \Hy@DviErrMsg
    }\@ehc
    \expandafter\@gobble
  \fi
}
\DeclareVoidOption{tex4ht}{%
  \Hy@texhttrue
  \kvsetkeys{Hyp}{colorlinks=true}%
  \def\BeforeTeXIVht{\RequirePackage{color}}%
  \def\Hy@driver{htex4ht}%
  \def\MaybeStopEarly{%
    \Hy@Message{Stopped early}%
    \Hy@AtBeginDocument{%
      \PDF@FinishDoc
      \gdef\PDF@FinishDoc{}%
    }%
    \endinput
  }%
}
\DeclareVoidOption{pdftex}{%
  \ifpdf
    \def\Hy@driver{hpdftex}%
    \PassOptionsToPackage{pdftex}{color}%
  \else
    \Hy@Error{%
      Wrong driver option `pdftex',\MessageBreak
      because pdfTeX in PDF mode is not detected%
    }\@ehc
  \fi
}
\DeclareVoidOption{luatex}{%
  \ifpdf
    \ifx\pdfextension\@undefined
      \def\Hy@driver{hpdftex}%
      \PassOptionsToPackage{pdftex}{color}%
    \else
      \def\Hy@driver{hluatex}%
      \PassOptionsToPackage{luatex}{color}%
    \fi
  \else
    \Hy@Error{%
      Wrong driver option `luatex',\MessageBreak
      because luaTeX in PDF mode is not detected%
    }\@ehc
  \fi
}
\DeclareVoidOption{nativepdf}{%
  \HyOpt@CheckDvi{nativepdf}{%
    \def\Hy@driver{hdvips}%
    \PassOptionsToPackage{dvips}{color}%
  }%
}
\DeclareVoidOption{dvipdfm}{%
  \HyOpt@CheckDvi{dvipdfm}{%
    \def\Hy@driver{hdvipdfm}%
  }%
}
\DeclareVoidOption{dvipdfmx}{%
  \HyOpt@CheckDvi{dvipdfmx}{%
    \def\Hy@driver{hdvipdfm}%
    \PassOptionsToPackage{dvipdfmx}{color}%
  }%
}
\define@key{Hyp}{dvipdfmx-outline-open}[true]{%
  \expandafter\ifx\csname if#1\expandafter\endcsname
                  \csname iftrue\endcsname
    \chardef\SpecialDvipdfmxOutlineOpen\@ne
  \else
    \chardef\SpecialDvipdfmxOutlineOpen\z@
  \fi
}
\DeclareVoidOption{xetex}{%
  \ifxetex
    \def\Hy@driver{hxetex}%
  \else
    \Hy@Error{%
      Wrong driver option `xetex',\MessageBreak
      because XeTeX is not detected%
    }\@ehc
  \fi
}
\DeclareVoidOption{pdfmark}{%
  \HyOpt@CheckDvi{pdfmark}{%
    \def\Hy@driver{hdvips}%
  }%
}
\DeclareVoidOption{dvips}{%
  \HyOpt@CheckDvi{dvips}{%
    \def\Hy@driver{hdvips}%
    \PassOptionsToPackage{dvips}{color}%
  }%
}
\DeclareVoidOption{hypertex}{%
  \HyOpt@CheckDvi{hypertex}{%
    \def\Hy@driver{hypertex}%
  }%
}
\let\Hy@MaybeStopNow\relax
\DeclareVoidOption{vtex}{%
  \ifvtex
    \ifnum 0\ifnum\OpMode<1 1\fi \ifnum\OpMode>3 1\fi =0 %
      \def\Hy@driver{hvtex}%
    \else
      \ifnum\OpMode=10\relax
        \def\Hy@driver{hvtexhtm}%
        \def\MaybeStopEarly{%
           \Hy@Message{Stopped early}%
           \Hy@AtBeginDocument{%
             \PDF@FinishDoc
             \gdef\PDF@FinishDoc{}%
           }%
           \endinput
        }%
      \else
        \Hy@Error{%
          Wrong driver option `vtex',\MessageBreak
          because of wrong OpMode (\the\OpMode)%
        }\@ehc
      \fi
    \fi
  \else
    \Hy@Error{%
      Wrong driver option `vtex',\MessageBreak
      because VTeX is not running%
    }\@ehc
  \fi
}
\DeclareVoidOption{vtexpdfmark}{%
  \ifvtex
    \ifnum 0\ifnum\OpMode<1 1\fi \ifnum\OpMode>3 1\fi =0 %
      \def\Hy@driver{hvtexmrk}%
    \else
      \Hy@Error{%
        Wrong driver option `vtexpdfmark',\MessageBreak
        because of wrong OpMode (\the\OpMode)%
      }\@ehc
    \fi
  \else
    \Hy@Error{%
      Wrong driver option `vtexpdfmark,\MessageBreak
      because VTeX is not running%
    }\@ehc
  \fi
}
\DeclareVoidOption{dviwindo}{%
  \HyOpt@CheckDvi{dviwindo}{%
    \def\Hy@driver{hdviwind}%
    \kvsetkeys{Hyp}{colorlinks}%
    \PassOptionsToPackage{dviwindo}{color}%
  }%
}
\DeclareVoidOption{dvipsone}{%
  \HyOpt@CheckDvi{dvipsone}{%
    \def\Hy@driver{hdvipson}%
    \PassOptionsToPackage{dvipsone}{color}%
  }%
}
\DeclareVoidOption{textures}{%
  \HyOpt@CheckDvi{textures}{%
    \def\Hy@driver{htexture}%
  }%
}
\DeclareVoidOption{latex2html}{%
  \Hy@Warning{Option `latex2html` is obsolete. \MessageBreak
   A current html.sty will do all necessary (re)definitions%
  }%
}
\DeclareVoidOption{hitex}{%
  \ifhint
   \IfFileExists{hhitex.def}
     {\def\Hy@driver{hhitex}}%
     {\Hy@Warning{%
      Missing driver file `hhitex.def',\MessageBreak
      ignoring hitex driver%
     }}%
  \else
    \Hy@Error{%
      Wrong driver option `hitex',\MessageBreak
      because HiTeX is not detected%
    }\@ehc
  \fi
}
\DeclareVoidOption{ps2pdf}{%
  \HyOpt@CheckDvi{ps2pdf}{%
    \def\Hy@driver{hdvips}%
    \PassOptionsToPackage{dvips}{color}%
  }%
}
\let\HyOpt@DriverFallback\@empty
\define@key{Hyp}{driverfallback}{%
  \ifHy@DviMode
    \def\HyOpt@DriverFallback{#1}%
    \Hy@Match\HyOpt@DriverFallback{}{%
      ^(|dvipdfm|dvipdfmx|dvips|dvipsone|dviwindo|hypertex|ps2pdf|%
       latex2html|tex4ht)$%
    }{}{%
      \Hy@Warning{%
        Invalid driver `#1' for option\MessageBreak
        `driverfallback'%
      }%
      \let\HyOpt@DriverFallback\@empty
    }%
  \fi
}
\let\HyOpt@CustomDriver\@empty
\define@key{Hyp}{customdriver}{%
  \IfFileExists{#1.def}{%
    \def\HyOpt@CustomDriver{#1}%
  }{%
    \Hy@Warning{%
      Missing driver file `#1.def',\MessageBreak
      ignoring custom driver%
    }%
  }%
}
\define@key{Hyp}{hyperfigures}[true]{%
  \Hy@boolkey{hyperfigures}{#1}%
}
\define@key{Hyp}{hyperfootnotes}[true]{%
  \Hy@boolkey{hyperfootnotes}{#1}%
}
\def\back@none{none}
\def\back@section{section}
\def\back@page{page}
\def\back@slide{slide}
\define@key{Hyp}{backref}[section]{%
  \lowercase{\def\Hy@tempa{#1}}%
  \ifx\Hy@tempa\@empty
    \let\Hy@tempa\back@section
  \fi
  \ifx\Hy@tempa\Hy@false
    \let\Hy@tempa\back@none
  \fi
  \ifx\Hy@tempa\back@slide
    \let\Hy@tempa\back@section
  \fi
  \ifx\Hy@tempa\back@page
    \PassOptionsToPackage{hyperpageref}{backref}%
    \Hy@backreftrue
  \else
    \ifx\Hy@tempa\back@section
      \PassOptionsToPackage{hyperref}{backref}%
      \Hy@backreftrue
    \else
      \ifx\Hy@tempa\back@none
        \Hy@backreffalse
      \else
        \Hy@WarnOptionValue{#1}{backref}{%
          `section', `slide', `page', `none',\MessageBreak
          or `false'}%
      \fi
    \fi
  \fi
}
\define@key{Hyp}{pagebackref}[true]{%
  \edef\Hy@tempa{#1}%
  \lowercase\expandafter{%
    \expandafter\def\expandafter\Hy@tempa\expandafter{\Hy@tempa}%
  }%
  \ifx\Hy@tempa\@empty
    \let\Hy@tempa\Hy@true
  \fi
  \ifx\Hy@tempa\Hy@true
    \PassOptionsToPackage{hyperpageref}{backref}%
    \Hy@backreftrue
  \else
    \ifx\Hy@tempa\Hy@false
      \Hy@backreffalse
    \else
      \Hy@WarnOptionValue{#1}{pagebackref}{`true' or `false'}%
    \fi
  \fi
}
\define@key{Hyp}{hyperindex}[true]{%
  \Hy@boolkey{hyperindex}{#1}%
}
\define@key{Hyp}{encap}[\|]{%
  \def\HyInd@EncapChar{#1}%
}
\def\HyLang@afrikaans{%
  \def\equationautorefname{Vergelyking}%
  \def\footnoteautorefname{Voetnota}%
  \def\itemautorefname{Item}%
  \def\figureautorefname{Figuur}%
  \def\tableautorefname{Tabel}%
  \def\partautorefname{Deel}%
  \def\appendixautorefname{Bylae}%
  \def\chapterautorefname{Hoofstuk}%
  \def\sectionautorefname{Afdeling}%
  \def\subsectionautorefname{Subafdeling}%
  \def\subsubsectionautorefname{Subsubafdeling}%
  \def\paragraphautorefname{Paragraaf}%
  \def\subparagraphautorefname{Subparagraaf}%
  \def\FancyVerbLineautorefname{Lyn}%
  \def\theoremautorefname{Teorema}%
  \def\pageautorefname{Bladsy}%
}
\def\HyLang@english{%
  \def\equationautorefname{Equation}%
  \def\footnoteautorefname{footnote}%
  \def\itemautorefname{item}%
  \def\figureautorefname{Figure}%
  \def\tableautorefname{Table}%
  \def\partautorefname{Part}%
  \def\appendixautorefname{Appendix}%
  \def\chapterautorefname{chapter}%
  \def\sectionautorefname{section}%
  \def\subsectionautorefname{subsection}%
  \def\subsubsectionautorefname{subsubsection}%
  \def\paragraphautorefname{paragraph}%
  \def\subparagraphautorefname{subparagraph}%
  \def\FancyVerbLineautorefname{line}%
  \def\theoremautorefname{Theorem}%
  \def\pageautorefname{page}%
}
\def\HyLang@french{%
  \def\equationautorefname{\'equation}%
  \def\footnoteautorefname{note}%
  \def\itemautorefname{item}%
  \def\figureautorefname{figure}%
  \def\tableautorefname{tableau}%
  \def\partautorefname{partie}%
  \def\appendixautorefname{annexe}%
  \def\chapterautorefname{chapitre}%
  \def\sectionautorefname{section}%
  \def\subsectionautorefname{sous-section}%
  \def\subsubsectionautorefname{sous-sous-section}%
  \def\paragraphautorefname{paragraphe}%
  \def\subparagraphautorefname{sous-paragraphe}%
  \def\FancyVerbLineautorefname{ligne}%
  \def\theoremautorefname{th\'eor\`eme}%
  \def\pageautorefname{page}%
}
\def\HyLang@german{%
  \def\equationautorefname{Gleichung}%
  \def\footnoteautorefname{Fu\ss note}%
  \def\itemautorefname{Punkt}%
  \def\figureautorefname{Abbildung}%
  \def\tableautorefname{Tabelle}%
  \def\partautorefname{Teil}%
  \def\appendixautorefname{Anhang}%
  \def\chapterautorefname{Kapitel}%
  \def\sectionautorefname{Abschnitt}%
  \def\subsectionautorefname{Unterabschnitt}%
  \def\subsubsectionautorefname{Unterunterabschnitt}%
  \def\paragraphautorefname{Absatz}%
  \def\subparagraphautorefname{Unterabsatz}%
  \def\FancyVerbLineautorefname{Zeile}%
  \def\theoremautorefname{Theorem}%
  \def\pageautorefname{Seite}%
}
\def\HyLang@italian{%
  \def\equationautorefname{Equazione}%
  \def\footnoteautorefname{nota}%
  \def\itemautorefname{punto}%
  \def\figureautorefname{Figura}%
  \def\tableautorefname{Tabella}%
  \def\partautorefname{Parte}%
  \def\appendixautorefname{Appendice}%
  \def\chapterautorefname{Capitolo}%
  \def\sectionautorefname{sezione}%
  \def\subsectionautorefname{sottosezione}%
  \def\subsubsectionautorefname{sottosottosezione}%
  \def\paragraphautorefname{paragrafo}%
  \def\subparagraphautorefname{sottoparagrafo}%
  \def\FancyVerbLineautorefname{linea}%
  \def\theoremautorefname{Teorema}%
  \def\pageautorefname{Pag.\@}%
}
\def\HyLang@magyar{%
  \def\equationautorefname{Egyenlet}%
  \def\footnoteautorefname{l\'abjegyzet}%
  \def\itemautorefname{Elem}%
  \def\figureautorefname{\'Abra}%
  \def\tableautorefname{T\'abl\'azat}%
  \def\partautorefname{R\'esz}%
  \def\appendixautorefname{F\"uggel\'ek}%
  \def\chapterautorefname{fejezet}%
  \def\sectionautorefname{szakasz}%
  \def\subsectionautorefname{alszakasz}%
  \def\subsubsectionautorefname{alalszakasz}%
  \def\paragraphautorefname{bekezd\'es}%
  \def\subparagraphautorefname{albekezd\'es}%
  \def\FancyVerbLineautorefname{sor}%
  \def\theoremautorefname{T\'etel}%
  \def\pageautorefname{oldal}%
}
\def\HyLang@portuges{%
  \def\equationautorefname{Equa\c c\~ao}%
  \def\footnoteautorefname{Nota de rodap\'e}%
  \def\itemautorefname{Item}%
  \def\figureautorefname{Figura}%
  \def\tableautorefname{Tabela}%
  \def\partautorefname{Parte}%
  \def\appendixautorefname{Ap\^endice}%
  \def\chapterautorefname{Cap\'itulo}%
  \def\sectionautorefname{Se\c c\~ao}%
  \def\subsectionautorefname{Subse\c c\~ao}%
  \def\subsubsectionautorefname{Subsubse\c c\~ao}%
  \def\paragraphautorefname{par\'agrafo}%
  \def\subparagraphautorefname{subpar\'agrafo}%
  \def\FancyVerbLineautorefname{linha}%
  \def\theoremautorefname{Teorema}%
  \def\pageautorefname{P\'agina}%
}
\def\HyLang@russian{%
  \def\equationautorefname{\cyr\cyrv\cyrery\cyrr.}%
  \def\footnoteautorefname{%
    \cyr\cyrp\cyro\cyrd\cyrs\cyrt\cyrr.\ \cyrp\cyrr\cyri\cyrm.%
  }%
  \def\itemautorefname{\cyr\cyrp.}%
  \def\figureautorefname{\cyr\cyrr\cyri\cyrs.}%
  \def\tableautorefname{\cyr\cyrt\cyra\cyrb\cyrl.}%
  \def\partautorefname{\cyr\cyrch.}%
  \def\chapterautorefname{\cyr\cyrg\cyrl.}%
  \def\sectionautorefname{\cyr\cyrr\cyra\cyrz\cyrd.}%
  \def\appendixautorefname{\cyr\cyrp\cyrr\cyri\cyrl.}%
  \def\subsectionautorefname{\cyr\cyrr\cyra\cyrz\cyrd.}%
  \def\subsubsectionautorefname{\cyr\cyrr\cyra\cyrz\cyrd.}%
  \def\paragraphautorefname{\cyr\cyrp.}%
  \def\subparagraphautorefname{\cyr\cyrp.}%
  \def\FancyVerbLineautorefname{\cyr\cyrs\cyrt\cyrr.}%
  \def\theoremautorefname{\cyr\cyrt\cyre\cyro\cyrr.}%
  \def\pageautorefname{\cyr\cyrs.}%
}
\def\HyLang@spanish{%
  \def\equationautorefname{Ecuaci\'on}%
  \def\footnoteautorefname{Nota a pie de p\'agina}%
  \def\itemautorefname{Elemento}%
  \def\figureautorefname{Figura}%
  \def\tableautorefname{Tabla}%
  \def\partautorefname{Parte}%
  \def\appendixautorefname{Ap\'endice}%
  \def\chapterautorefname{Cap\'itulo}%
  \def\sectionautorefname{Secci\'on}%
  \def\subsectionautorefname{Subsecci\'on}%
  \def\subsubsectionautorefname{Subsubsecci\'on}%
  \def\paragraphautorefname{P\'arrafo}%
  \def\subparagraphautorefname{Subp\'arrafo}%
  \def\FancyVerbLineautorefname{L\'inea}%
  \def\theoremautorefname{Teorema}%
  \def\pageautorefname{P\'agina}%
}
\def\HyLang@catalan{%
\def\equationautorefname{Equaci\'o}%
\def\footnoteautorefname{Nota al peu de p\`agina}%
\def\itemautorefname{Element}%
\def\figureautorefname{Figura}%
\def\tableautorefname{Taula}%
\def\partautorefname{Part}%
\def\appendixautorefname{Ap\`endix}%
\def\chapterautorefname{Cap\'itol}%
\def\sectionautorefname{Secci\'o}%
\def\subsectionautorefname{Subsecci\'o}%
\def\subsubsectionautorefname{Subsubsecci\'o}%
\def\paragraphautorefname{Par\`agraf}%
\def\subparagraphautorefname{Subpar\`agraf}%
\def\FancyVerbLineautorefname{L\'inia}%
\def\theoremautorefname{Teorema}%
\def\pageautorefname{P\`agina}%
}
\def\HyLang@vietnamese{%
  \def\equationautorefname{Ph\uhorn{}\ohorn{}ng tr\`inh}%
  \def\footnoteautorefname{Ch\'u th\'ich}%
  \def\itemautorefname{m\d{u}c}%
  \def\figureautorefname{H\`inh}%
  \def\tableautorefname{B\h{a}ng}%
  \def\partautorefname{Ph\`\acircumflex{}n}%
  \def\appendixautorefname{Ph\d{u} l\d{u}c}%
  \def\chapterautorefname{ch\uhorn{}\ohorn{}ng}%
  \def\sectionautorefname{m\d{u}c}%
  \def\subsectionautorefname{m\d{u}c}%
  \def\subsubsectionautorefname{m\d{u}c}%
  \def\paragraphautorefname{\dj{}o\d{a}n}%
  \def\subparagraphautorefname{\dj{}o\d{a}n}%
  \def\FancyVerbLineautorefname{d\`ong}%
  \def\theoremautorefname{\DJ{}\d{i}nh l\'y}%
  \def\pageautorefname{Trang}%
}
\def\HyLang@greek{%
    \def\equationautorefname{\textEpsilon\textxi\acctonos\textiota\textsigma\textomega\textsigma\texteta}%
    \def\footnoteautorefname{\textupsilon\textpi\textomicron\textsigma\texteta\textmu\textepsilon\acctonos\textiota\textomega\textsigma\texteta}%
    \def\itemautorefname{\textalpha\textnu\texttau\textiota\textkappa\textepsilon\acctonos\textiota\textmu\textepsilon\textnu\textomicron}%
    \def\figureautorefname{\textSigma\textchi\acctonos\texteta\textmu\textalpha}%
    \def\tableautorefname{\textPi\acctonos\textiota\textnu\textalpha\textkappa\textalpha}%
    \def\partautorefname{\textMu\acctonos\textepsilon\textrho\textomicron\textvarsigma}%
    \def\appendixautorefname{\textPi\textalpha\textrho\acctonos\textalpha\textrho\texttau\texteta\textmu\textalpha}%
    \def\chapterautorefname{\textkappa\textepsilon\textphi\acctonos\textalpha\textlambda\textalpha\textiota\textomicron}%
    \def\sectionautorefname{\textepsilon\textnu\acctonos\textomicron\texttau\texteta\texttau\textalpha}%
    \def\subsectionautorefname{\textupsilon\textpi\textomicron\textepsilon\textnu\acctonos\textomicron\texttau\texteta\texttau\textalpha}%
    \def\subsubsectionautorefname{\textupsilon\textpi\textomicron-\textupsilon\textpi\textomicron\textepsilon\textnu\acctonos\textomicron\texttau\texteta\texttau\textalpha}%
    \def\paragraphautorefname{\textpi\textalpha\textrho\acctonos\textalpha\textgamma\textrho\textalpha\textphi\textomicron\textvarsigma}%
    \def\subparagraphautorefname{\textupsilon\textpi\textomicron\textpi\textalpha\textrho\acctonos\textalpha\textgamma\textrho\textalpha\textphi\textomicron\textvarsigma}%
    \def\FancyVerbLineautorefname{\textgamma\textrho\textalpha\textmu\textmu\acctonos\texteta}%
    \def\theoremautorefname{\textTheta\textepsilon\acctonos\textomega\textrho\texteta\textmu\textalpha}%
    \def\pageautorefname{\textsigma\textepsilon\textlambda\acctonos\textiota\textdelta\textalpha}%
}
\def\HyLang@dutch{%
    \def\equationautorefname{Vergelijking}%
    \def\footnoteautorefname{voetnoot}%
    \def\itemautorefname{punt}%
    \def\figureautorefname{Figuur}%
    \def\tableautorefname{Tabel}%
    \def\partautorefname{Deel}%
    \def\appendixautorefname{Bijlage}%
    \def\chapterautorefname{hoofdstuk}%
    \def\sectionautorefname{paragraaf}%
    \def\subsectionautorefname{deelparagraaf}%
    \def\subsubsectionautorefname{deel-deelparagraaf}%
    \def\paragraphautorefname{alinea}%
    \def\subparagraphautorefname{deelalinea}%
    \def\FancyVerbLineautorefname{regel}%
    \def\theoremautorefname{Stelling}%
    \def\pageautorefname{pagina}%
}
\def\HyLang@norsk{%
    \def\equationautorefname{Ligning}%
    \def\footnoteautorefname{fotnote}%
    \def\itemautorefname{element}%
    \def\figureautorefname{Figur}%
    \def\tableautorefname{Tabell}%
    \def\partautorefname{Del}%
    \def\appendixautorefname{Tillegg}%
    \def\chapterautorefname{kapittel}%
    \def\sectionautorefname{seksjon}%
    \def\subsectionautorefname{underseksjon}%
    \def\subsubsectionautorefname{under-underseksjon}%
    \def\paragraphautorefname{avsnitt}%
    \def\subparagraphautorefname{underavsnitt}%
    \def\FancyVerbLineautorefname{Linje}%
    \def\theoremautorefname{Teorem}%
    \def\pageautorefname{side}%
}
\def\HyLang@danish{%
  \def\equationautorefname{Ligning}%
  \def\footnoteautorefname{fodnote}%
  \def\itemautorefname{element}%
  \def\figureautorefname{Figur}%
  \def\tableautorefname{Tabel}%
  \def\partautorefname{Del}%
  \def\appendixautorefname{Bilag}%
  \def\chapterautorefname{kapitel}%
  \def\sectionautorefname{sektion}%
  \def\subsectionautorefname{under-sektion}%
  \def\subsubsectionautorefname{under-under-sektion}%
  \def\paragraphautorefname{afsnit}%
  \def\subparagraphautorefname{underafsnit}%
  \def\FancyVerbLineautorefname{linje}%
  \def\theoremautorefname{Teorem}%
  \def\pageautorefname{side}%
}
\def\HyLang@swedish{%
  \def\equationautorefname{Ekvation}%
  \def\footnoteautorefname{fotnot}%
  \def\itemautorefname{punkt}%
  \def\figureautorefname{Figur}%
  \def\tableautorefname{Tabell}%
  \def\partautorefname{Del}%
  \def\appendixautorefname{Bilaga}%
  \def\chapterautorefname{kapitel}%
  \def\sectionautorefname{avsnitt}%
  \def\subsectionautorefname{underavsnitt}%
  \def\subsubsectionautorefname{under-underavsnitt}%
  \def\paragraphautorefname{paragraf}%
  \def\subparagraphautorefname{underparagraf}%
  \def\FancyVerbLineautorefname{linje}%
  \def\theoremautorefname{Teorem}%
  \def\pageautorefname{sida}%
}
\def\HyLang@addto#1#2{%
  #2%
  \@temptokena{#2}%
  \ifx#1\relax
    \let#1\@empty
  \fi
  \ifx#1\@undefined
    \edef#1{\the\@temptokena}%
  \else
    \toks@\expandafter{#1}%
    \edef#1{\the\toks@\the\@temptokena}%
  \fi
  \@temptokena{}\toks@\@temptokena
}
\def\HyLang@DeclareLang#1#2#3{%
  \ifcsname extras#1\endcsname
    \expandafter\HyLang@addto
        \csname extras#1\expandafter\endcsname
        \csname HyLang@#2\endcsname
    \begingroup
      \edef\x{\endgroup
        #3%
      }%
    \x
    \@namedef{HyLang@#1@done}{}%
  \fi
  \begingroup
    \edef\x##1##2{%
      \noexpand\ifx##2\relax
        \errmessage{No definitions for language #2' found!}%
      \noexpand\fi
      \endgroup
      \noexpand\define@key{Hyp}{#1}[]{%
        \noexpand\@ifundefined{HyLang@#1@done}{%
          \noexpand\HyLang@addto{\noexpand##1}{\noexpand##2}%
          #3%
          \noexpand\@namedef{HyLang@#1@done}{}%
        }{}%
      }%
    }%
  \expandafter\x\csname extras#1\expandafter\endcsname
                \csname HyLang@#2\endcsname
}
\HyLang@DeclareLang{english}{english}{}
\HyLang@DeclareLang{UKenglish}{english}{}
\HyLang@DeclareLang{british}{english}{}
\HyLang@DeclareLang{USenglish}{english}{}
\HyLang@DeclareLang{american}{english}{}
\HyLang@DeclareLang{german}{german}{}
\HyLang@DeclareLang{austrian}{german}{}
\HyLang@DeclareLang{ngerman}{german}{}
\HyLang@DeclareLang{naustrian}{german}{}
\HyLang@DeclareLang{nswissgerman}{german}{}
\HyLang@DeclareLang{swissgerman}{german}{}
\HyLang@DeclareLang{russian}{russian}{\noexpand\hypersetup{unicode}}
\HyLang@DeclareLang{brazil}{portuges}{}
\HyLang@DeclareLang{brazilian}{portuges}{}
\HyLang@DeclareLang{portuguese}{portuges}{}
\HyLang@DeclareLang{spanish}{spanish}{}
\HyLang@DeclareLang{catalan}{catalan}{}
\HyLang@DeclareLang{afrikaans}{afrikaans}{}
\HyLang@DeclareLang{french}{french}{}
\HyLang@DeclareLang{frenchb}{french}{}
\HyLang@DeclareLang{francais}{french}{}
\HyLang@DeclareLang{acadian}{french}{}
\HyLang@DeclareLang{canadien}{french}{}
\HyLang@DeclareLang{italian}{italian}{}
\HyLang@DeclareLang{magyar}{magyar}{}
\HyLang@DeclareLang{hungarian}{magyar}{}
\HyLang@DeclareLang{greek}{greek}{}
\HyLang@DeclareLang{dutch}{dutch}{}
\HyLang@DeclareLang{norsk}{norsk}{}
\HyLang@DeclareLang{norwegian}{norsk}{}
\HyLang@DeclareLang{danish}{danish}{}
\HyLang@DeclareLang{swedish}{swedish}{}
\DeclareVoidOption{vietnamese}{%
  \HyLang@addto\extrasvietnamese\HyLang@vietnamese
  \Hy@AtEndOfPackage{%
    \@ifundefined{T@PU}{}{%
      \input{puvnenc.def}%
    }%
  }%
}
\DeclareVoidOption{vietnam}{%
  \HyLang@addto\extrasvietnam\HyLang@vietnamese
  \Hy@AtEndOfPackage{%
    \@ifundefined{T@PU}{}{%
      \input{puvnenc.def}%
    }%
  }%
}
\DeclareVoidOption{arabic}{%
  \Hy@AtEndOfPackage{%
    \@ifundefined{T@PU}{}{%
      \input{puarenc.def}%
    }%
  }%
}
\define@key{Hyp}{colorlinks}[true]{%
  \Hy@boolkey{colorlinks}{#1}%
}
\DeclareVoidOption{hidelinks}{%
  \Hy@colorlinksfalse
  \Hy@ocgcolorlinksfalse
  \Hy@frenchlinksfalse
  \def\Hy@colorlink##1{\begingroup}%
  \def\Hy@endcolorlink{\endgroup}%
  \def\@pdfborder{0 0 0}%
  \let\@pdfborderstyle\@empty
}
\define@key{Hyp}{ocgcolorlinks}[true]{%
  \Hy@boolkey{ocgcolorlinks}{#1}%
}
\Hy@AtBeginDocument{%
  \begingroup
    \@ifundefined{OBJ@OCG@view}{%
      \ifHy@ocgcolorlinks
        \Hy@Warning{%
          Driver does not support `ocgcolorlinks',\MessageBreak
          using `colorlinks' instead%
        }%
      \fi
    }{}%
  \endgroup
}
\define@key{Hyp}{frenchlinks}[true]{%
  \Hy@boolkey{frenchlinks}{#1}%
}
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname chapter\endcsname\relax
  \def\toclevel@part{0}%
\else
  \def\toclevel@part{-1}%
\fi
\def\toclevel@chapter{0}
\def\toclevel@section{1}
\def\toclevel@subsection{2}
\def\toclevel@subsubsection{3}
\def\toclevel@paragraph{4}
\def\toclevel@subparagraph{5}
\def\toclevel@figure{0}
\def\toclevel@table{0}
\define@key{Hyp}{bookmarks}[true]{%
  \Hy@boolkey{bookmarks}{#1}%
}
\define@key{Hyp}{bookmarksopen}[true]{%
  \Hy@boolkey{bookmarksopen}{#1}%
}
\let\Hy@bookmarksdepth\c@tocdepth
\define@key{Hyp}{bookmarksdepth}[]{%
  \begingroup
    \edef\x{#1}%
    \ifx\x\empty
      \global\let\Hy@bookmarksdepth\c@tocdepth
    \else
      \@ifundefined{toclevel@\x}{%
        \@onelevel@sanitize\x
        \edef\y{\expandafter\@car\x\@nil}%
        \ifcase 0\expandafter\ifx\y-1\fi
                 \expandafter\ifnum\expandafter`\y>47 %
                   \expandafter\ifnum\expandafter`\y<58 1\fi\fi\relax
          \Hy@Warning{Unknown document division name (\x)}%
        \else
          \setbox\z@=\hbox{%
            \count@=\x
            \xdef\Hy@bookmarksdepth{\the\count@}%
          }%
        \fi
      }{%
        \setbox\z@=\hbox{%
          \count@=\csname toclevel@\x\endcsname
          \xdef\Hy@bookmarksdepth{\the\count@}%
        }%
      }%
    \fi
  \endgroup
}
\define@key{Hyp}{bookmarksopenlevel}{%
  \def\@bookmarksopenlevel{#1}%
}
\def\@bookmarksopenlevel{\maxdimen}
\define@key{Hyp}{bookmarkstype}{%
  \def\Hy@bookmarkstype{#1}%
}
\def\Hy@bookmarkstype{toc}
\define@key{Hyp}{bookmarksnumbered}[true]{%
  \Hy@boolkey{bookmarksnumbered}{#1}%
}
\define@key{Hyp}{CJKbookmarks}[true]{%
  \Hy@boolkey{CJKbookmarks}{#1}%
}
\def\Hy@temp#1{%
  \expandafter\Hy@@temp\csname @#1color\endcsname{#1}%
}
\def\Hy@@temp#1#2#3{%
  \define@key{Hyp}{#2color}{%
    \HyColor@HyperrefColor{##1}#1%
  }%
  \def#1{#3}%
}
\Hy@temp{link}{red}
\Hy@temp{anchor}{black}
\Hy@temp{cite}{green}
\Hy@temp{file}{cyan}
\Hy@temp{url}{magenta}
\Hy@temp{menu}{red}
\Hy@temp{run}{\@filecolor}
\define@key{Hyp}{pagecolor}{%
  \Hy@WarningPageColor
}
\def\Hy@WarningPageColor{%
  \Hy@WarningNoLine{Option `pagecolor' is not available anymore}%
  \global\let\Hy@WarningPageColor\relax
}
\define@key{Hyp}{allcolors}{%
  \HyColor@HyperrefColor{#1}\@linkcolor
  \HyColor@HyperrefColor{#1}\@anchorcolor
  \HyColor@HyperrefColor{#1}\@citecolor
  \HyColor@HyperrefColor{#1}\@filecolor
  \HyColor@HyperrefColor{#1}\@urlcolor
  \HyColor@HyperrefColor{#1}\@menucolor
  \HyColor@HyperrefColor{#1}\@runcolor
}
\def\hyperbaseurl#1{\def\@baseurl{#1}}
\define@key{Hyp}{baseurl}{\hyperbaseurl{#1}}
\let\@baseurl\@empty
\def\hyperlinkfileprefix#1{\def\Hy@linkfileprefix{#1}}
\define@key{Hyp}{linkfileprefix}{\hyperlinkfileprefix{#1}}
\hyperlinkfileprefix{file:}
\let\@pdfpagetransition\relax
\define@key{Hyp}{pdfpagetransition}{%
  \def\@pdfpagetransition{#1}%
}
\let\@pdfpageduration\relax
\define@key{Hyp}{pdfpageduration}{%
  \def\@pdfpageduration{#1}%
  \Hy@Match\@pdfpageduration{}{%
    ^(|[0-9]+\.?[0-9]*|[0-9]*\.?[0-9]+)$%
  }{}{%
    \Hy@Warning{%
      Invalid value `\@pdfpageduration'\MessageBreak
      of option `pdfpageduration'\MessageBreak
      is replaced by an empty value%
    }%
    \let\@pdfpageduration\@empty
  }%
}
\def\Hy@ColorList{cite,file,link,menu,run,url}
\@for\Hy@temp:=\Hy@ColorList\do{%
  \edef\Hy@temp{%
    \noexpand\define@key{Hyp}{\Hy@temp bordercolor}{%
      \noexpand\HyColor@HyperrefBorderColor
          {##1}%
          \expandafter\noexpand\csname @\Hy@temp bordercolor\endcsname
          {hyperref}%
          {\Hy@temp bordercolor}%
    }%
  }%
  \Hy@temp
}
\define@key{Hyp}{pagebordercolor}{%
  \Hy@WarningPageBorderColor
}
\def\Hy@WarningPageBorderColor{%
  \Hy@WarningNoLine{Option `pagebordercolor' is not available anymore}%
  \global\let\Hy@WarningPageBorderColor\relax
}
\define@key{Hyp}{allbordercolors}{%
  \def\Hy@temp##1##2{%
    \HyColor@HyperrefBorderColor{#1}##1{hyperref}{##2bordercolor}%
  }%
  \Hy@temp\@citebordercolor{cite}%
  \Hy@temp\@filebordercolor{file}%
  \Hy@temp\@linkbordercolor{link}%
  \Hy@temp\@menubordercolor{menu}%
  \Hy@temp\@runbordercolor{run}%
  \Hy@temp\@urlbordercolor{url}%
}
\define@key{Hyp}{pdfhighlight}{\def\@pdfhighlight{#1}}
\Hy@DefNameKey{pdfhighlight}{%
  \do{/I}{Invert}%
  \do{/N}{None}%
  \do{/O}{Outline}%
  \do{/P}{Push}%
}
\def\Hy@setpdfhighlight{%
  \ifx\@pdfhighlight\@empty
  \else
    /H\@pdfhighlight
  \fi
}
\define@key{Hyp}{pdfborder}{%
  \let\Hy@temp\@pdfborder
  \def\@pdfborder{#1}%
  \Hy@Match\@pdfborder{}{%
    ^\HyPat@NonNegativeReal/ %
     \HyPat@NonNegativeReal/ %
     \HyPat@NonNegativeReal/%
     ( ?\[\HyPat@NonNegativeReal/( \HyPat@NonNegativeReal/)*])?$%
  }{}{%
    \Hy@Warning{%
      Invalid value `\@pdfborder'\MessageBreak
      for option `pdfborder'.\MessageBreak
      Option setting is ignored%
    }%
    \let\@pdfborder\Hy@temp
  }%
}
\define@key{Hyp}{pdfborderstyle}{%
  \let\Hy@temp\@pdfborderstyle
  \def\@pdfborderstyle{#1}%
  \Hy@Match\@pdfborderstyle{}{%
    ^%
    ( */Type */Border%
    | */W +\HyPat@NonNegativeReal/%
    | */S */[SDBIU]%
    | */D *\[ *(\HyPat@NonNegativeReal/( \HyPat@NonNegativeReal/)?)?]%
    )* *$%
  }{}{%
    \Hy@Warning{%
      Invalid value `\@pdfborderstyle'\MessageBreak
      for option `pdfborderstyle'.\MessageBreak
      Option setting is ignored%
    }%
    \let\@pdfborderstyle\Hy@temp
  }%
}
\def\Hy@setpdfborder{%
  \ifx\@pdfborder\@empty
  \else
    /Border[\@pdfborder]%
  \fi
  \ifx\@pdfborderstyle\@empty
  \else
    /BS<<\@pdfborderstyle>>%
  \fi
}
\Hy@DefNameKey{pdfpagemode}{%
  \do{UseNone}{}%
  \do{UseOutlines}{}%
  \do{UseThumbs}{}%
  \do{FullScreen}{}%
  \do{UseOC}{PDF 1.5}%
  \do{UseAttachments}{PDF 1.6}%
}
\Hy@DefNameKey{pdfnonfullscreenpagemode}{%
  \do{UseNone}{}%
  \do{UseOutlines}{}%
  \do{UseThumbs}{}%
  \do{FullScreen}{}%
  \do{UseOC}{PDF 1.5}%
  \do{UseAttachments}{PDF 1.6}%
}
\Hy@DefNameKey{pdfdirection}{%
  \do{L2R}{Left to right}%
  \do{R2L}{Right to left}%
}
\Hy@DefNameKey{pdfviewarea}{%
  \do{MediaBox}{}%
  \do{CropBox}{}%
  \do{BleedBox}{}%
  \do{TrimBox}{}%
  \do{ArtBox}{}%
}
\Hy@DefNameKey{pdfviewclip}{%
  \do{MediaBox}{}%
  \do{CropBox}{}%
  \do{BleedBox}{}%
  \do{TrimBox}{}%
  \do{ArtBox}{}%
}
\Hy@DefNameKey{pdfprintarea}{%
  \do{MediaBox}{}%
  \do{CropBox}{}%
  \do{BleedBox}{}%
  \do{TrimBox}{}%
  \do{ArtBox}{}%
}
\Hy@DefNameKey{pdfprintclip}{%
  \do{MediaBox}{}%
  \do{CropBox}{}%
  \do{BleedBox}{}%
  \do{TrimBox}{}%
  \do{ArtBox}{}%
}
\Hy@DefNameKey{pdfprintscaling}{%
  \do{AppDefault}{}%
  \do{None}{}%
}
\Hy@DefNameKey{pdfduplex}{%
  \do{Simplex}{}%
  \do{DuplexFlipShortEdge}{}%
  \do{DuplexFlipLongEdge}{}%
}
\Hy@DefNameKey{pdfpicktraybypdfsize}{%
  \do{true}{}%
  \do{false}{}%
}
\define@key{Hyp}{pdfprintpagerange}{%
  \def\@pdfprintpagerange{#1}%
}
\Hy@DefNameKey{pdfnumcopies}{%
  \do{2}{two copies}%
  \do{3}{three copies}%
  \do{4}{four copies}%
  \do{5}{five copies}%
}
\define@key{Hyp}{pdfusetitle}[true]{%
  \Hy@boolkey{pdfusetitle}{#1}%
}
\def\HyXeTeX@CheckUnicode{%
  \ifxetex
    \ifHy@unicode
    \else
      \Hy@WarningNoLine{%
        XeTeX driver only supports unicode.\MessageBreak
        Enabling option `unicode'%
      }%
      \kvsetkeys{Hyp}{unicode}%
    \fi
  \else
    \let\HyXeTeX@CheckUnicode\relax
  \fi
}
\def\HyPsd@PrerenderUnicode#1{%
  \begingroup
    \expandafter\ifx\csname PrerenderUnicode\endcsname\relax
    \else
      \sbox0{%
        \let\GenericInfo\@gobbletwo
        \let\GenericWarning\@gobbletwo
        \let\GenericError\@gobblefour
        \PrerenderUnicode{#1}%
       }%
    \fi
  \endgroup
}
\define@key{Hyp}{pdftitle}{%
  \AddToDocumentProperties[hyperref]{pdftitle}{#1}%
  \HyXeTeX@CheckUnicode
  \HyPsd@PrerenderUnicode{#1}%
  \pdfstringdef\@pdftitle{#1}%
}
\define@key{Hyp}{pdfauthor}{%
  \AddToDocumentProperties[hyperref]{pdfauthor}{#1}%
  \HyXeTeX@CheckUnicode
  \HyPsd@PrerenderUnicode{#1}%
  \pdfstringdef\@pdfauthor{#1}%
}
\define@key{Hyp}{pdfproducer}{%
  \AddToDocumentProperties[hyperref]{pdfproducer}{#1}%
  \HyXeTeX@CheckUnicode
  \HyPsd@PrerenderUnicode{#1}%
  \pdfstringdef\@pdfproducer{#1}%
}
\define@key{Hyp}{pdfcreator}{%
  \AddToDocumentProperties[hyperref]{pdfcreator}{#1}%
  \HyXeTeX@CheckUnicode
  \HyPsd@PrerenderUnicode{#1}%
  \pdfstringdef\@pdfcreator{#1}%
}
\define@key{Hyp}{addtopdfcreator}{%
 \HyXeTeX@CheckUnicode
 \HyPsd@PrerenderUnicode{#1}%
 \pdfstringdef\@pdfcreator{\@pdfcreator, #1}%
}
\define@key{Hyp}{pdfcreationdate}{%
  \begingroup
    \Hy@unicodefalse
    \pdfstringdef\@pdfcreationdate{#1}%
  \endgroup
}
\define@key{Hyp}{pdfmoddate}{%
  \begingroup
    \Hy@unicodefalse
    \pdfstringdef\@pdfmoddate{#1}%
  \endgroup
}
\define@key{Hyp}{pdfsubject}{%
  \AddToDocumentProperties[hyperref]{pdfsubject}{#1}%
  \HyXeTeX@CheckUnicode
  \HyPsd@PrerenderUnicode{#1}%
  \pdfstringdef\@pdfsubject{#1}%
}
\define@key{Hyp}{pdfkeywords}{%
  \AddToDocumentProperties[hyperref]{pdfkeywords}{#1}%
  \HyXeTeX@CheckUnicode
  \HyPsd@PrerenderUnicode{#1}%
  \pdfstringdef\@pdfkeywords{#1}%
}
\define@key{Hyp}{pdftrapped}{%
  \lowercase{\edef\Hy@temp{#1}}%
  \ifx\Hy@temp\HyInfo@trapped@true
    \def\@pdftrapped{True}%
  \else
    \ifx\Hy@temp\HyInfo@trapped@false
      \def\@pdftrapped{False}%
    \else
      \ifx\Hy@temp\HyInfo@trapped@unknown
        \def\@pdftrapped{Unknown}%
      \else
        \ifx\Hy@temp\@empty
        \else
          \Hy@Warning{%
            Unsupported value `#1'\MessageBreak
            for option `pdftrapped'%
          }%
        \fi
        \def\@pdftrapped{}%
      \fi
    \fi
  \fi
}
\def\HyInfo@trapped@true{true}
\def\HyInfo@trapped@false{false}
\def\HyInfo@trapped@unknown{unknown}
\def\HyInfo@TrappedUnsupported{%
  \ifx\@pdftrapped\@empty
  \else
    \Hy@WarningNoLine{`pdftrapped' is not supported by this driver}%
    \gdef\HyInfo@TrappedUnsupported{}%
  \fi
}
\define@key{Hyp}{pdfinfo}{%
  \kvsetkeys{pdfinfo}{#1}%
}
\def\Hy@temp#1{%
  \lowercase{\Hy@temp@A{#1}}{#1}%
}
\def\Hy@temp@A#1#2{%
  \define@key{pdfinfo}{#2}{%
    \hypersetup{pdf#1={##1}}%
  }%
}
\Hy@temp{Title}
\Hy@temp{Author}
\Hy@temp{Keywords}
\Hy@temp{Subject}
\Hy@temp{Creator}
\Hy@temp{Producer}
\Hy@temp{CreationDate}
\Hy@temp{ModDate}
\Hy@temp{Trapped}
\newif\ifHyInfo@AddonUnsupported
\kv@set@family@handler{pdfinfo}{%
  \HyInfo@AddonHandler{#1}{#2}%
}
\let\HyInfo@do\relax
\def\HyInfo@AddonHandler#1#2{%
  \ifx\kv@value\relax
    \Hy@Warning{%
      Option `pdfinfo': ignoring key `\kv@key' without value%
    }%
  \else
    \EdefEscapeName\HyInfo@KeyEscaped{\kv@key}%
    \EdefUnescapeName\HyInfo@Key{\HyInfo@KeyEscaped}%
    \expandafter\ifx\csname KV@pdfinfo@\HyInfo@Key\endcsname\relax
      \ifHyInfo@AddonUnsupported
        \Hy@Warning{%
          This driver does not support additional\MessageBreak
          information entries, therefore\MessageBreak
          `\kv@key' is ignored%
        }%
      \else
        \def\HyInfo@tmp##1{%
          \kv@define@key{pdfinfo}{##1}{%
            \HyXeTeX@CheckUnicode
            \HyPsd@PrerenderUnicode{####1}%
            \pdfstringdef\HyInfo@Value{####1}%
            \global\expandafter
            \let\csname HyInfo@Value@##1\endcsname
                \HyInfo@Value
          }%
        }%
        \expandafter\HyInfo@tmp\expandafter{\HyInfo@Key}%
        \global\expandafter
        \let\csname KV@pdfinfo@\HyInfo@Key\expandafter\endcsname
            \csname KV@pdfinfo@\HyInfo@Key\endcsname
        \xdef\HyInfo@AddonList{%
          \HyInfo@AddonList
          \HyInfo@do{\HyInfo@Key}%
        }%
        \expandafter\kv@parse@normalized\expandafter{%
          \HyInfo@Key={#2}%
        }{%
          \kv@processor@default{pdfinfo}%
        }%
      \fi
    \else
      \expandafter\kv@parse@normalized\expandafter{%
        \HyInfo@Key={#2}%
      }{%
        \kv@processor@default{pdfinfo}%
      }%
    \fi
  \fi
}
\def\HyInfo@GenerateAddons{%
  \ifHyInfo@AddonUnsupported
    \def\HyInfo@Addons{}%
  \else
    \begingroup
      \toks@{}%
      \def\HyInfo@do##1{%
        \EdefEscapeName\HyInfo@Key{##1}%
        \edef\x{%
          \toks@{%
            \the\toks@
            /\HyInfo@Key(\csname HyInfo@Value@##1\endcsname)%
          }%
        }%
        \x
      }%
      \HyInfo@AddonList
      \edef\x{\endgroup
        \def\noexpand\HyInfo@Addons{\the\toks@}%
      }%
    \x
  \fi
}
\global\let\HyInfo@AddonList\@empty
\define@key{Hyp}{pdfview}{\calculate@pdfview#1 \\}
\define@key{Hyp}{pdflinkmargin}{\setpdflinkmargin{#1}}
\let\setpdflinkmargin\@gobble
\def\calculate@pdfview#1 #2\\{%
  \def\@pdfview{#1}%
  \ifx\\#2\\%
    \def\@pdfviewparams{ -32768}%
  \else
    \def\@pdfviewparams{ #2}%
  \fi
}
\def\Hy@number#1{%
  \the\numexpr#1\relax
  }%
\define@key{Hyp}{pdfstartpage}{%
  \ifx\\#1\\%
    \let\@pdfstartpage\@empty
  \else
    \edef\@pdfstartpage{\Hy@number{#1}}%
  \fi
}%
\define@key{Hyp}{pdfstartview}{%
  \ifx\\#1\\%
    \let\@pdfstartview\@empty
  \else
    \def\@pdfstartview{/#1}%
  \fi
}
\def\HyPat@NonNegativeReal/{%
  \ *([0-9]+\.?[0-9]*|[0-9]*\.?[0-9]+) *%
}
\define@key{Hyp}{pdfremotestartview}{%
  \ifx\\#1\\%
    \def\@pdfremotestartview{/Fit}%
  \else
    \edef\@pdfremotestartview{#1}%
    \Hy@Match\@pdfremotestartview{}{%
      ^(XYZ(%
            ()| %
            (null|-?\HyPat@NonNegativeReal/) %
            (null|-?\HyPat@NonNegativeReal/) %
            (null|\HyPat@NonNegativeReal/)%
          )|% end of "XYZ"
        Fit(%
            ()|%
            B|%
            (H|V|BH|BV)(%
                ()| %
                (null|\HyPat@NonNegativeReal/)%
              )|%
            R %
                \HyPat@NonNegativeReal/ %
                \HyPat@NonNegativeReal/ %
                \HyPat@NonNegativeReal/ %
                \HyPat@NonNegativeReal/%
          )% end of "Fit"
      )$%
    }{}{%
      \Hy@Warning{%
         Invalid value `\@pdfremotestartview'\MessageBreak
         of `pdfremotestartview'\MessageBreak
         is replaced by `Fit'%
      }%
      \let\@pdfremotestartview\@empty
    }%
    \ifx\@pdfremotestartview\@empty
      \def\@pdfremotestartview{/Fit}%
    \else
      \edef\@pdfremotestartview{/\@pdfremotestartview}%
    \fi
  \fi
}
\define@key{Hyp}{pdfpagescrop}{\edef\@pdfpagescrop{#1}}
\define@key{Hyp}{pdftoolbar}[true]{%
  \Hy@boolkey{pdftoolbar}{#1}%
}
\define@key{Hyp}{pdfmenubar}[true]{%
  \Hy@boolkey{pdfmenubar}{#1}%
}
\define@key{Hyp}{pdfwindowui}[true]{%
  \Hy@boolkey{pdfwindowui}{#1}%
}
\define@key{Hyp}{pdffitwindow}[true]{%
  \Hy@boolkey{pdffitwindow}{#1}%
}
\define@key{Hyp}{pdfcenterwindow}[true]{%
  \Hy@boolkey{pdfcenterwindow}{#1}%
}
\define@key{Hyp}{pdfdisplaydoctitle}[true]{%
  \Hy@boolkey{pdfdisplaydoctitle}{#1}%
}
\define@key{Hyp}{pdfa}[true]{%
  \Hy@boolkey{pdfa}{#1}%
}
\define@key{Hyp}{pdfnewwindow}[true]{%
  \def\Hy@temp{#1}%
  \ifx\Hy@temp\@empty
    \Hy@pdfnewwindowsetfalse
  \else
    \Hy@pdfnewwindowsettrue
    \Hy@boolkey{pdfnewwindow}{#1}%
  \fi
}
\def\Hy@SetNewWindow{%
  \ifHy@pdfnewwindowset
    /NewWindow %
    \ifHy@pdfnewwindow true\else false\fi
  \fi
}
\Hy@DefNameKey{pdfpagelayout}{%
  \do{SinglePage}{}%
  \do{OneColumn}{}%
  \do{TwoColumnLeft}{}%
  \do{TwoColumnRight}{}%
  \do{TwoPageLeft}{PDF 1.5}%
  \do{TwoPageRight}{PDF 1.5}%
}
\define@key{Hyp}{pdflang}{%
  \edef\@pdflang{#1}%
  \def\Hy@temp{\relax}%
  \ifx\@pdflang\Hy@temp
    \let\@pdflang\relax
  \fi
  \ifx\@pdflang\relax
  \else
    \ifx\@pdflang\@empty
    \else
      \Hy@Match\@pdflang{icase}{%
        ^%
        [a-z]{1,8}%
        (-[a-z0-9]{1,8})*%
        $%
      }{%
        \Hy@Match\@pdflang{icase}{%
          ^%
          (%
          % langtag
            (% language
              [a-z]{2,3}%
              ([a-z]{3}(-[a-z]{3}){0,2})?% extlang
              |[a-z]{4}% reserved for future use
              |[a-z]{5,8}% registered language subtag
            )%
            (-[a-z]{4})?% script
            (-([a-z]{2}|[0-9]{3}))?% region
            (-([a-z]{5,8}|[0-9][a-z0-9]{3}))*% variant
            (-[0-9a-wyz](-[a-z0-9]{2,8})+)*% extension
            (-x(-[a-z0-9]{1,8})+)?% privateuse
          % privateuse
            |x-([a-z0-9]{1,8})+%
          % grandfathered/irregular
            |en-GB-oed%
            |i-(ami|bnn|default|enochian|hak|klingon|lux|%
                mingo|navajo|pwn|tao|tay|tsu)%
            |sgn-(BE-FR|BE-NL|CH-DE)%
          % grandfathered/regular
            |art-lojban%
            |cel-gaulish%
            |no-(bok|nyn)%
            |zh-(guoyu|hakka|min|min-nan|xiang)%
          )%
          $%
        }{%
          \Hy@Match{-\@pdflang}{icase}{-[a-wyz0-9]-}{%
            \Hy@Match\@pdflang{icase}{^x-}{}{%
              % remove privateuse
              \edef\Hy@temp{-\@pdflang}%
              \Hy@Match\Hy@temp{icase}{%
                ^%
                (%
                  (-[a-wyz0-9]|-[a-z0-9]{2,8})*%
                )%
                -x-%
              }{%
                \edef\Hy@temp{%
                  \expandafter\strip@prefix\pdflastmatch1%
                }%
              }{}%
              \Hy@Match\Hy@temp{icase}{%
                (-[a-wyz0-9]-).*\@backslashchar1%
              }{%
                \Hy@Warning{%
                  Invalid language identifier `#1'\MessageBreak
                  for option `pdflang', because it violates\MessageBreak
                  well-formedness defined in RFC 4646\MessageBreak
                  by duplicate singleton subtags%
                }%
                \let\@pdflang\relax
              }{}%
            }%
          }{}%
          \ifx\@pdflang\relax
          \else
            \Hy@Match\@pdflang{icase}{%
              ^%
              [a-zA-Z]{2}-%
              (%
                aa|AA|%
                [qQ][m-zM-Z]|%
                [xX][a-zA-Z]|%
                zz|ZZ%
              )%
              (-|$)%
            }{%
              \Hy@Warning{%
                Invalid language identifier `#1'\MessageBreak
                for option `pdflang' because of invalid country code%
                \MessageBreak
                in second subtag (RFC 3066)%
              }%
              \let\@pdflang\relax
            }{}%
          \fi
        }{%
          \Hy@Warning{%
            Invalid language identifier `#1'\MessageBreak
            for option `pdflang', because it violates\MessageBreak
            well-formedness defined in RFC 5646%
          }%
          \let\@pdflang\relax
        }%
      }{%
        \Hy@Warning{%
          Invalid language identifier `#1'\MessageBreak
          for option `pdflang' (RFC 3066)%
        }%
        \let\@pdflang\relax
      }%
    \fi
  \fi
}
\define@key{Hyp}{pdfpagelabels}[true]{%
  \Hy@boolkey{pdfpagelabels}{#1}%
}
\define@key{Hyp}{pdfescapeform}[true]{%
  \Hy@boolkey{pdfescapeform}{#1}%
}
\def\@linkbordercolor{1 0 0}
\def\@urlbordercolor{0 1 1}
\def\@menubordercolor{1 0 0}
\def\@filebordercolor{0 .5 .5}
\def\@runbordercolor{0 .7 .7}
\def\@citebordercolor{0 1 0}
\def\@pdfhighlight{/I}
\let\@pdftitle\@empty
\let\@pdfauthor\@empty
\let\@pdfproducer\relax
\def\@pdfcreator{LaTeX with hyperref}
\let\@pdfcreationdate\@empty
\let\@pdfmoddate\@empty
\let\@pdfsubject\@empty
\let\@pdfkeywords\@empty
\let\@pdftrapped\@empty
\let\@pdfpagescrop\@empty
\def\@pdfstartview{/Fit}
\def\@pdfremotestartview{/Fit}
\def\@pdfstartpage{1}
\let\@pdfprintpagerange\@empty
\let\@pdflang\relax
\let\PDF@SetupDoc\@empty
\let\PDF@FinishDoc\@empty
\let\phantomsection\@empty
\let\special@paper\@empty
\def\HyperDestNameFilter#1{#1}
\Hy@AtBeginDocument{%
  \begingroup
    \edef\x{\ifdim\stockheight>\z@ \stockheight\else\paperheight\fi}%
    \dimen@=\x\relax
    \ifdim\dimen@>\z@
    \else
      \dimen@=11in\relax
      \Hy@WarningNoLine{%
        Height of page (\expandafter\string\x) %
        is invalid (\the\x),\MessageBreak
        using 11in%
      }%
    \fi
    \dimen@=0.99626401\dimen@
    \xdef\Hy@pageheight{\strip@pt\dimen@}%
  \endgroup
}
\def\HyInd@EncapChar{\|}
\let\hyper@normalise\ExecuteOptions
\let\ExecuteOptions\hypersetup
\Hy@RestoreCatcodes
\InputIfFileExists{hyperref.cfg}{}{}
\Hy@SetCatcodes
\let\ExecuteOptions\hyper@normalise
\ifx\Hy@MaybeStopNow\relax
\else
  \Hy@stoppedearlytrue
  \expandafter\Hy@MaybeStopNow
\fi
\Hy@stoppedearlyfalse
\SetupKeyvalOptions{family=Hyp}
\DeclareLocalOptions{%
  a4paper,a5paper,b5paper,letterpaper,legalpaper,executivepaper%
}
\@ifpackagewith{hyperref}{tex4ht}{%
}{%
  \@ifpackageloaded{tex4ht}{%
    \PassOptionsToPackage{tex4ht}{hyperref}%
  }{%
    \@ifundefined{HCode}{%
    }{%
      \begingroup
        \def\Hy@pkg{tex4ht}%
        \def\Hy@temp@A#1\RequirePackage[#2]#3#4\Hy@NIL{%
          \def\Hy@param{#2#3}%
          \ifx\Hy@param\@empty
            \expandafter\@gobble
          \else
            \def\Hy@param{#3}%
            \ifx\Hy@param\Hy@pkg
              \PassOptionsToPackage{#2}{tex4ht}%
              \expandafter\expandafter\expandafter\@gobble
            \else
              \expandafter\expandafter\expandafter\@firstofone
            \fi
          \fi
          {\Hy@temp@A#4\Hy@NIL}%
        }%
        \expandafter
        \Hy@temp@A\@documentclasshook\RequirePackage[]{}\Hy@NIL
      \endgroup
      \PassOptionsToPackage{tex4ht}{hyperref}%
    }%
  }%
}
\let\ReadBookmarks\relax
\ProcessKeyvalOptions{Hyp}
\def\Hy@xspace@end{}
\@ifundefined{xspaceaddexceptions}{%
  \Hy@AtBeginDocument{%
    \@ifundefined{xspaceaddexceptions}{%
    }{%
      \def\Hy@xspace@end{%
        \@gobble{end for xspace}%
      }%
      \xspaceaddexceptions{%
        \Hy@xspace@end,\hyper@linkend,\hyper@anchorend
      }%
    }%
  }%
}{%
  \def\Hy@xspace@end{%
    \@gobble{end for xspace}%
  }%
  \xspaceaddexceptions{\Hy@xspace@end,\hyper@linkend,\hyper@anchorend}%
}
\Hy@AtBeginDocument{%
  \ifHy@draft
    \let\hyper@@anchor\@gobble
    \gdef\hyper@link#1#2#3{#3\Hy@xspace@end}%
    \def\hyper@anchorstart#1#2{#2\Hy@xspace@end}%
    \def\hyper@anchorend{\Hy@xspace@end}%
    \let\hyper@linkstart\@gobbletwo
    \def\hyper@linkend{\Hy@xspace@end}%
    \def\hyper@linkurl#1#2{#1\Hy@xspace@end}%
    \def\hyper@linkfile#1#2#3{#1\Hy@xspace@end}%
    \def\hyper@link@[#1]#2#3#4{#4\Hy@xspace@end}%
    \def\Acrobatmenu#1#2{\leavevmode#2\Hy@xspace@end}%
    \let\PDF@SetupDoc\@empty
    \let\PDF@FinishDoc\@empty
    \let\ReadBookmarks\relax
    \let\WriteBookmarks\relax
    \Hy@WarningNoLine{Draft mode on}%
  \fi
  \Hy@DisableOption{draft}%
  \Hy@DisableOption{nolinks}%
  \Hy@DisableOption{final}%
}
\Hy@DisableOption{pdfa}
\ifHy@pdfa
  \ifnum \Hy@pdf@majorminor@version< 104
  \kvsetkeys{Hyp}{pdfversion=1.4}%
  \fi
  \Hy@DisableOption{pdfversion}%
  \def\Hy@Acrobatmenu#1#2{%
    \leavevmode
    \begingroup
      \edef\x{#1}%
      \@onelevel@sanitize\x
      \ifx\x\Hy@NextPage
        \let\y=Y%
      \else
        \ifx\x\Hy@PrevPage
          \let\y=Y%
        \else
          \ifx\x\Hy@FirstPage
            \let\y=Y%
          \else
            \ifx\x\Hy@LastPage
              \let\y=Y%
            \else
              \let\y=N%
            \fi
          \fi
        \fi
      \fi
    \expandafter\endgroup
    \ifx\y Y%
    \else
      \Hy@Error{%
        PDF/A: Named action `#1' is not permitted%
      }\@ehc
      {#2}%
      \expandafter\@gobble
    \fi
  }%
  \def\Hy@temp#1{%
    \expandafter\def\csname Hy@#1\endcsname{#1}%
    \expandafter\@onelevel@sanitize\csname Hy@#1\endcsname
  }%
  \Hy@temp{NextPage}%
  \Hy@temp{PrevPage}%
  \Hy@temp{FirstPage}%
  \Hy@temp{LastPage}%
\else
  \def\Hy@Acrobatmenu#1#2{\leavevmode}%
\fi
\def\Hy@wrapper@babel#1#2{%
  \begingroup
    \Hy@safe@activestrue
    \set@display@protect
    \edef\x{#2}%
    \@onelevel@sanitize\x
    \toks@{#1}%
    \edef\x{\endgroup\the\toks@{\x}}%
  \x
}
\def\Hy@WrapperDef#1{%
  \begingroup
    \escapechar=\m@ne
    \xdef\Hy@gtemp{%
      \expandafter\noexpand\csname HyWrap@\string#1\endcsname
    }%
  \endgroup
  \edef#1{%
    \noexpand\Hy@wrapper@babel
    \expandafter\noexpand\Hy@gtemp
  }%
  \expandafter\def\Hy@gtemp
}
\ifHy@hyperfigures
  \Hy@Info{Hyper figures ON}%
\else
  \Hy@Info{Hyper figures OFF}%
\fi
\ifHy@nesting
  \Hy@Info{Link nesting ON}%
\else
  \Hy@Info{Link nesting OFF}%
\fi
\ifHy@hyperindex
  \Hy@Info{Hyper index ON}%
\else
  \Hy@Info{Hyper index OFF}%
\fi
\ifHy@plainpages
  \Hy@Info{Plain pages ON}%
\else
  \Hy@Info{Plain pages OFF}%
\fi
\ifHy@backref
  \Hy@Info{Backreferencing ON}%
\else
  \Hy@Info{Backreferencing OFF}%
\fi
\ifHy@implicit
  \Hy@InfoNoLine{Implicit mode ON; LaTeX internals redefined}%
\else
  \Hy@InfoNoLine{Implicit mode OFF; no redefinition of LaTeX internals}%
  \def\MaybeStopEarly{%
    \Hy@Message{Stopped early}%
    \Hy@AtBeginDocument{%
      \PDF@FinishDoc
      \gdef\PDF@FinishDoc{}%
    }%
    \endinput
  }%
  \Hy@AtBeginDocument{%
    \let\autoref\ref
    \let\autopageref\pageref
    \ifx\@pdfpagemode\@empty
      \gdef\@pdfpagemode{UseNone}%
    \fi
    \global\Hy@backreffalse
  }%
  \Hy@AtEndOfPackage{%
    \global\let\ReadBookmarks\relax
    \global\let\WriteBookmarks\relax
  }%
\fi
\Hy@DisableOption{implicit}
\@ifundefined{stockwidth}{\newdimen\stockwidth}{}
\@ifundefined{stockheight}{\newdimen\stockheight}{}
\Hy@AtEndOfPackage{%
  \@ifpackageloaded{tex4ht}{%
    \def\Hy@driver{htex4ht}%
    \Hy@texhttrue
  }{}%
  \ifx\Hy@driver\@empty
  \else
     \ifx\pdfextension\@undefined
       \def\Hy@temp{hpdftex}%
     \else
       \def\Hy@temp{hluatex}%
     \fi
    \ifpdf
      \ifx\Hy@driver\Hy@temp
      \else
        \Hy@WarningNoLine{%
          Wrong driver `\Hy@driver.def';\MessageBreak
          pdfTeX is running in PDF mode.\MessageBreak
          Forcing driver `\Hy@temp.def'%
        }%
        \let\Hy@driver\Hy@temp
      \fi
    \else
      \ifx\Hy@driver\Hy@temp
        \Hy@WarningNoLine{%
          Wrong driver `\Hy@driver.def';\MessageBreak
          pdfTeX is not running in PDF mode.\MessageBreak
          Using default driver%
        }%
        \let\Hy@driver\@empty
      \fi
    \fi
  \fi
  \ifHy@texht
  \else
    \ifx\Hy@driver\@empty
    \else
      \def\Hy@temp{hxetex}%
      \ifxetex
        \ifx\Hy@driver\Hy@temp
        \else
          \Hy@WarningNoLine{%
            Wrong driver `\Hy@driver.def';\MessageBreak
            XeTeX is running.\MessageBreak
            Forcing driver `\Hy@temp.def' for XeTeX%
          }%
          \let\Hy@driver\Hy@temp
        \fi
      \fi
    \fi
  \fi
  \ifx\Hy@driver\@empty
  \else
   \def\Hy@temp{hhitex}%
   \ifhint
     \ifx\Hy@driver\Hy@temp
     \else
        \Hy@WarningNoLine{%
          Wrong driver `\Hy@driver.def';\MessageBreak
          hitex is running.\MessageBreak
          Forcing driver `\Hy@temp.def'%
        }%
        \let\Hy@driver\Hy@temp
     \fi
    \fi
  \fi
  \ifx\Hy@driver\@empty
  \else
    \def\Hy@temp{hvtexhtm}%
    \ifnum\ifvtex\OpMode\else\m@ne\fi=10 %
      \ifx\Hy@driver\Hy@temp
      \else
        \Hy@WarningNoLine{%
          Wrong driver `\Hy@driver.def';\MessageBreak
          VTeX is running in HTML mode.\MessageBreak
          Forcing driver `\Hy@temp.def'%
        }%
        \let\Hy@driver\Hy@temp
      \fi
    \else
      \ifx\Hy@driver\Hy@temp
        \Hy@WarningNoLine{%
          Wrong driver `\Hy@driver.def';\MessageBreak
          VTeX is not running in HTML mode.\MessageBreak
          Using default driver%
        }%
        \let\Hy@driver\@empty
      \fi
    \fi
  \fi
  \let\HyOpt@DriverType\@empty
  \ifx\HyOpt@CustomDriver\@empty
    \ifx\Hy@driver\@empty
      \def\HyOpt@DriverType{ (autodetected)}%
      \providecommand*{\Hy@defaultdriver}{hdvips}%
      \ifpdf
        \ifx\pdfextension\@undefined
          \def\Hy@driver{hpdftex}%
        \else
          \def\Hy@driver{hluatex}%
        \fi
      \else
        \ifxetex
          \def\Hy@driver{hxetex}%
        \else
          \ifnum\ifvtex\OpMode\else\m@ne\fi=10 %
            \def\Hy@driver{hvtexhtm}%
            \def\MaybeStopEarly{%
              \Hy@Message{Stopped early}%
              \Hy@AtBeginDocument{%
                \PDF@FinishDoc
                \gdef\PDF@FinishDoc{}%
              }%
              \endinput
            }%
          \else
            \ifhint
              \def\Hy@driver{hhitex}
            \else
              \ifnum\ifvtex\OpMode\else\m@ne\fi=\@ne
                \def\Hy@driver{hvtex}%
              \else
                \ifnum\ifvtex\OpMode\else\m@ne\fi=\tw@
                  \def\Hy@driver{hvtex}%
                \else
                  \ifx\HyOpt@DriverFallback\@empty
                    \let\Hy@driver\Hy@defaultdriver
                    \def\HyOpt@DriverType{ (default)}%
                  \else
                    \begingroup
                      \toks@\expandafter{\HyOpt@DriverFallback}%
                      \edef\x{\endgroup
                        \noexpand\kvsetkeys{Hyp}{\the\toks@}%
                      }%
                    \x
                    \ifx\Hy@driver\@empty
                      \let\Hy@driver\Hy@defaultdriver
                      \def\HyOpt@DriverType{ (default)}%
                    \else
                      \def\HyOpt@DriverType{ (fallback)}%
                    \fi
                  \fi
                \fi
              \fi
            \fi
          \fi
        \fi
      \fi
      \ifx\Hy@driver\Hy@defaultdriver
        \def\Hy@temp{hdviwind}%
        \ifx\Hy@temp\Hy@driver
          \kvsetkeys{Hyp}{colorlinks}%
          \PassOptionsToPackage{dviwindo}{color}%
        \fi
      \fi
    \fi
  \else
    \def\HyOpt@DriverType{ (custom)}%
    \let\Hy@driver\HyOpt@CustomDriver
  \fi
  \Hy@InfoNoLine{Driver\HyOpt@DriverType: \Hy@driver}%
  \chardef\Hy@VersionChecked=0 %
  \input{\Hy@driver.def}%
  \ifcase\Hy@VersionChecked
    \Hy@VersionCheck{\Hy@driver.def}%
  \fi
  \let\@unprocessedoptions\relax
  \Hy@RestoreCatcodes
  \Hy@DisableOption{tex4ht}%
  \Hy@DisableOption{pdftex}%
  \Hy@DisableOption{nativepdf}%
  \Hy@DisableOption{dvipdfm}%
  \Hy@DisableOption{dvipdfmx}%
  \Hy@DisableOption{dvipdfmx-outline-open}%
  \Hy@DisableOption{pdfmark}%
  \Hy@DisableOption{dvips}%
  \Hy@DisableOption{hypertex}%
  \Hy@DisableOption{vtex}%
  \Hy@DisableOption{vtexpdfmark}%
  \Hy@DisableOption{dviwindo}%
  \Hy@DisableOption{dvipsone}%
  \Hy@DisableOption{textures}%
  \Hy@DisableOption{latex2html}%
  \Hy@DisableOption{ps2pdf}%
  \Hy@DisableOption{xetex}%
  \Hy@DisableOption{driverfallback}%
  \Hy@DisableOption{customdriver}%
  \Hy@DisableOption{pdfversion}%
}
\newif\ifHy@DvipdfmxOutlineOpen
\ifxetex
  \ifdim\number\XeTeXversion\XeTeXrevision in<0.9995in %
  \else
    \chardef\SpecialDvipdfmxOutlineOpen\@ne
    \Hy@DvipdfmxOutlineOpentrue
  \fi
\fi
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname SpecialDvipdfmxOutlineOpen\endcsname\relax
\else
  \ifnum\SpecialDvipdfmxOutlineOpen>\z@
    \Hy@DvipdfmxOutlineOpentrue
  \fi
\fi
\def\WriteBookmarks{0}
\def\@bookmarkopenstatus#1{%
  \ifHy@bookmarksopen
    \ifnum#1<\expandafter\@firstofone\expandafter
             {\number\@bookmarksopenlevel} % explicit space
    \else
      -%
    \fi
  \else
    -%
  \fi
}
\ifHy@bookmarks
  \Hy@Info{Bookmarks ON}%
  \ifx\@pdfpagemode\@empty
    \def\@pdfpagemode{UseOutlines}%
  \fi
\else
  \let\@bookmarkopenstatus\@gobble
  \Hy@Info{Bookmarks OFF}%
  \Hy@AtEndOfPackage{%
    \global\let\ReadBookmarks\relax
    \global\let\WriteBookmarks\relax
  }%
  \ifx\@pdfpagemode\@empty
    \def\@pdfpagemode{UseNone}%
  \fi
\fi
\Hy@DisableOption{bookmarks}
\def\Hy@CatcodeWrapper#1{%
  \let\Hy@EndWrap\@empty
  \def\TMP@EnsureCode##1##2{%
    \edef\Hy@EndWrap{%
      \Hy@EndWrap
      \catcode##1 \the\catcode##1\relax
    }%
    \catcode##1 ##2\relax
  }%
  \TMP@EnsureCode{10}{12}% ^^J
  \TMP@EnsureCode{33}{12}% !
  \TMP@EnsureCode{34}{12}% "
  \TMP@EnsureCode{36}{3}% $ (math)
  \TMP@EnsureCode{38}{4}% & (alignment)
  \TMP@EnsureCode{39}{12}% '
  \TMP@EnsureCode{40}{12}% (
  \TMP@EnsureCode{41}{12}% )
  \TMP@EnsureCode{42}{12}% *
  \TMP@EnsureCode{43}{12}% +
  \TMP@EnsureCode{44}{12}% ,
  \TMP@EnsureCode{45}{12}% -
  \TMP@EnsureCode{46}{12}% .
  \TMP@EnsureCode{47}{12}% /
  \TMP@EnsureCode{58}{12}% :
  \TMP@EnsureCode{59}{12}% ;
  \TMP@EnsureCode{60}{12}% <
  \TMP@EnsureCode{61}{12}% =
  \TMP@EnsureCode{62}{12}% >
  \TMP@EnsureCode{63}{12}% ?
  \TMP@EnsureCode{91}{12}% [
  \TMP@EnsureCode{93}{12}% ]
  \TMP@EnsureCode{94}{7}% ^ (superscript)
  \TMP@EnsureCode{95}{8}% _ (subscript)
  \TMP@EnsureCode{96}{12}% `
  \TMP@EnsureCode{124}{12}% |
  \TMP@EnsureCode{126}{13}% ~ (active)
  #1\relax
  \Hy@EndWrap
}
\Hy@AtBeginDocument{%
  \ifHy@ocgcolorlinks
    \kvsetkeys{Hyp}{colorlinks}%
    \ifHy@pdfa
      \Hy@Warning{%
        PDF/A: Optional Content Groups are prohibited,\MessageBreak
        using `colorlinks' instead of `ocgcolorlinks'%
      }%
      \Hy@ocgcolorlinksfalse
    \fi
  \fi
  \ifHy@ocgcolorlinks
  \else
    \Hy@DisableOption{ocgcolorlinks}%
  \fi
  \ifHy@colorlinks
    \def\@pdfborder{0 0 0}%
    \let\@pdfborderstyle\@empty
    \Hy@CatcodeWrapper{%
      \RequirePackage{color}%
     }%
    \def\Hy@colorlink#1{%
      \begingroup
      \HyColor@UseColor#1%
    }%
    \def\Hy@endcolorlink{\endgroup}%
    \Hy@Info{Link coloring ON}%
  \else
    \ifHy@frenchlinks
      \def\Hy@colorlink#1{\begingroup\fontshape{\scdefault}\selectfont}%
      \def\Hy@endcolorlink{\endgroup}%
      \Hy@Info{French linking ON}%
    \else
      \def\Hy@colorlink#1{\begingroup}%
      \def\Hy@endcolorlink{\endgroup}%
      \Hy@Info{Link coloring OFF}%
    \fi
  \fi
  \Hy@DisableOption{colorlinks}%
  \Hy@DisableOption{frenchlinks}%
  \ifHy@texht
  \else
    \ifHy@implicit
      \let \T@Ref\HyRef@Ref
      \def\@refstar#1{%
        \NR@ref@showkeys{#1}%
        \HyRef@StarSetRef{#1}\@firstoffive
      }
      \def\@pagerefstar#1{%
        \NR@ref@showkeys{#1}%
        \HyRef@StarSetRef{#1}\@secondoffive
      }
      \def\@namerefstar#1{%
        \NR@ref@showkeys{#1}%
        \HyRef@StarSetRef{#1}\@thirdoffive
      }
      \def\@Refstar#1{%
        \NR@ref@showkeys{#1}%
        \HyRef@StarSetRef{#1}\HyRef@MakeUppercaseFirstOfFive
      }%
     \else
     \fi
  \fi
}
\Hy@AtBeginDocument{%
  \ifx\ReadBookmarks\relax
  \else
    \Hy@CatcodeWrapper\ReadBookmarks
  \fi
}
\ifHy@backref
  \RequirePackage{backref}%
\else
  \let\Hy@backout\@gobble
\fi
\Hy@DisableOption{backref}
\Hy@DisableOption{pagebackref}
\Hy@activeanchorfalse
\begingroup
  \endlinechar=-1 %
  \catcode`\^^A=14 %
  \catcode`\^^M\active
  \catcode`\%\active
  \catcode`\#\active
  \catcode`\_\active
  \catcode`\$\active
  \catcode`\&\active
  \gdef\hyper@normalise{^^A
    \begingroup
    \@makeother{:}^^A
    \catcode`\^^M\active
    \def^^M{ }^^A
    \catcode`\%\active
    \let%\@percentchar
    \let\%\@percentchar
    \catcode`\#\active
    \def#{\hyper@hash}^^A
    \def\#{\hyper@hash}^^A
    \@makeother\&^^A
    \edef&{\string&}^^A
    \edef\&{\string&}^^A
    \edef\textunderscore{\string_}^^A
    \let\_\textunderscore
    \catcode`\_\active
    \let_\textunderscore
    \let~\hyper@tilde
    \let\~\hyper@tilde
    \let\textasciitilde\hyper@tilde
    \let\\\@backslashchar
    \edef${\string$}^^A
    \Hy@safe@activestrue
    \hyper@n@rmalise
  }^^A
  \catcode`\#=6 ^^A
  \gdef\Hy@ActiveCarriageReturn{^^M}^^A
  \gdef\hyper@n@rmalise#1#2{^^A
    \def\Hy@tempa{#2}^^A
    \ifx\Hy@tempa\Hy@ActiveCarriageReturn
      \Hy@ReturnAfterElseFi{^^A
        \hyper@@normalise{#1}^^A
      }^^A
    \else
      \Hy@ReturnAfterFi{^^A
        \hyper@@normalise{#1}{#2}^^A
      }^^A
    \fi
  }^^A
  \gdef\hyper@@normalise#1#2{^^A
    \edef\Hy@tempa{^^A
      \endgroup
      \noexpand#1{\Hy@RemovePercentCr#2%^^M\@nil}^^A
    }^^A
    \Hy@tempa
  }^^A
  \gdef\Hy@RemovePercentCr#1%^^M#2\@nil{^^A
    #1^^A
    \ifx\limits#2\limits
    \else
      \Hy@ReturnAfterFi{^^A
        \Hy@RemovePercentCr #2\@nil
      }^^A
    \fi
  }^^A
\endgroup
\providecommand*\hyper@chars{%
  \let\#\hyper@hash
  \let\%\@percentchar
  \Hy@safe@activestrue
}
\def\hyperlink#1#2{%
  \hyper@@link{}{#1}{#2}%
}
\def\Hy@VerboseLinkStart#1#2{%
  \ifHy@verbose
    \begingroup
      \Hy@safe@activestrue
      \xdef\Hy@VerboseGlobalTemp{(#1) `#2'}%
      \Hy@Info{Reference \Hy@VerboseGlobalTemp}%
      \xdef\Hy@VerboseGlobalTemp{%
        \Hy@VerboseGlobalTemp, %
        line \the\inputlineno
      }%
    \endgroup
    \let\Hy@VerboseLinkInfo\Hy@VerboseGlobalTemp
    \@onelevel@sanitize\Hy@VerboseLinkInfo
  \fi
}
\def\Hy@VerboseLinkInfo{<VerboseLinkInfo>}
\def\Hy@VerboseLinkStop{%
  \ifHy@verbose
    \begingroup
      \edef\x{\endgroup
        \write\m@ne{%
          Package `hyperref' Info: %
          End of reference \Hy@VerboseLinkInfo.%
        }%
      }%
    \x
  \fi
}
\def\Hy@VerboseAnchor#1{%
  \ifHy@verbose
    \begingroup
      \Hy@safe@activestrue
      \Hy@Info{Anchor `\HyperDestNameFilter{#1}'}%
    \endgroup
  \fi
}
\def\Hy@AllowHyphens{%
  \relax
  \ifhmode
    \penalty\@M
    \hskip\z@skip
  \fi
}
\DeclareRobustCommand*{\href}[1][]{%
  \begingroup
  \setkeys{href}{#1}%
  \@ifnextchar\bgroup\Hy@href{\hyper@normalise\href@}%
}
\def\Hy@href#{%
  \hyper@normalise\href@
}
\begingroup
  \catcode`\$=6 %
  \catcode`\#=12 %
  \gdef\href@$1{\expandafter\href@split$1##\\}%
  \gdef\href@split$1#$2#$3\\$4{%
    \hyper@@link{$1}{$2}{$4}%
    \endgroup
  }%
\endgroup
\define@key{href}{page}{%
  \def\Hy@href@page{#1}%
}
\let\Hy@href@page\@empty
\newcount\c@Hy@tempcnt
\def\theHy@tempcnt{\the\c@Hy@tempcnt}
\def\Hy@MakeRemoteAction{%
  \ifx\Hy@href@page\@empty
    \def\Hy@href@page{0}%
  \else
    \setcounter{Hy@tempcnt}{\Hy@href@page}%
    \ifnum\c@Hy@tempcnt<\@ne
      \Hy@Warning{%
        Invalid page number (\theHy@tempcnt)\MessageBreak
        for remote PDF file.\MessageBreak
        Using page 1%
      }%
      \def\Hy@href@page{0}%
    \else
      \global\advance\c@Hy@tempcnt\m@ne
      \edef\Hy@href@page{\theHy@tempcnt}%
    \fi
  \fi
  \ifx\Hy@href@nextactionraw\@empty
  \else
    \Hy@pdfnewwindowsettrue
    \Hy@pdfnewwindowtrue
  \fi
}
\define@key{href}{pdfremotestartview}{%
  \setkeys{Hyp}{pdfremotestartview={#1}}%
}
\let\KV@href@pdfnewwindow\KV@Hyp@pdfnewwindow
\let\KV@href@pdfnewwindow@default\KV@Hyp@pdfnewwindow@default
\newif\ifHy@href@ismap
\define@key{href}{ismap}[true]{%
  \@ifundefined{Hy@href@ismap#1}{%
    \Hy@Error{%
      Invalid value (#1) for key `ismap'.\MessageBreak
      Permitted values are `true' or `false'.\MessageBreak
      Ignoring `ismap'%
    }\@ehc
  }{%
    \csname Hy@href@ismap#1\endcsname
  }%
}
\let\Hy@href@nextactionraw\@empty
\define@key{href}{nextactionraw}{%
  \edef\Hy@href@nextactionraw{#1}%
  \ifx\Hy@href@nextactionraw\@empty
  \else
    \Hy@Match\Hy@href@nextactionraw{}{%
      ^(\HyPat@ObjRef/|<<.*/S[ /].+>>|%
       \[( ?\HyPat@ObjRef/|<<.*/S[ /].+>>)+ ?])$%
    }{}{%
      \Hy@Warning{Invalid value for `nextactionraw':\MessageBreak
        \Hy@href@nextactionraw\MessageBreak
        The action is discarded%
      }%
    }%
    \ifx\Hy@href@nextactionraw\@empty
    \else
      \edef\Hy@href@nextactionraw{/Next \Hy@href@nextactionraw}%
    \fi
  \fi
}
\def\HyPat@ObjRef/{.+}
\RequirePackage{url}
\let\HyOrg@url\url
\def\Hurl{\begingroup \Url}
\DeclareRobustCommand*{\nolinkurl}{\hyper@normalise\nolinkurl@}
\def\nolinkurl@#1{\Hurl{#1}}
\DeclareRobustCommand*{\url}{\hyper@normalise\url@}
\def\url@#1{\hyper@linkurl{\Hurl{#1}}{#1}}
\DeclareRobustCommand*{\hyperimage}{\hyper@normalise\hyper@image}
\providecommand\hyper@image[2]{#2}
\def\hypertarget#1#2{%
  \ifHy@nesting
    \hyper@@anchor{#1}{#2}%
  \else
    \hyper@@anchor{#1}{\relax}#2%
  \fi
}
\DeclareRobustCommand*{\hyperref}{%
  \@ifnextchar[{\Hy@babelnormalise\label@hyperref}\@hyperref
}
\def\Hy@babelnormalise#1[#2]{%
  \begingroup
    \Hy@safe@activestrue
    \let\protect\@unexpandable@protect
    \edef\Hy@tempa{%
      \endgroup
      \noexpand#1[{#2}]%
    }%
  \Hy@tempa
}
\def\@hyperref{\hyper@normalise\@@hyperref}
\def\@@hyperref#1#2#3{%
  \edef\ref@one{\ifx\\#2\\\else#2.\fi#3}%
  \expandafter\tryhyper@link\ref@one\\{#1}%
}
\def\tryhyper@link#1\\#2{%
  \hyper@@link{#2}{#1}%
}
\def\hyperdef{\@ifnextchar[{\label@hyperdef}{\@hyperdef}}
\def\@hyperdef#1#2#3{%, category, name, text
  \ifx\\#1\\%
    \def\Hy@AnchorName{#2}%
  \else
    \def\Hy@AnchorName{#1.#2}%
  \fi
  \ifHy@nesting
    \expandafter\hyper@@anchor\expandafter{\Hy@AnchorName}{#3}%
  \else
    \expandafter\hyper@@anchor\expandafter{\Hy@AnchorName}{\relax}#3%
  \fi
}
\let\hyperrefundefinedlink\@firstofone
\def\label@hyperref[#1]{%
  \expandafter\label@@hyperref\csname r@#1\endcsname{#1}%
}%
\def\label@@hyperref#1#2#3{%
  \ifx#1\relax
    \protect\G@refundefinedtrue
    \@latex@warning{%
      Hyper reference `#2' on page \thepage \space undefined%
    }%
    \begingroup
      \hyperrefundefinedlink{#3}%
    \endgroup
  \else
    \hyper@@link{\expandafter\@fifthoffive#1}%
      {\expandafter\@fourthoffive#1\@empty\@empty}{#3}%
  \fi
}
\def\label@hyperdef[#1]#2#3#4{% label name, category, name,
                                % anchor text
  \@bsphack
  \ifx\\#2\\%
    \def\Hy@AnchorName{#3}%
  \else
    \def\Hy@AnchorName{#2.#3}%
  \fi
  \if@filesw
    \protected@write\@auxout{}{%
      \string\newlabel{#1}{{}{}{}{\Hy@AnchorName}{}}%
    }%
  \fi
  \@esphack
  \ifHy@nesting
    \expandafter\hyper@@anchor\expandafter{\Hy@AnchorName}{#4}%
  \else
    \expandafter\hyper@@anchor\expandafter{\Hy@AnchorName}{\relax}#4%
  \fi
}
\ExplSyntaxOn
\cs_new:Npn \hyperget #1 #2
  {
    \use:c { __hyp_get_#1:n } { #2}
  }

\cs_new:Npn \__hyp_get_anchor:n  #1
  {
    \HyperDestNameFilter
     {
       \cs_if_exist:cTF {r@#1}
        {
          \tl_item:cn {r@#1}{4}
        }
        {
          Doc-Start
        }
     }
  }
\cs_new:Npn \__hyp_get_pageanchor:n  #1
  {
    \HyperDestNameFilter
     {
       \cs_if_exist:cTF {r@#1}
        {
          page. \tl_item:cn {r@#1}{2}
        }
        {
          Doc-Start
        }
     }
  }
\cs_new:Npn \__hyp_get_currentanchor:n  #1
  {
    \HyperDestNameFilter { \@currentHref }
  }
\ExplSyntaxOff

\newdimen\XeTeXLinkMargin
\setlength{\XeTeXLinkMargin}{2pt}
\ifxetex
  \font\XeTeXLink@font=pzdr at 1sp\relax
  \newcommand*{\XeTeXLink@space}{%
    \begingroup
      \XeTeXLink@font
      \@xxxii
    \endgroup
  }%
  \newcommand{\XeTeXLinkBox}[1]{%
    \begingroup
      \leavevmode
      \sbox\z@{#1}%
      \begingroup
        \dimen@=\dp\z@
        \advance\dimen@\XeTeXLinkMargin
        \setbox\tw@=\llap{%
          \hb@xt@\XeTeXLinkMargin{%
            \lower\dimen@\hbox{\XeTeXLink@space}%
            \hss
          }%
        }%
        \dp\tw@=\dp\z@
        \ht\tw@=\ht\z@
        \copy\tw@
      \endgroup
      \copy\z@
      \dimen@=\ht\z@
      \advance\dimen@\XeTeXLinkMargin
      \setbox\tw@=\rlap{%
        \hb@xt@\XeTeXLinkMargin{%
          \hss
          \raise\dimen@\hbox{\XeTeXLink@space}%
        }%
      }%
      \dp\tw@=\dp\z@
      \ht\tw@=\ht\z@
      \copy\tw@
    \endgroup
  }%
\else
  \newcommand*{\XeTeXLinkBox}[1]{%
    \begingroup
      \leavevmode
      \sbox\z@{#1}%
      \copy\z@
    \endgroup
  }%
\fi
\def\hyper@@link{\let\Hy@reserved@a\relax
  \@ifnextchar[{\hyper@link@}{\hyper@link@[link]}%
}
\def\hyper@link@[#1]#2#3#4{%
  \Hy@ifempty{#4}{% link text
    \Hy@Warning{Suppressing empty link}%
  }{%
    \begingroup
      \protected@edef\Hy@tempa{#2}%
      \edef\Hy@tempb{#3}%
      \ifx\Hy@tempa\@empty
        \ifx\Hy@tempb\@empty
          \Hy@Warning{Suppressing link with empty target}%
          \toks@{%
            \endgroup
            \@secondoftwo
          }%
        \else
          \toks@{%
            \endgroup
            \hyper@link{#1}%
          }%
        \fi
      \else
        \toks@{%
          \endgroup
          \expandafter\hyper@readexternallink#2\\{#1}%
        }%
      \fi
      \Hy@safe@activesfalse
      \toks@\expandafter{%
        \the\expandafter\toks@
        \expandafter{\Hy@tempb}{#4}%
      }%
    \the\toks@
  }%
}
\def\hyper@readexternallink#1\\#2#3#4{%
  \begingroup
    \let\\\relax
  \expandafter\endgroup
  \expandafter\@@hyper@@readexternallink#1\\{#2}{#3}{#4}%
}
\def\@@hyper@@readexternallink#1\\#2#3#4{%
  \@hyper@readexternallink{#2}{#3}{#4}#1::\\{#1}%
}
\def\@pdftempwordfile{file}%
\def\@pdftempwordrun{run}%
\def\@hyper@readexternallink#1#2#3#4:#5:#6\\#7{%
  \ifx\\#6\\%
    \@hyper@linkfile file:#7\\{#3}{#2}{#7}%
  \else
    \ifx\\#4\\%
      \@hyper@linkfile file:#7\\{#3}{#2}{#7}%
    \else
      \def\@pdftempa{#4}%
      \ifx\@pdftempa\@pdftempwordfile
        \@hyper@linkfile#7\\{#3}{#2}{#7}%
      \else
        \ifx\@pdftempa\@pdftempwordrun
          \ifHy@pdfa
            \Hy@Error{%
              PDF/A: Launch action is prohibited%
            }\@ehc
            \begingroup
              \leavevmode
              #2%
            \endgroup
          \else
            \@hyper@launch#7\\{#3}{#2}%
          \fi
        \else
          \hyper@linkurl{#3}{#7\ifx\\#2\\\else\hyper@hash#2\fi}%
        \fi
      \fi
    \fi
  \fi
}
\def\@hyper@launch run:#1\\#2#3{% filename, anchor text, linkname
  \hyper@linkurl{#2}{%
    \Hy@linkfileprefix
    #1%
    \ifx\\#3\\%
    \else
      \hyper@hash
      #3%
    \fi
  }%
}
\def\@hyper@linkfile file:#1\\#2#3#4{%
     %file url,link string, name, original uri
  \filename@parse{#1}%
  \ifx\filename@ext\relax
    \edef\filename@ext{\XR@ext}%
  \fi
  \def\use@file{\filename@area\filename@base.\filename@ext}%
  \Hy@IfStringEndsWith\filename@ext\XR@ext{%
    \hyper@linkfile{#2}{\use@file}{#3}%
  }{%
    \ifx\@baseurl\@empty
      \hyper@linkurl{#2}{%
        #4\ifx\\#3\\\else\hyper@hash#3\fi
      }%
    \else
      \hyper@linkurl{#2}{\use@file\ifx\\#3\\\else\hyper@hash#3\fi}%
    \fi
  }%
}
\def\Hy@IfStringEndsWith#1#2{%
  \begingroup
    \edef\x{#1}%
    \@onelevel@sanitize\x
    \edef\x{.\x$}%
    \edef\y{#2}%
    \@onelevel@sanitize\y
    \edef\y{.\y$}%
    \expandafter\def\expandafter\z\expandafter##\expandafter1\y##2\@nil{%
      \endgroup
      \ifx\relax##2\relax
        \expandafter\@secondoftwo
      \else
        \expandafter\@firstoftwo
      \fi
    }%
  \expandafter\expandafter\expandafter\z\expandafter\x\y\@nil
}
\def\Hy@StringLocalhost{localhost}
\@onelevel@sanitize\Hy@StringLocalhost
\def\Hy@CleanupFile#1{%
  \edef#1{#1}%
  \expandafter\Hy@@CleanupFile#1\hbox///\hbox\@nil{#1}%
}
\def\Hy@@CleanupFile#1//#2/#3\hbox#4\@nil#5{%
  \begingroup
    \toks@{\endgroup}%
    \def\x{#1}%
    \ifx\x\@empty
      \def\x{#2}%
      \ifx\x\@empty
        \toks@{\endgroup\def#5{/#3}}%
      \else
        \@onelevel@sanitize\x
        \ifx\x\Hy@StringLocalhost
          \toks@{\endgroup\def#5{/#3}}%
        \fi
      \fi
    \fi
  \the\toks@
}
\long\def\hyper@@anchor#1#2{\@hyper@@anchor#1\relax#2\relax}
\long\def\@hyper@@anchor#1\relax#2#3\relax{%
  \ifx\\#1\\%
    #2\Hy@Warning{Ignoring empty anchor}%
  \else
    \def\anchor@spot{#2#3}%
    \let\put@me@back\@empty
    \ifx\relax#2\relax
    \else
      \ifHy@nesting
      \else
        \ifcat a\noexpand#2\relax
        \else
          \ifcat 0\noexpand#2 \relax
          \else
            \let\anchor@spot\@empty
            \def\put@me@back{#2#3}%
          \fi
        \fi
      \fi
    \fi
    \ifHy@activeanchor
      \anchor@spot
    \else
      \hyper@anchor{#1}%
    \fi
    \expandafter\put@me@back
  \fi
  \let\anchor@spot\@empty
}
\let\anchor@spot\@empty
\ifHy@destlabel
  \def\hyper@newdestlabel#1#2{%
    \begingroup
      \Hy@safe@activestrue
      \edef\x{\endgroup
        \noexpand\@newl@bel{HyDL}{#1}{#2}%
      }%
    \x
  }%
  \providecommand*{\hyper@destlabel@hook}{}%
  \newcommand*{\Hy@DestRename}[2]{%
    \@ifundefined{HyDL!#1}{%
      \begingroup
        \Hy@safe@activestrue
        \edef\dest@name{#1}%
        \edef\label@name{#2}%
        \hyper@destlabel@hook
        \Hy@IsNotEmpty{dest@name}{%
          \Hy@IsNotEmpty{label@name}{%
            \global\expandafter
            \let\csname HyDL!#1\endcsname\@empty
            \if@filesw
              \protected@write\@auxout{}{%
                \string\hyper@newdestlabel
                {#1}%
                {\label@name}%
              }%
            \fi
          }%
        }%
      \endgroup
    }{}%
  }%
  \newcommand*{\HyperDestRename}[2]{%
    \AtBeginDocument{%
      \Hy@DestRename{#1}{#2}%
    }%
  }%
  \AtBeginDocument{%
    \let\HyperDestRename\Hy@DestRename
  }%
  \def\Hy@IsNotEmpty#1{%
    \@ifundefined{#1}\@gobble{%
      \expandafter\ifx\csname#1\endcsname\@empty
        \expandafter\@gobble
      \else
        \expandafter\@firstofone
      \fi
    }%
  }%
  \Hy@GlobalAppendToMacro\label@hook{%
    \HyperDestRename\@currentHref\label@name
  }%
  \def\HyperDestLabelReplace#1{%
    \@ifundefined{HyDL@#1}{%
      #1%
    }{%
      \csname HyDL@#1\endcsname
    }%
  }%
\let\HyperDestNameFilter\HyperDestLabelReplace
\else
  \let\hyper@newdestlabel\@gobbletwo
  \let\HyperDestLabelReplace\@firstofone
  \let\HyperDestRename\@gobbletwo
\fi
\Hy@DisableOption{destlabel}
\AddToHook{include/before}
 {\immediate\write\@partaux{\string\providecommand\string\hyper@newdestlabel[2]{}}}
\AddToHook{begindocument}
 {\immediate\write\@mainaux{\string\providecommand\string\hyper@newdestlabel[2]{}}}
\RequirePackage{bitset}
\def\HyField@NewFlag#1#2{%
  \lowercase{\HyField@NewOption{#2}}%
  \lowercase{\HyField@NewBitsetFlag{#2}}{#2}{#1}%
}
\def\HyField@NewFlagOnly#1#2{%
  \lowercase{\HyField@NewBitsetFlag{#2}}{#2}{#1}%
}
\def\HyField@NewOption#1{%
  \expandafter\newif\csname ifFld@#1\endcsname
  \define@key{Field}{#1}[true]{%
    \lowercase{\Field@boolkey{##1}}{#1}%
  }%
}
\def\HyField@NewBitsetFlag#1#2#3#4{%
  \begingroup
    \count@=#4\relax
    \advance\count@\m@ne
    \def\x##1{%
      \endgroup
      \expandafter\def\csname HyField@#3@#1\endcsname{##1}%
      \expandafter\ifx\csname HyField@#3@##1\endcsname\relax
        \expandafter\edef\csname HyField@#3@##1\endcsname{%
          (\number#4) #2%
        }%
      \else
        \expandafter\edef\csname HyField@#3@##1\endcsname{%
          \csname HyField@#3@##1\endcsname
          /#2%
        }%
      \fi
    }%
  \expandafter\x\expandafter{\the\count@}%
}
\def\HyField@UseFlag#1#2{%
  \lowercase{\HyField@@UseFlag{#2}}{#1}%
}
\def\HyField@@UseFlag#1#2{%
  \bitsetSetValue{HyField@#2}{%
    \csname HyField@#2@#1\endcsname
  }{%
    \csname ifFld@#1\endcsname 1\else 0\fi
  }%
}
\def\HyField@SetFlag#1#2{%
  \lowercase{\HyField@@SetFlag{#2}}{#1}%
}
\def\HyField@@SetFlag#1#2{%
  \bitsetSetValue{HyField@#2}{%
    \csname HyField@#2@#1\endcsname
  }{1}%
}
\def\HyField@PrintFlags#1#2{%
  \ifHy@verbose
    \begingroup
      \let\Hy@temp\@empty
      \let\MessageBreak\relax
      \expandafter\@for\expandafter\x\expandafter:\expandafter=%
      \bitsetGetSetBitList{HyField@#1}\do{%
        \edef\Hy@temp{%
          \Hy@temp
          \csname HyField@#1@\x\endcsname\MessageBreak
        }%
      }%
    \edef\x{\endgroup
      \noexpand\Hy@Info{%
        Field flags: %
          \expandafter\ifx\@car#1\@nil S\else/\fi
          #1 %
          \bitsetGetDec{HyField@#1} %
          (0x\bitsetGetHex{HyField@#1}{32})\MessageBreak
        \Hy@temp
        for #2%
      }%
    }\x
  \fi
}
\HyField@NewFlag{Ff}{ReadOnly}{1}
\HyField@NewFlag{Ff}{Required}{2}
\HyField@NewFlag{Ff}{NoExport}{3}
\HyField@NewFlag{Ff}{NoToggleToOff}{15}
\HyField@NewFlag{Ff}{Radio}{16}
\HyField@NewFlag{Ff}{Pushbutton}{17}
\HyField@NewFlag{Ff}{RadiosInUnison}{26}
\HyField@NewFlag{Ff}{Multiline}{13}
\HyField@NewFlag{Ff}{Password}{14}
\HyField@NewFlag{Ff}{FileSelect}{21}% PDF 1.4
\HyField@NewFlag{Ff}{DoNotSpellCheck}{23}% PDF 1.4
\HyField@NewFlag{Ff}{DoNotScroll}{24}% PDF 1.4
\HyField@NewFlag{Ff}{Comb}{25}% PDF 1.4
\HyField@NewFlag{Ff}{RichText}{26}% PDF 1.5
\HyField@NewFlag{Ff}{Combo}{18}
\HyField@NewFlag{Ff}{Edit}{19}
\HyField@NewFlag{Ff}{Sort}{20}
\HyField@NewFlag{Ff}{MultiSelect}{22}% PDF 1.4
\HyField@NewFlag{Ff}{CommitOnSelChange}{27}% PDF 1.5
\newif\ifFld@popdown
\define@key{Field}{popdown}[true]{%
  \lowercase{\Field@boolkey{#1}}{popdown}%
}
\HyField@NewFlag{F}{Invisible}{1}
\HyField@NewFlag{F}{Hidden}{2}% PDF 1.2
\HyField@NewFlag{F}{Print}{3}% PDF 1.2
\HyField@NewFlag{F}{NoZoom}{4}% PDF 1.2
\HyField@NewFlag{F}{NoRotate}{5}% PDF 1.3
\HyField@NewFlag{F}{NoView}{6}% PDF 1.3
\HyField@NewFlag{F}{Locked}{8}% PDF 1.4
\HyField@NewFlag{F}{ToggleNoView}{9}% PDF 1.5
\HyField@NewFlag{F}{LockedContents}{10}% PDF 1.7
\ifHy@pdfa
  \def\HyField@PDFAFlagWarning#1#2{%
    \Hy@Warning{%
      PDF/A: Annotation flag `#1' must\MessageBreak
      be set to `#2'%
    }%
  }%
  \Fld@invisiblefalse
  \def\Fld@invisibletrue{%
    \HyField@PDFAFlagWarning{invisible}{false}%
  }%
  \Fld@hiddenfalse
  \def\Fld@hiddentrue{%
    \HyField@PDFAFlagWarning{hidden}{false}%
  }%
  \Fld@printtrue
  \def\Fld@printfalse{%
    \HyField@PDFAFlagWarning{print}{true}%
  }%
  \Fld@nozoomtrue
  \def\Fld@nozoomfalse{%
    \HyField@PDFAFlagWarning{nozoom}{true}%
  }%
  \Fld@norotatetrue
  \def\Fld@norotatefalse{%
    \HyField@PDFAFlagWarning{norotate}{true}%
  }%
  \Fld@noviewfalse
  \def\Fld@noviewtrue{%
    \HyField@PDFAFlagWarning{noview}{false}%
  }%
\fi
\HyField@NewFlag{Submit}{IncludeNoValueFields}{2}
\HyField@NewFlagOnly{Submit}{ExportFormat}{3}
\HyField@NewFlag{Submit}{GetMethod}{4}
\HyField@NewFlag{Submit}{SubmitCoordinates}{5}
\HyField@NewFlagOnly{Submit}{XFDF}{6}
\HyField@NewFlag{Submit}{IncludeAppendSaves}{7}
\HyField@NewFlag{Submit}{IncludeAnnotations}{8}
\HyField@NewFlagOnly{Submit}{SubmitPDF}{9}
\HyField@NewFlag{Submit}{CanonicalFormat}{10}
\HyField@NewFlag{Submit}{ExclNonUserAnnots}{11}
\HyField@NewFlag{Submit}{ExclFKey}{12}
\HyField@NewFlag{Submit}{EmbedForm}{14}
\define@key{Field}{export}{%
  \lowercase{\def\Hy@temp{#1}}%
  \@ifundefined{Fld@export@\Hy@temp}{%
    \@onelevel@sanitize\Hy@temp
    \Hy@Error{%
      Unknown export format `\Hy@temp'.\MessageBreak
      Known formats are `FDF', `HTML', `XFDF', and `PDF'%
    }\@ehc
  }{%
    \let\Fld@export\Hy@temp
  }%
}
\def\Fld@export{fdf}
\@namedef{Fld@export@fdf}{0}%
\@namedef{Fld@export@html}{1}%
\@namedef{Fld@export@xfdf}{2}%
\@namedef{Fld@export@pdf}{3}%
\def\HyField@FlagsSubmit{%
  \bitsetReset{HyField@Submit}%
  \ifcase\@nameuse{Fld@export@\Fld@export} %
    % FDF
    \HyField@UseFlag{Submit}{IncludeNoValueFields}%
    \HyField@UseFlag{Submit}{SubmitCoordinates}%
    \HyField@UseFlag{Submit}{IncludeAppendSaves}%
    \HyField@UseFlag{Submit}{IncludeAnnotations}%
    \HyField@UseFlag{Submit}{CanonicalFormat}%
    \HyField@UseFlag{Submit}{ExclNonUserAnnots}%
    \HyField@UseFlag{Submit}{ExclFKey}%
    \HyField@UseFlag{Submit}{EmbedForm}%
  \or % HTML
    \HyField@SetFlag{Submit}{ExportFormat}%
    \HyField@UseFlag{Submit}{IncludeNoValueFields}%
    \HyField@UseFlag{Submit}{GetMethod}%
    \HyField@UseFlag{Submit}{SubmitCoordinates}%
    \HyField@UseFlag{Submit}{CanonicalFormat}%
  \or % XFDF
    \HyField@SetFlag{Submit}{XFDF}%
    \HyField@UseFlag{Submit}{IncludeNoValueFields}%
    \HyField@UseFlag{Submit}{SubmitCoordinates}%
    \HyField@UseFlag{Submit}{CanonicalFormat}%
  \or % PDF
    \HyField@SetFlag{Submit}{SubmitPDF}%
    \HyField@UseFlag{Submit}{GetMethod}%
  \fi
  \HyField@PrintFlags{Submit}{submit button field}%
  \bitsetIsEmpty{HyField@Submit}{%
    \let\Fld@submitflags\@empty
  }{%
    \edef\Fld@submitflags{/Flags \bitsetGetDec{HyField@Submit}}%
  }%
}
\def\HyField@FlagsAnnot#1{%
  \bitsetReset{HyField@F}%
  \HyField@UseFlag{F}{Invisible}%
  \HyField@UseFlag{F}{Hidden}%
  \HyField@UseFlag{F}{Print}%
  \HyField@UseFlag{F}{NoZoom}%
  \HyField@UseFlag{F}{NoRotate}%
  \HyField@UseFlag{F}{NoView}%
  \HyField@UseFlag{F}{Locked}%
  \HyField@UseFlag{F}{ToggleNoView}%
  \HyField@UseFlag{F}{LockedContents}%
  \HyField@PrintFlags{F}{#1}%
  \bitsetIsEmpty{HyField@F}{%
    \let\Fld@annotflags\@empty
  }{%
    \edef\Fld@annotflags{/F \bitsetGetDec{HyField@F}}%
  }%
}
\def\HyField@FlagsPushButton{%
  \HyField@FlagsAnnot{push button field}%
  \bitsetReset{HyField@Ff}%
  \HyField@UseFlag{Ff}{ReadOnly}%
  \HyField@UseFlag{Ff}{Required}%
  \HyField@UseFlag{Ff}{NoExport}%
  \HyField@SetFlag{Ff}{Pushbutton}%
  \HyField@PrintFlags{Ff}{push button field}%
  \bitsetIsEmpty{HyField@Ff}{%
    \let\Fld@flags\@empty
  }{%
    \edef\Fld@flags{/Ff \bitsetGetDec{HyField@Ff}}%
  }%
}
\def\HyField@FlagsCheckBox{%
  \HyField@FlagsAnnot{check box field}%
  \bitsetReset{HyField@Ff}%
  \HyField@UseFlag{Ff}{ReadOnly}%
  \HyField@UseFlag{Ff}{Required}%
  \HyField@UseFlag{Ff}{NoExport}%
  \HyField@PrintFlags{Ff}{check box field}%
  \bitsetIsEmpty{HyField@Ff}{%
    \let\Fld@flags\@empty
  }{%
    \edef\Fld@flags{/Ff \bitsetGetDec{HyField@Ff}}%
  }%
}
\def\HyField@FlagsRadioButton{%
  \HyField@FlagsAnnot{radio button field}%
  \bitsetReset{HyField@Ff}%
  \HyField@UseFlag{Ff}{ReadOnly}%
  \HyField@UseFlag{Ff}{Required}%
  \HyField@UseFlag{Ff}{NoExport}%
  \HyField@UseFlag{Ff}{NoToggleToOff}%
  \HyField@SetFlag{Ff}{Radio}%
  \HyField@UseFlag{Ff}{RadiosInUnison}%
  \HyField@PrintFlags{Ff}{radio button field}%
  \bitsetIsEmpty{HyField@Ff}{%
    \let\Fld@flags\@empty
  }{%
    \edef\Fld@flags{/Ff \bitsetGetDec{HyField@Ff}}%
  }%
}
\def\HyField@FlagsText{%
  \HyField@FlagsAnnot{text field}%
  \bitsetReset{HyField@Ff}%
  \HyField@UseFlag{Ff}{ReadOnly}%
  \HyField@UseFlag{Ff}{Required}%
  \HyField@UseFlag{Ff}{NoExport}%
  \HyField@UseFlag{Ff}{Multiline}%
  \HyField@UseFlag{Ff}{Password}%
  \HyField@UseFlag{Ff}{FileSelect}%
  \HyField@UseFlag{Ff}{DoNotSpellCheck}%
  \HyField@UseFlag{Ff}{DoNotScroll}%
  \ifFld@comb
    \ifcase0\ifFld@multiline
            \else\ifFld@password
            \else\ifFld@fileselect
            \else 1\fi\fi\fi\relax
      \Hy@Error{%
        Field option `comb' cannot used together with\MessageBreak
        `multiline', `password', or `fileselect'%
      }\@ehc
    \else
      \HyField@UseFlag{Ff}{Comb}%
    \fi
  \fi
  \HyField@UseFlag{Ff}{RichText}%
  \HyField@PrintFlags{Ff}{text field}%
  \bitsetIsEmpty{HyField@Ff}{%
    \let\Fld@flags\@empty
  }{%
    \edef\Fld@flags{/Ff \bitsetGetDec{HyField@Ff}}%
  }%
}
\def\HyField@FlagsChoice{%
  \HyField@FlagsAnnot{choice field}%
  \bitsetReset{HyField@Ff}%
  \HyField@UseFlag{Ff}{ReadOnly}%
  \HyField@UseFlag{Ff}{Required}%
  \HyField@UseFlag{Ff}{NoExport}%
  \HyField@UseFlag{Ff}{Combo}%
  \ifFld@combo
    \HyField@UseFlag{Ff}{Edit}%
  \fi
  \HyField@UseFlag{Ff}{Sort}%
  \HyField@UseFlag{Ff}{MultiSelect}%
  \ifFld@combo
    \ifFld@edit
      \HyField@UseFlag{Ff}{DoNotSpellCheck}%
    \fi
  \fi
  \HyField@UseFlag{Ff}{CommitOnSelChange}%
  \HyField@PrintFlags{Ff}{choice field}%
  \bitsetIsEmpty{HyField@Ff}{%
    \let\Fld@flags\@empty
  }{%
    \edef\Fld@flags{/Ff \bitsetGetDec{HyField@Ff}}%
  }%
}
\def\HyField@PDFChoices#1{%
  \begingroup
    \global\let\Fld@choices\@empty
    \let\HyTmp@optlist\@empty
    \let\HyTmp@optitem\relax
    \count@=0 %
    \kv@parse{#1}{%
      \Hy@pdfstringdef\kv@key\kv@key
      \ifx\kv@value\relax
        \ifnum\Hy@pdf@majorminor@version<103 % implementation note 122, PDF spec 1.7
          \xdef\Fld@choices{\Fld@choices[(\kv@key)(\kv@key)]}%
        \else
          \xdef\Fld@choices{\Fld@choices(\kv@key)}%
        \fi
      \else
        \Hy@pdfstringdef\kv@value\kv@value
        \xdef\Fld@choices{\Fld@choices[(\kv@value)(\kv@key)]}%
      \fi
      \edef\HyTmp@optlist{%
        \HyTmp@optlist
        \HyTmp@optitem{\the\count@}{\kv@key}0%
      }%
      \advance\count@ by 1 %
      \@gobbletwo
    }%
    \xdef\Fld@choices{/Opt[\Fld@choices]}%
    \ifFld@multiselect
      \HyField@@PDFChoices{DV}\Fld@default
      \HyField@@PDFChoices{V}\Fld@value
    \else
      \ifx\Fld@default\relax
      \else
        \pdfstringdef\Hy@gtemp\Fld@default
        \xdef\Fld@choices{\Fld@choices/DV(\Hy@gtemp)}%
      \fi
      \ifx\Fld@value\relax
      \else
        \pdfstringdef\Hy@gtemp\Fld@value
        \xdef\Fld@choices{\Fld@choices/V(\Hy@gtemp)}%
      \fi
    \fi
  \endgroup
}
\def\HyField@@PDFChoices#1#2{%
  \ifx#2\relax
  \else
    \count@=0 %
    \def\HyTmp@optitem##1##2##3{%
      \def\HyTmp@key{##2}%
      \ifx\HyTmp@key\Hy@gtemp
        \expandafter\def\expandafter\HyTmp@optlist\expandafter{%
          \HyTmp@optlist
          \HyTmp@optitem{##1}{##2}1%
        }%
        \let\HyTmp@found=Y%
      \else
        \expandafter\def\expandafter\HyTmp@optlist\expandafter{%
          \HyTmp@optlist
          \HyTmp@optitem{##1}{##2}##3%
        }%
      \fi
    }%
    \expandafter\comma@parse\expandafter{#2}{%
      \pdfstringdef\Hy@gtemp\comma@entry
      \let\HyTmp@found=N %
      \expandafter\let\expandafter\HyTmp@optlist\expandafter\@empty
      \HyTmp@optlist
      \ifx\HyTmp@found Y%
        \advance\count@ by 1 %
      \else
        \@onelevel@sanitize\comma@entry
        \PackageWarning{hyperref}{%
          \string\ChoiceBox: Ignoring value `\comma@entry',%
          \MessageBreak
          it cannot be found in the choices%
        }%
      \fi
      \@gobble
    }%
    \def\HyTmp@optitem##1##2##3{%
      \ifnum##3=1 %
        (##2)%
      \fi
    }%
    \ifcase\count@
    \or
      \xdef\Fld@choices{\Fld@choices/#1\HyTmp@optlist}%
    \else
      \xdef\Fld@choices{\Fld@choices/#1[\HyTmp@optlist]}%
      \ifx#1V%
        \def\HyTmp@optitem##1##2##3{%
          \ifnum##3=1 %
            \@firstofone{ ##1}%
          \fi
        }%
        \edef\HyTmp@optlist{\HyTmp@optlist}%
        \xdef\Fld@choices{%
          \Fld@choices
          /I[\expandafter\@firstofone\HyTmp@optlist]%
        }%
      \fi
    \fi
  \fi
}
\def\HyField@SetKeys{%
  \kvsetkeys{Field}%
}
\newif\ifFld@checked
\newif\ifFld@disabled
\Fld@checkedfalse
\Fld@disabledfalse
\newcount\Fld@menulength
\newdimen\Field@Width
\newdimen\Fld@charsize
\Fld@charsize=10\p@
\def\Fld@maxlen{0}
\def\Fld@align{0}
\def\Fld@color{0 0 0 rg}
\def\Fld@bcolor{1 1 1}
\def\Fld@bordercolor{1 0 0}
\def\Fld@bordersep{1\p@}
\def\Fld@borderwidth{1}
\def\Fld@borderstyle{S}
\def\Fld@cbsymbol{4}
\def\Fld@radiosymbol{H}
\def\Fld@rotation{0}
\def\Form{\@ifnextchar[{\@Form}{\@Form[]}}
\def\endForm{\@endForm}
\newif\ifForm@html
\Form@htmlfalse
\def\Form@boolkey#1#2{%
  \csname Form@#2\ifx\relax#1\relax true\else#1\fi\endcsname
}
\define@key{Form}{action}{%
  \hyper@normalise\Hy@DefFormAction{#1}%
}
\def\Hy@DefFormAction{\def\Form@action}
\def\enc@@html{html}
\define@key{Form}{encoding}{%
  \def\Hy@tempa{#1}%
  \ifx\Hy@tempa\enc@@html
    \Form@htmltrue
    \def\Fld@export{html}%
  \else
    \Hy@Warning{%
       Form `encoding' key with \MessageBreak
       unknown value `#1'%
    }%
    \Form@htmlfalse
  \fi
}
\define@key{Form}{method}{%
  \lowercase{\def\Hy@temp{#1}}%
  \@ifundefined{Form@method@\Hy@temp}{%
    \@onelevel@sanitize\Hy@temp
    \Hy@Error{%
      Unknown method `\Hy@temp'.\MessageBreak
      Known values are `post' and `get'%
    }\@ehc
  }{%
    \let\Form@method\Hy@temp
    \ifcase\@nameuse{Form@method@\Hy@temp} %
      \Fld@getmethodfalse
    \else
      \Fld@getmethodtrue
    \fi
  }%
}
\def\Form@method{}
\@namedef{Form@method@post}{0}
\@namedef{Form@method@get}{1}
\newif\ifHyField@NeedAppearances
\def\HyField@NeedAppearancesfalse{%
  \global\let\ifHyField@NeedAppearances\iffalse
}
\def\HyField@NeedAppearancestrue{%
  \global\let\ifHyField@NeedAppearances\iftrue
}
\HyField@NeedAppearancestrue
\define@key{Form}{NeedAppearances}[true]{%
  \edef\Hy@tempa{#1}%
  \ifx\Hy@tempa\Hy@true
    \HyField@NeedAppearancestrue
  \else
    \ifx\Hy@tempa\Hy@false
      \HyField@NeedAppearancesfalse
    \else
      \Hy@Error{%
        Unexpected value `\Hy@tempa'\MessageBreak
        of option `NeedAppearances' instead of\MessageBreak
        `true' or `false'%
      }\@ehc
    \fi
  \fi
}
\def\Field@boolkey#1#2{%
  \csname Fld@#2\ifx\relax#1\relax true\else#1\fi\endcsname
}
\ifHy@texht
  \newtoks\Field@toks
  \Field@toks={ }%
  \def\Field@addtoks#1#2{%
    \edef\@processme{\Field@toks{\the\Field@toks\space #1="#2"}}%
    \@processme
  }%
\else
  \def\Hy@WarnHTMLFieldOption#1{%
    \Hy@Warning{%
      HTML field option `#1'\MessageBreak
      is ignored%
    }%
  }%
\fi
\def\Fld@checkequals#1=#2=#3\\{%
  \def\@currDisplay{#1}%
  \ifx\\#2\\%
    \def\@currValue{#1}%
  \else
    \def\@currValue{#2}%
  \fi
  \expandafter\Hy@pdfstringdef\expandafter\@currValue\expandafter{\@currValue}%
}
\define@key{Field}{loc}{%
  \def\Fld@loc{#1}%
}
\define@key{Field}{checked}[true]{%
  \lowercase{\Field@boolkey{#1}}{checked}%
}
\define@key{Field}{disabled}[true]{%
  \lowercase{\Field@boolkey{#1}}{disabled}%
}
\ifHy@texht
  \define@key{Field}{accesskey}{%
    \Field@addtoks{accesskey}{#1}%
  }%
  \define@key{Field}{tabkey}{%
    \Field@addtoks{tabkey}{#1}%
  }%
\else
  \define@key{Field}{accesskey}{%
    \Hy@WarnHTMLFieldOption{accesskey}%
  }%
  \define@key{Field}{tabkey}{%
    \Hy@WarnHTMLFieldOption{tabkey}%
  }%
\fi
\define@key{Field}{name}{%
  \def\Fld@name{#1}%
}
\let\Fld@altname\relax
\define@key{Field}{altname}{%
  \def\Fld@altname{#1}%
}
\let\Fld@mappingname\relax
\define@key{Field}{mappingname}{%
  \def\Fld@mappingname{#1}%
}
\define@key{Field}{width}{%
  \def\Fld@width{#1}%
  \Field@Width#1\setbox0=\hbox{m}%
}
\define@key{Field}{maxlen}{%
  \def\Fld@maxlen{#1}%
}
\define@key{Field}{menulength}{%
  \Fld@menulength=#1\relax
}
\define@key{Field}{height}{%
  \def\Fld@height{#1}%
}
\define@key{Field}{charsize}{%
  \setlength{\Fld@charsize}{#1}%
}
\define@key{Field}{borderwidth}{%
  \Hy@defaultbp\Fld@borderwidth{#1}%
}
\def\Hy@defaultbp#1#2{%
  \begingroup
  \afterassignment\Hy@defaultbpAux
  \dimen@=#2bp\relax{#1}{#2}%
}
\def\Hy@defaultbpAux#1\relax#2#3{%
  \ifx!#1!%
    \endgroup
    \def#2{#3}%
  \else
    \edef\x{\endgroup
      \def\noexpand#2{%
        \strip@pt\dimexpr\dimen@*800/803\relax
      }%
    }\x
  \fi
}%
\define@key{Field}{borderstyle}{%
  \let\Hy@temp\Fld@borderstyle
  \def\Fld@borderstyle{#1}%
  \Hy@Match\Fld@borderstyle{}{%
    ^[SDBIU]$%
  }{}{%
    \Hy@Warning{%
      Invalid value `\@pdfborderstyle'\MessageBreak
      for option `pdfborderstyle'. Valid values:\MessageBreak
      \space\space S (Solid), D (Dashed), B (Beveled),\MessageBreak
      \space\space I (Inset), U (Underline)\MessageBreak
      Option setting is ignored%
    }%
    \let\Fld@borderstyle\Hy@temp
  }%
}
\define@key{Field}{bordersep}{%
  \def\Fld@bordersep{#1}%
}
\define@key{Field}{default}{%
  \Hy@pdfstringdef\Fld@default{#1}%
}
\define@key{Field}{align}{%
  \def\Fld@align{#1}%
}
\define@key{Field}{value}{%
  \Hy@pdfstringdef\Fld@value{#1}%
}
\define@key{Field}{checkboxsymbol}{%
  \Fld@DingDef\Fld@cbsymbol{#1}%
}
\define@key{Field}{radiosymbol}{%
  \Fld@DingDef\Fld@radiosymbol{#1}%
}
\def\Fld@DingDef#1#2{%
  \let\Fld@temp\@empty
  \Fld@@DingDef#2\ding{}\@nil
  \let#1\Fld@temp
}
\def\Fld@@DingDef#1\ding#2#3\@nil{%
  \expandafter\def\expandafter\Fld@temp\expandafter{%
    \Fld@temp
    #1%
  }%
  \ifx\\#3\\%
    \expandafter\@gobble
  \else
    \begingroup
      \lccode`0=#2\relax
    \lowercase{\endgroup
      \expandafter\def\expandafter\Fld@temp\expandafter{%
        \Fld@temp
        0%
      }%
    }%
    \expandafter\@firstofone
  \fi
  {%
    \Fld@@DingDef#3\@nil
  }%
}
\define@key{Field}{rotation}{%
  \def\Fld@rotation{#1}%
}
\define@key{Field}{backgroundcolor}{%
  \HyColor@FieldBColor{#1}\Fld@bcolor{hyperref}{backgroundcolor}%
}
\define@key{Field}{bordercolor}{%
  \HyColor@FieldBColor{#1}\Fld@bordercolor{hyperref}{bordercolor}%
}
\define@key{Field}{color}{%
  \HyColor@FieldColor{#1}\Fld@color{hyperref}{color}%
}
\let\Fld@onclick@code\@empty
\let\Fld@format@code\@empty
\let\Fld@validate@code\@empty
\let\Fld@calculate@code\@empty
\let\Fld@keystroke@code\@empty
\let\Fld@onfocus@code\@empty
\let\Fld@onblur@code\@empty
\let\Fld@onmousedown@code\@empty
\let\Fld@onmouseup@code\@empty
\let\Fld@onenter@code\@empty
\let\Fld@onexit@code\@empty
\def\Hy@temp#1{%
  \expandafter\Hy@@temp\csname Fld@#1@code\endcsname{#1}%
}
\def\Hy@@temp#1#2{%
  \ifHy@pdfa
    \define@key{Field}{#2}{%
      \Hy@Error{%
        PDF/A: Additional action `#2' is prohibited%
      }\@ehc
    }%
  \else
    \define@key{Field}{#2}{%
      \def#1{##1}%
    }%
  \fi
}
\Hy@temp{keystroke}
\Hy@temp{format}
\Hy@temp{validate}
\Hy@temp{calculate}
\Hy@temp{onfocus}
\Hy@temp{onblur}
\Hy@temp{onmousedown}
\Hy@temp{onmouseup}
\Hy@temp{onenter}
\Hy@temp{onexit}
\let\Fld@calculate@sortkey\@empty
\define@key{Field}{calculatesortkey}[1]{%
  \def\Fld@calculate@sortkey{#1}%
}
\ifHy@texht
  \def\Hy@temp#1{%
    \define@key{Field}{#1}{%
      \Field@addtoks{#1}{##1}%
    }%
  }%
\else
  \def\Hy@temp#1{%
    \define@key{Field}{#1}{%
      \Hy@WarnHTMLFieldOption{#1}%
    }%
  }%
\fi
\Hy@temp{ondblclick}
\Hy@temp{onmouseover}
\Hy@temp{onmousemove}
\Hy@temp{onmouseout}
\Hy@temp{onkeydown}
\Hy@temp{onkeyup}
\Hy@temp{onselect}
\Hy@temp{onchange}
\Hy@temp{onkeypress}
\ifHy@texht
  \define@key{Field}{onclick}{%
    \Field@addtoks{onclick}{#1}%
  }%
\else
  \ifHy@pdfa
    \define@key{Field}{onclick}{%
      \Hy@Error{%
        PDF/A: Action `onclick' is prohibited%
      }\@ehc
    }%
  \else
    \define@key{Field}{onclick}{%
      \def\Fld@onclick@code{#1}%
    }%
  \fi
\fi
\DeclareRobustCommand\TextField{%
  \@ifnextchar[{\@TextField}{\@TextField[]}%
}
\DeclareRobustCommand\ChoiceMenu{%
  \@ifnextchar[{\@ChoiceMenu}{\@ChoiceMenu[]}%
}
\DeclareRobustCommand\CheckBox{%
  \@ifnextchar[{\@CheckBox}{\@CheckBox[]}%
}
\DeclareRobustCommand\PushButton{%
  \@ifnextchar[{\@PushButton}{\@PushButton[]}%
}
\DeclareRobustCommand\Gauge{%
  \@ifnextchar[{\@Gauge}{\@Gauge[]}%
}
\DeclareRobustCommand\Submit{%
  \@ifnextchar[{\@Submit}{\@Submit[]}%
}
\DeclareRobustCommand\Reset{%
  \@ifnextchar[{\@Reset}{\@Reset[]}%
}
\def\LayoutTextField#1#2{% label, field
  \def\Hy@temp{#1}%
  \ifx\Hy@temp\@empty
    #2%
  \else
    #1 #2%
  \fi
}
\def\LayoutChoiceField#1#2{% label, field
  \def\Hy@temp{#1}%
  \ifx\Hy@temp\@empty
    #2%
  \else
    #1 #2%
  \fi
}
\def\LayoutCheckField#1#2{% label, field
  \def\Hy@temp{#1}%
  \ifx\Hy@temp\@empty
    #2%
  \else
    #1 #2%
  \fi
}
\def\LayoutPushButtonField#1{% button
  #1%
}
\def\MakeRadioField#1#2{\vbox to #2{\hbox to #1{\hfill}\vfill}}
\def\MakeCheckField#1#2{\vbox to #2{\hbox to #1{\hfill}\vfill}}
\def\MakeTextField#1#2{\vbox to #2{\hbox to #1{\hfill}\vfill}}
\def\MakeChoiceField#1#2{\vbox to #2{\hbox to #1{\hfill}\vfill}}
\def\MakeButtonField#1{%
  \sbox0{%
    \hskip\Fld@borderwidth bp#1\hskip\Fld@borderwidth bp%
  }%
  \@tempdima\ht0 %
  \advance\@tempdima by \Fld@borderwidth bp %
  \advance\@tempdima by \Fld@borderwidth bp %
  \ht0\@tempdima
  \@tempdima\dp0 %
  \advance\@tempdima by \Fld@borderwidth bp %
  \advance\@tempdima by \Fld@borderwidth bp %
  \dp0\@tempdima
  \box0\relax
}
\def\DefaultHeightofSubmit{14pt}
\def\DefaultWidthofSubmit{2cm}
\def\DefaultHeightofReset{14pt}
\def\DefaultWidthofReset{2cm}
\def\DefaultHeightofCheckBox{\normalbaselineskip}
\def\DefaultWidthofCheckBox{\normalbaselineskip}
\def\DefaultHeightofChoiceMenu{\normalbaselineskip}
\def\DefaultWidthofChoiceMenu{\normalbaselineskip}
\def\DefaultHeightofText{\normalbaselineskip}
\def\DefaultHeightofTextMultiline{4\normalbaselineskip}
\def\DefaultWidthofText{3cm}
\def\DefaultOptionsofSubmit{print,name=Submit,noexport}
\def\DefaultOptionsofReset{print,name=Reset,noexport}
\def\DefaultOptionsofPushButton{print}
\def\DefaultOptionsofCheckBox{print}
\def\DefaultOptionsofText{print}
\def\DefaultOptionsofListBox{print}
\def\DefaultOptionsofComboBox{print,edit,sort}
\def\DefaultOptionsofPopdownBox{print}
\def\DefaultOptionsofRadio{print,notoggletooff}
\ifHy@hyperfigures
  \Hy@Info{Hyper figures ON}%
\else
  \Hy@Info{Hyper figures OFF}%
\fi
\ifHy@nesting
  \Hy@Info{Link nesting ON}%
\else
  \Hy@Info{Link nesting OFF}%
\fi
\ifHy@hyperindex
  \Hy@Info{Hyper index ON}%
\else
  \Hy@Info{Hyper index OFF}%
\fi
\ifHy@backref
  \Hy@Info{backreferencing ON}%
\else
  \Hy@Info{backreferencing OFF}%
\fi
\ifHy@colorlinks
  \Hy@Info{Link coloring ON}%
\else
  \Hy@Info{Link coloring OFF}%
\fi
\ifHy@ocgcolorlinks
  \Hy@Info{Link coloring with OCG ON}%
\else
  \Hy@Info{Link coloring with OCG OFF}%
\fi
\ifHy@pdfa
  \Hy@Info{PDF/A mode ON}%
\else
  \Hy@Info{PDF/A mode OFF}%
\fi
\edef\hyper@hash{\string#}
\edef\hyper@tilde{\string~}
\edef\hyper@quote{\string"}
\def\@currentHref{Doc-Start}
\let\Hy@footnote@currentHref\@empty
\Hy@AtBeginDocument{%
  \Hy@pdfstringtrue
  \PDF@SetupDoc
  \let\PDF@SetupDoc\@empty
  \Hy@DisableOption{pdfpagescrop}%
  \Hy@DisableOption{pdfpagemode}%
  \Hy@DisableOption{pdfnonfullscreenpagemode}%
  \Hy@DisableOption{pdfdirection}%
  \Hy@DisableOption{pdfviewarea}%
  \Hy@DisableOption{pdfviewclip}%
  \Hy@DisableOption{pdfprintarea}%
  \Hy@DisableOption{pdfprintclip}%
  \Hy@DisableOption{pdfprintscaling}%
  \Hy@DisableOption{pdfduplex}%
  \Hy@DisableOption{pdfpicktraybypdfsize}%
  \Hy@DisableOption{pdfprintpagerange}%
  \Hy@DisableOption{pdfnumcopies}%
  \Hy@DisableOption{pdfstartview}%
  \Hy@DisableOption{pdfstartpage}%
  \Hy@DisableOption{pdftoolbar}%
  \Hy@DisableOption{pdfmenubar}%
  \Hy@DisableOption{pdfwindowui}%
  \Hy@DisableOption{pdffitwindow}%
  \Hy@DisableOption{pdfcenterwindow}%
  \Hy@DisableOption{pdfdisplaydoctitle}%
  \Hy@DisableOption{pdfpagelayout}%
  \Hy@DisableOption{pdflang}%
  \Hy@DisableOption{baseurl}%
  \ifHy@texht\else\hyper@anchorstart{Doc-Start}\hyper@anchorend\fi
  \Hy@pdfstringfalse
}

\def\NoHyper{%
  \def\hyper@link@[##1]##2##3##4{##4\Hy@xspace@end}%
  \def\hyper@@anchor##1##2{##2\Hy@xspace@end}%
  \global\let\hyper@livelink\hyper@link
  \gdef\hyper@link##1##2##3{##3\Hy@xspace@end}%
  \let\hyper@anchor\@gobble
  \let\hyper@anchorstart\@gobble
  \def\hyper@anchorend{\Hy@xspace@end}%
  \let\hyper@linkstart\@gobbletwo
  \def\hyper@linkend{\Hy@xspace@end}%
  \def\hyper@linkurl##1##2{##1\Hy@xspace@end}%
  \def\hyper@linkfile##1##2##3{##1\Hy@xspace@end}%
  \let\Hy@backout\@gobble
}
\def\stop@hyper{%
  \def\hyper@link@[##1]##2##3##4{##4\Hy@xspace@end}%
  \let\Hy@backout\@gobble
  \let\hyper@@anchor\@gobble
  \def\hyper@link##1##2##3{##3\Hy@xspace@end}%
  \let\hyper@anchor\@gobble
  \let\hyper@anchorstart\@gobble
  \def\hyper@anchorend{\Hy@xspace@end}%
  \let\hyper@linkstart\@gobbletwo
  \def\hyper@linkend{\Hy@xspace@end}%
  \def\hyper@linkurl##1##2{##1\Hy@xspace@end}%
  \def\hyper@linkfile##1##2##3{##1\Hy@xspace@end}%
}
\def\endNoHyper{%
  \global\let\hyper@link\hyper@livelink
}
\@ifl@t@r\fmtversion{2023-06-01}{}
 {
   \Hy@AtBeginDocument{%
      \if@filesw
        \immediate\write\@auxout{%
          \string\providecommand\string\HyperFirstAtBeginDocument{%
            \string\AtBeginDocument}^^J%
          \string\HyperFirstAtBeginDocument{%
            \string\ifx\string\hyper@anchor\string\@undefined^^J%
              \string\global\string\let\string\oldnewlabel\string\newlabel^^J%
              \string\gdef\string\newlabel\string#1\string#2{%
                 \string\newlabelxx{\string#1}\string#2}^^J%
              \string\gdef\string\newlabelxx%
                 \string#1\string#2\string#3\string#4\string#5\string#6{%
                 \string\oldnewlabel{\string#1}{{\string#2}{\string#3}}}^^J%
              \string\AtEndDocument{%
                \string\ifx\string\hyper@anchor\string\@undefined^^J%
                  \string\let\string\newlabel\string\oldnewlabel^^J%
                \string\fi%
              }^^J%
            \string\fi%
          }^^J%
          \string\global\string\let\string\hyper@last\relax^^J%
          \string\gdef\string\HyperFirstAtBeginDocument\string#1{\string#1}%
        }%
      \fi
      \let\HyperFirstAtBeginDocument\@firstofone
      \ifx\hyper@last\@undefined
        \def\newlabel#1#2{\@newl@bel r{#1}{#2{}{}{}{}}}%
      \fi
    }
}
\ifHy@pdfusetitle
  \let\HyOrg@title\title
  \let\HyOrg@author\author
  \def\title{\@ifnextchar[{\Hy@scanopttitle}{\Hy@scantitle}}%
  \def\Hy@scanopttitle[#1]{%
    \gdef\Hy@title{#1}%
    \HyOrg@title[{#1}]%
  }%
  \def\Hy@scantitle#1{%
    \gdef\Hy@title{#1}%
    \HyOrg@title{#1}%
  }%
  \def\author{\@ifnextchar[{\Hy@scanoptauthor}{\Hy@scanauthor}}%
  \def\Hy@scanoptauthor[#1]{%
    \gdef\Hy@author{#1}%
    \HyOrg@author[{#1}]%
  }%
  \def\Hy@scanauthor#1{%
    \gdef\Hy@author{#1}%
    \HyOrg@author{#1}%
  }%
  \begingroup
    \def\process@me#1\@nil#2{%
      \expandafter\let\expandafter\x\csname @#2\endcsname
      \edef\y{\expandafter\strip@prefix\meaning\x}%
      \def\c##1#1##2\@nil{%
        \ifx\\##1\\%
        \else
         \expandafter\gdef\csname Hy@#2\expandafter\endcsname
              \expandafter{\x}%
        \fi
      }%
      \expandafter\c\y\relax#1\@nil
    }%
    \expandafter\process@me\string\@latex@\@nil{title}%
    \expandafter\process@me\string\@latex@\@nil{author}%
  \endgroup
\fi
\Hy@DisableOption{pdfusetitle}
\def\Hy@UseMaketitleString#1{%
  \@ifundefined{Hy@#1}{}{%
    \begingroup
      \let\Hy@saved@hook\pdfstringdefPreHook
      \pdfstringdefDisableCommands{%
        \expandafter\let\expandafter\\\csname Hy@newline@#1\endcsname
        \let\newline\\%
        \def\and{; }%
        \let\thanks\@gobble%
      }%
      \expandafter\ifx\csname @pdf#1\endcsname\@empty
        \expandafter\pdfstringdef\csname @pdf#1\endcsname{%
          \csname Hy@#1\endcsname\@empty
        }%
      \fi
      \global\let\pdfstringdefPreHook\Hy@saved@hook
    \endgroup
  }%
}
\def\Hy@newline@title#1{ #1}
\def\Hy@newline@author#1{, #1}
\def\Hy@UseMaketitleInfos{%
  \Hy@UseMaketitleString{title}%
  \Hy@UseMaketitleString{author}%
}
\RequirePackage{atbegshi}[2007/09/09]
\let\Hy@EveryPageHook\@empty
\let\Hy@EveryPageBoxHook\@empty
\let\Hy@FirstPageHook\@empty
\AtBeginShipout{%
  \Hy@EveryPageHook
  \ifx\Hy@EveryPageBoxHook\@empty
  \else
    \setbox\AtBeginShipoutBox=\vbox{%
      \offinterlineskip
      \Hy@EveryPageBoxHook
      \box\AtBeginShipoutBox
    }%
  \fi
}
\Hy@iffileloaded{hpdftex.def}{%
  \AtBeginShipout{%
    \Hy@FirstPageHook
    \global\let\Hy@FirstPageHook\@empty
  }%
}{%
  \AtBeginShipoutFirst{%
    \Hy@FirstPageHook
  }%
}
\g@addto@macro\Hy@FirstPageHook{%
  \PDF@FinishDoc
  \global\let\PDF@FinishDoc\@empty
}
\ifHy@pdfpagelabels
  \begingroup\expandafter\expandafter\expandafter\endgroup
  \expandafter\ifx\csname thepage\endcsname\relax
    \Hy@pdfpagelabelsfalse
    \Hy@WarningNoLine{%
      Option `pdfpagelabels' is turned off\MessageBreak
      because \string\thepage\space is undefined%
    }%
    \csname fi\endcsname
    \csname iffalse\expandafter\endcsname
  \fi
  \def\thispdfpagelabel#1{%
    \gdef\HyPL@thisLabel{#1}%
  }%
  \global\let\HyPL@thisLabel\relax
  \let\HyPL@Labels\@empty
  \newcount\Hy@abspage
  \Hy@abspage=0 %
  \def\HyPL@LastType{init}%
  \def\HyPL@LastNumber{0}%
  \let\HyPL@LastPrefix\@empty
  \def\HyPL@arabic{D}%
  \def\HyPL@Roman{R}%
  \def\HyPL@roman{r}%
  \def\HyPL@Alph{A}%
  \def\HyPL@alph{a}%
  \let\HyPL@SlidesSetPage\@empty
  \@ifclassloaded{slides}{%
    \def\HyPL@SlidesSetPage{%
      \advance\c@page\@ne
      \ifnum\value{page}>\@ne
        \protected@edef\HyPL@SlidesOptionalPage{%
          \Hy@SlidesFormatOptionalPage{\thepage}%
        }%
      \else
        \let\HyPL@SlidesOptionalPage\@empty
      \fi
      \advance\c@page-\@ne
      \def\HyPL@page{%
        \csname the\Hy@SlidesPage\endcsname
        \HyPL@SlidesOptionalPage
      }%
    }%
  }{}%
  \def\HyPL@EveryPage{%
    \begingroup
      \ifx\HyPL@thisLabel\relax
        \let\HyPL@page\thepage
        \HyPL@SlidesSetPage
      \else
        \let\HyPL@page\HyPL@thisLabel
        \global\let\HyPL@thisLabel\relax
      \fi
      \let\HyPL@Type\relax
      \ifnum\c@page>0 %
        \ifx\HyPL@SlidesSetPage\@empty
          \expandafter\HyPL@CheckThePage\HyPL@page\@nil
        \fi
      \fi
      \let\Hy@temp Y%
      \ifx\HyPL@Type\HyPL@LastType
      \else
        \let\Hy@temp N%
      \fi
      \ifx\HyPL@Type\relax
         \pdfstringdef\HyPL@Prefix{\HyPL@page}%
      \else
         \pdfstringdef\HyPL@Prefix\HyPL@Prefix
      \fi
      \ifx\HyPL@Prefix\HyPL@LastPrefix
      \else
        \let\Hy@temp N%
      \fi
      \if Y\Hy@temp
        \advance\c@page by -1 %
        \ifnum\HyPL@LastNumber=\the\c@page\relax
        \else
          \let\Hy@temp N%
        \fi
        \Hy@StepCount\c@page
      \fi
      \if N\Hy@temp
        \ifx\HyPL@Type\relax
          \HyPL@StorePageLabel{/P(\HyPL@Prefix)}%
        \else
          \HyPL@StorePageLabel{%
            \ifx\HyPL@Prefix\@empty
            \else
              /P(\HyPL@Prefix)%
            \fi
            /S/\csname HyPL\HyPL@Type\endcsname
            \ifnum\the\c@page=1 %
            \else
              \space/St \the\c@page
            \fi
          }%
        \fi
      \fi
      \xdef\HyPL@LastNumber{\the\c@page}%
      \global\let\HyPL@LastType\HyPL@Type
      \global\let\HyPL@LastPrefix\HyPL@Prefix
    \endgroup
    \Hy@GlobalStepCount\Hy@abspage
  }%
  \def\HyPL@CheckThePage#1\@nil{%
    \HyPL@@CheckThePage{#1}#1\csname\endcsname\c@page\@nil
  }%
  \def\HyPL@@CheckThePage#1#2\csname#3\endcsname\c@page#4\@nil{%
    \def\Hy@tempa{#4}%
    \def\Hy@tempb{\csname\endcsname\c@page}%
    \ifx\Hy@tempa\Hy@tempb
      \expandafter\ifx\csname HyPL#3\endcsname\relax
      \else
        \def\HyPL@Type{#3}%
        \def\HyPL@Prefix{#2}%
      \fi
    \else
      \begingroup
        \let\Hy@next\endgroup
        \let\HyPL@found\@undefined
        \def\arabic{\HyPL@Format{arabic}}%
        \def\Roman{\HyPL@Format{Roman}}%
        \def\roman{\HyPL@Format{roman}}%
        \def\Alph{\HyPL@Format{Alph}}%
        \def\alph{\HyPL@Format{alph}}%
        \protected@edef\Hy@temp{#1}%
        \ifx\HyPL@found\relax
          \toks@\expandafter{\Hy@temp}%
          \edef\Hy@next{\endgroup
            \noexpand\HyPL@@@CheckThePage\the\toks@
               \noexpand\HyPL@found\relax\noexpand\@nil
          }%
        \fi
      \Hy@next
    \fi
  }%
  \def\HyPL@Format#1#2{%
    \ifx\HyPL@found\@undefined
      \expandafter\ifx\csname c@#2\endcsname\c@page
        \expandafter\noexpand\csname HyPL@found\endcsname{#1}%
      \else
        \expandafter\noexpand\csname#1\endcsname{#2}%
      \fi
    \else
      \expandafter\noexpand\csname#1\endcsname{#2}%
    \fi
  }%
  \def\HyPL@@@CheckThePage#1\HyPL@found#2#3\@nil{%
    \def\Hy@tempa{#3}%
    \def\Hy@tempb{\HyPL@found\relax}%
    \ifx\Hy@tempa\Hy@tempb
      \def\HyPL@Type{@#2}%
      \def\HyPL@Prefix{#1}%
    \fi
  }%
  \providecommand*{\HyPL@StorePageLabel}[1]{}%
  \def\HyPL@Useless{0<</S/D>>}%
  \@onelevel@sanitize\HyPL@Useless
  \def\HyPL@SetPageLabels{%
    \@onelevel@sanitize\HyPL@Labels
    \ifx\HyPL@Labels\@empty
    \else
      \ifx\HyPL@Labels\HyPL@Useless
      \else
        \Hy@PutCatalog{/PageLabels<</Nums[\HyPL@Labels]>>}%
      \fi
    \fi
  }%
  \g@addto@macro\Hy@EveryPageHook{\HyPL@EveryPage}%
\fi
\Hy@DisableOption{pdfpagelabels}
%% File: hyperref-linktarget.dtx
\ExplSyntaxOn
\bool_new:N \l__hyp_target_create_bool
\bool_set_true:N \l__hyp_target_create_bool
\hook_new:n {makelinktarget}
\cs_new_protected:Npn \__hyp_target_raise:n #1
 {
   \mode_if_vertical:TF
    { #1 }
    {
     \Hy@SaveSpaceFactor
     \penalty\@M
     \smash
      {
       \box_move_up:nn
        { \normalbaselineskip }
        {
         \hbox:n
          {
           \Hy@RestoreSpaceFactor
           #1
           \Hy@SaveSpaceFactor
          }
        }
      }
     \Hy@RestoreSpaceFactor
    }
 }
\ProvideDocumentCommand\LinkTargetOn{}{}
\ProvideDocumentCommand\LinkTargetOff{}{}
\ProvideDocumentCommand\MakeLinkTarget{sO{}m}{}
\ProvideDocumentCommand\NextLinkTarget{m}{}
\RenewDocumentCommand\LinkTargetOn {}
 {
   \bool_set_true:N \l__hyp_target_create_bool
 }

\RenewDocumentCommand\LinkTargetOff {}
 {
   \bool_set_false:N \l__hyp_target_create_bool
 }
\RenewDocumentCommand\MakeLinkTarget {s O{} m}
  {
    \bool_if:NT \l__hyp_target_create_bool
      {
        \group_begin:
        \hook_use:n { makelinktarget }
        \IfBooleanTF  {#1}
          {
            \__hyp_target_manual:nn {#2}{#3}
          }
          {
            \__hyp_target_counter:nn {#2}{#3}
          }
        \group_end:
      }
  }
\cs_new_protected:Npn  \__hyp_target_manual:nn #1 #2 %#1 prefix, #2 name
  {
    \tl_gset:Ne \@currentHref {#2}
    \hook_use:n {__hyp/target/setname}
    \@onelevel@sanitize\@currentHref
    \__hyp_target_raise:n {\hyper@anchorstart{\@currentHref}\hyper@anchorend}
  }
\cs_new_protected:Npn \__hyp_target_counter:nn #1 #2  %#1 prefix, #2 counter or empty
  {
    \tl_if_blank:nTF {#2}
      {
        \__hyp_target_counter_anon:n {#1}
      }
      {
        \__hyp_target_counter_doc:nn {#1}{#2}
      }
  }

\cs_new_protected:Npn \__hyp_target_counter_anon:n #1
  {
    \int_gincr:N\Hy@linkcounter
    \tl_gset:Ne \@currentHref
      {\tl_if_blank:nTF{#1}{page}{#1}*.\int_use:N\Hy@linkcounter}
    \hook_use:n {__hyp/target/setname}
    \@onelevel@sanitize\@currentHref
    \__hyp_target_raise:n {\hyper@anchorstart{\@currentHref}\hyper@anchorend}
  }

\cs_new_protected:Npn \__hyp_target_counter_doc:nn #1 #2
  {
    \bool_lazy_or:nnTF { \cs_if_free_p:c {c@#2} } { \cs_if_free_p:c {theH#2} }
      {
        \PackageWarning {hyperref}{Counter~'#2'~or~the~representation~'\string\theH#2`\MessageBreak
        don't~exist.~No~target~created.}{}
      }
      {
        \tl_gset:Ne \@currentHref {\tl_if_blank:nTF{#1}{#2}{#1}.\use:c{theH#2}}
        \hook_use:n {__hyp/target/setname}
        \@onelevel@sanitize\@currentHref
        \__hyp_target_raise:n {\hyper@anchorstart{\@currentHref}\hyper@anchorend}
      }
  }
\RenewDocumentCommand\NextLinkTarget {m}
  {
    \hook_gput_next_code:nn {__hyp/target/setname}
      {
        \tl_gset:Ne \@currentHref {#1}
      }
  }

\NewDocumentCommand\SetLinkTargetFilter {m}
  {
    \cs_set:Npn \HyperDestNameFilter ##1 {#1}
  }
\@onlypreamble \SetLinkTargetFilter
\ExplSyntaxOff
%% File: hyperref.dtx
\ifx\MaybeStopEarly\relax
\else
  \Hy@stoppedearlytrue
  \expandafter\MaybeStopEarly
\fi
\Hy@stoppedearlyfalse
\def\Hy@CounterExists#1{%
  \begingroup\expandafter\expandafter\expandafter\endgroup
  \expandafter\ifx\csname c@#1\endcsname\relax
    \expandafter\@gobble
  \else
    \begingroup\expandafter\expandafter\expandafter\endgroup
    \expandafter\ifx\csname the#1\endcsname\relax
      \expandafter\expandafter\expandafter\@gobble
    \else
      \expandafter\expandafter\expandafter\@firstofone
    \fi
  \fi
}
\IfFormatAtLeastTF{2024-11-01}{}
 {
    \Hy@CounterExists{section}{%
      \providecommand\theHequation{\theHsection.\arabic{equation}}%
    }
    \providecommand\theHequation{\arabic{equation}}%
    \Hy@CounterExists{part}{%
      \providecommand\theHpart{\arabic{part}}%
    }
    \@ifundefined{thechapter}{%
      \providecommand\theHsection    {\arabic{section}}%
      \providecommand\theHfigure     {\arabic{figure}}%
      \providecommand\theHtable      {\arabic{table}}%
    }{%
      \providecommand\theHchapter    {\arabic{chapter}}%
      \providecommand\theHfigure     {\theHchapter.\arabic{figure}}%
      \providecommand\theHtable      {\theHchapter.\arabic{table}}%
      \providecommand\theHsection    {\theHchapter.\arabic{section}}%
    }
    \providecommand\theHsubsection   {\theHsection.\arabic{subsection}}
    \providecommand\theHsubsubsection{\theHsubsection.\arabic{subsubsection}}
    \providecommand\theHparagraph    {\theHsubsubsection.\arabic{paragraph}}
    \providecommand\theHsubparagraph {\theHparagraph.\arabic{subparagraph}}
    \providecommand\theHtheorem      {\theHsection.\arabic{theorem}}
    \providecommand\theHthm          {\theHsection.\arabic{thm}}
  }
\let\H@item\item
\newcounter{Item}
\IfFormatAtLeastTF{2024-11-01}{}
 {\def\theHItem{\arabic{Item}}}
\def\item{%
  \@hyper@itemfalse
  \if@nmbrlist\@hyper@itemtrue\fi
  \H@item
}
\IfFormatAtLeastTF{2024-11-01}{}
 {
   \providecommand\theHenumi     {\theHItem}
   \providecommand\theHenumii    {\theHItem}
   \providecommand\theHenumiii   {\theHItem}
   \providecommand\theHenumiv    {\theHItem}
   \providecommand\theHHfootnote {\arabic{Hfootnote}}
   \providecommand\theHmpfootnote{\arabic{mpfootnote}}
 }
\let\H@refstepcounter\@kernel@refstepcounter
\edef\name@of@eq{equation}%
\newif\if@hyper@item
\newif\if@skiphyperref
\@hyper@itemfalse
\@skiphyperreffalse
\ExplSyntaxOn
\IfFormatAtLeastTF{2024-11-01}
 {
  \NewSocketPlug{refstepcounter}{hyperref}{\ifHy@pdfstring\else#1\fi}
  \AssignSocketPlug{refstepcounter}{hyperref}
  \AddToHook{package/cleveref/after}
   {
     \@ifpackagelater{cleveref}{2018/03/28}{}
      {
      \NewSocketPlug{refstepcounter}{hyperref/fixcleveref}
       {\ifHy@pdfstring\else
         #1%
         {\firstaid@cref@updatelabeldata{\@currentcounter}}%
        \fi}
       \AssignSocketPlug{refstepcounter}{hyperref/fixcleveref}
      }
   }
  \NewSocketPlug{refstepcounter/target}{hyperref}
    {
      \bool_lazy_and:nnT
      { \l__hyp_target_create_bool }
      { ! \legacy_if_p:n{@skiphyperref} }
      {
        \legacy_if:nTF {@hyper@item}
          {
            \stepcounter{Item}%
            \hyper@refstepcounter{Item}%
            \@hyper@itemfalse
          }
          {
            \hyper@refstepcounter{\@currentcounter}%
          }
       }
     }
    \AssignSocketPlug{refstepcounter/target}{hyperref}
  }
  {
    \def\refstepcounter#1{%
      \legacy_if:nF {Hy@pdfstring}
       {
        \H@refstepcounter{#1}%
        \bool_lazy_and:nnT
          { \l__hyp_target_create_bool }
          { ! \legacy_if_p:n{@skiphyperref} }
          {
            \legacy_if:nTF {@hyper@item}
              {
                \stepcounter{Item}%
                \hyper@refstepcounter{Item}%
                \@hyper@itemfalse
              }
              {
                \hyper@refstepcounter{#1}%
              }
          }
       }
     }
  }
\ExplSyntaxOff
\let\Hy@saved@refstepcounter\refstepcounter
\newif\ifmeasuring@\measuring@false
\newcommand\Hy@ifnotmeasuring[1]{#1}
\AddToHook{package/amsmath/after}
 {
   \renewcommand\Hy@ifnotmeasuring[1]
    {\ifmeasuring@ \else #1\fi}
 }
\def\hyper@refstepcounter#1{%
  \HyCnt@ProvideTheHCounter{#1}%
  \hyper@makecurrent{#1}%
  \Hy@ifnotmeasuring
   {\Hy@raisedlink{%
      \hyper@anchorstart{\@currentHref}\hyper@anchorend
    }}%
}
\def\HyCnt@ProvideTheHCounter#1{%
  \@ifundefined{theH#1}{%
    \expandafter\def\csname theH#1\endcsname{}%
    \def\Hy@temp{\@elt{#1}}%
    \@onelevel@sanitize\Hy@temp
    \let\HyOrg@elt\@elt
    \edef\@elt{%
      \noexpand\HyCnt@LookForParentCounter
      \expandafter\noexpand\csname theH#1\endcsname
    }%
    \cl@@ckpt
    \let\@elt\HyOrg@elt
    \expandafter
    \Hy@LocalAppendToMacro\csname theH#1\expandafter\endcsname
    \expandafter{%
      \expandafter\@arabic\csname c@#1\endcsname
    }%
  }{}%
}
\def\HyCnt@LookForParentCounter#1#2{%
  \expandafter\let\expandafter\Hy@temp@A\csname cl@#2\endcsname
  \@ifundefined{cl@#2}{%
  }{%
    \@onelevel@sanitize\Hy@temp@A
    \edef\Hy@temp@A{%
      \noexpand\in@{\Hy@temp}{\Hy@temp@A}%
    }\Hy@temp@A
    \ifin@
      \@ifundefined{theH#2}{%
        \expandafter\Hy@LocalAppendToMacro\expandafter#1%
        \expandafter{%
          \expandafter\@arabic\csname c@#2\endcsname.%
        }%
      }{%
        \expandafter\Hy@LocalAppendToMacro\expandafter#1%
        \expandafter{%
          \csname theH#2\endcsname.%
        }%
      }%
    \fi
  }%
}
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname chapter\endcsname\relax
  \def\Hy@chapterstring{section}%
\else
  \def\Hy@chapterstring{chapter}%
\fi
\def\Hy@appendixstring{appendix}
\def\Hy@chapapp{\Hy@chapterstring}
\@ifundefined{appendix}{%
}{%
  \let\HyOrg@appendix\appendix
  \def\Hy@AlphNoErr#1{%
    \ifnum\value{#1}>26 %
      Alph\number\value{#1}%
    \else
      \ifnum\value{#1}<1 %
        Alph\number\value{#1}%
      \else
        \Alph{#1}%
      \fi
    \fi
  }%
  \def\appendix{%
    \@ifundefined{chapter}{%
      \gdef\theHsection{\Hy@AlphNoErr{section}}%
    }{%
      \gdef\theHchapter{\Hy@AlphNoErr{chapter}}%
    }%
    \xdef\Hy@chapapp{\Hy@appendixstring}%
    \HyOrg@appendix
  }%
}
\def\Hy@Test@alph#1{%
  \ifcase#1\or
    a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or
    k\or l\or m\or n\or o\or p\or q\or r\or s\or t\or
    u\or v\or w\or x\or y\or z%
  \else
    \@ctrerr
  \fi
}
\def\Hy@Test@Alph#1{%
  \ifcase#1\or
    A\or B\or C\or D\or E\or F\or G\or H\or I\or J\or
    K\or L\or M\or N\or O\or P\or Q\or R\or S\or T\or
    U\or V\or W\or X\or Y\or Z%
  \else
    \@ctrerr
  \fi
}
\NewHook{__hyp/target/setname }
\define@key{Hyp}{next-anchor}{%
    \AddToHookNext{__hyp/target/setname}%
       {\Hy@MakeCurrentHref{#1}}%
   }
\def\hyper@makecurrent#1{%
  \begingroup
    \Hy@safe@activestrue
    \edef\Hy@param{#1}%
    \ifx\Hy@param\Hy@chapterstring
      \let\Hy@param\Hy@chapapp
    \fi
    \ifHy@hypertexnames
      \let\@number\@firstofone
      \def\@fnsymbol##1{fnsymbol\number##1}%
      \def\@arabic##1{\number##1}%
      \ifx\@alph\Hy@Test@alph
      \else
        \def\@alph{alph\number}%
      \fi
      \ifx\@Alph\Hy@Test@Alph
      \else
        \def\@Alph{Alph\number}%
      \fi
      \ifHy@naturalnames
        \let\textlatin\@firstofone
        \xdef\HyperGlobalCurrentHref{\csname the#1\endcsname}%
      \else
        \xdef\HyperGlobalCurrentHref{%
          \csname
            the%
            \expandafter\ifx\csname theH#1\endcsname\relax\else H\fi
            #1%
          \endcsname
        }%
      \fi
      \xdef\HyperGlobalCurrentHref{%
        \Hy@param.\expandafter\strip@prefix\meaning\HyperGlobalCurrentHref
      }%
    \else
      \Hy@GlobalStepCount\Hy@linkcounter
      \xdef\HyperGlobalCurrentHref{\Hy@param.\the\Hy@linkcounter}%
    \fi
  \endgroup
  \let\HyperLocalCurrentHref\HyperGlobalCurrentHref
  \ifHy@localanchorname
    \let\@currentHref\HyperLocalCurrentHref
  \else
    \global\let\@currentHref\HyperGlobalCurrentHref
  \fi
  \UseHook{__hyp/target/setname}%
}
\def\Hy@MakeCurrentHref#1{%
  \edef\HyperLocalCurrentHref{#1}%
  \@onelevel@sanitize\HyperLocalCurrentHref
  \global\let\HyperGlobalCurrentHref\HyperLocalCurrentHref
  \let\HyperLocalCurrentHref\HyperGlobalCurrentHref
  \ifHy@localanchorname
    \let\@currentHref\HyperLocalCurrentHref
  \else
    \global\let\@currentHref\HyperGlobalCurrentHref
  \fi
}
   \def\Hy@MakeCurrentHrefAuto#1{%
   \Hy@GlobalStepCount\Hy@linkcounter
   \Hy@MakeCurrentHref{#1.\the\Hy@linkcounter}%
   \UseHook{__hyp/target/setname}}
\def\@currentHlabel{\@currentHref}
\def\hypergetref#1{\getrefbykeydefault{#1}{}{??}}
\def\hypergetpageref#1{\getrefbykeydefault{#1}{page}{0}}
\@ifl@t@r\fmtversion{2023-11-01}
 {
   \AddToHook{package/varwidth/after}
    {
      \NewSocketPlug{hyp/raisedlink}{varwidth}{\@vwid@wrap{#1}}
      \appto\@vwid@setup{\AssignSocketPlug{hyp/raisedlink}{varwidth}}
    }
 }{}
\@ifpackageloaded{titlesec}{%
  \def\ttl@Hy@steplink#1{%
    \Hy@MakeCurrentHrefAuto{#1*}%
    \edef\ttl@Hy@saveanchor{%
      \noexpand\Hy@raisedlink{%
        \noexpand\hyper@anchorstart{\@currentHref}%
        \noexpand\hyper@anchorend
        \def\noexpand\ttl@Hy@SavedCurrentHref{\@currentHref}%
        \noexpand\ttl@Hy@PatchSaveWrite
      }%
    }%
  }%
  \def\ttl@Hy@PatchSaveWrite{%
    \begingroup
      \toks@\expandafter{\ttl@savewrite}%
      \edef\x{\endgroup
        \def\noexpand\ttl@savewrite{%
          \let\noexpand\@currentHref
              \noexpand\ttl@Hy@SavedCurrentHref
          \the\toks@
        }%
      }%
    \x
  }%
  \def\ttl@Hy@refstepcounter#1{%
    \let\ttl@b\Hy@raisedlink
    \def\Hy@raisedlink##1{%
      \def\ttl@Hy@saveanchor{\Hy@raisedlink{##1}}%
    }%
    \refstepcounter{#1}%
    \let\Hy@raisedlink\ttl@b
  }%
}{}
\@ifpackageloaded{longtable}{%
\@ifundefined{hyper@nopatch@longtable}{%
  \begingroup
    \def\y{\LT@array}%
    \@ifundefined{scr@LT@array}{%
      \@ifundefined{adl@LT@array}{}{\def\y{\adl@LT@array}}%
    }{\def\y{\scr@LT@array}}%
    \long\def\x\refstepcounter#1#2\@sharp#3#4\@nil{%
      \expandafter\endgroup
      \expandafter\def\y[##1]##2{%
        \H@refstepcounter{#1}%
        \hyper@makecurrent{table}%
        \let\Hy@LT@currentHref\@currentHref
        #2\@sharp#####4%
      }%
    }%
  \expandafter\expandafter\expandafter\x\y[{#1}]{#2}\@nil
  \begingroup
    \def\x#1\ifvoid\LT@foot#2\fi#3\@nil{%
      \endgroup
      \def\LT@start{%
        #1%
        \ifvoid\LT@foot#2\fi
        \let\@currentHref\Hy@LT@currentHref
        \Hy@raisedlink{%
          \hyper@anchorstart{\@currentHref}\hyper@anchorend
        }%
        #3%
      }%
    }%
  \expandafter\x\LT@start\@nil
 }{}
}{}
\let\new@refstepcounter\refstepcounter
\let\H@equation\equation
\let\H@endequation\endequation
\@ifundefined{hyper@nopatch@mathenv}{%
  \@ifpackageloaded{amsmath}{}{%
    \def\equation{%
      \let\refstepcounter\H@refstepcounter
      \H@equation
      \hyper@makecurrent{equation}%
      \mathopen{%
        \Hy@raisedlink{\hyper@anchorstart{\@currentHref}}%
      }%
      \let\refstepcounter\new@refstepcounter
    }%
    \def\endequation{%
      \ifx\Hy@raisedlink\@empty
        \hyper@anchorend
      \else
        \mathclose{\Hy@raisedlink{\hyper@anchorend}}%
      \fi
      \H@endequation
    }%
  }
}{}
\newif\if@eqnstar
\@eqnstarfalse
\let\H@eqnarray\eqnarray
\let\H@endeqnarray\endeqnarray
\@ifundefined{hyper@nopatch@mathenv}{%
  \def\eqnarray{%
    \let\Hy@reserved@a\relax
    \def\@currentHref{}%
    \H@eqnarray
    \if@eqnstar
    \else
      \ifx\\\@currentHref\\%
      \else
        \hyper@makecurrent{equation}%
        \mathopen{%
          \Hy@raisedlink{%
            \hyper@anchorstart{\@currentHref}\hyper@anchorend
          }%
        }%
      \fi
    \fi
  }
  \def\endeqnarray{%
    \H@endeqnarray
  }
}{}
\@namedef{eqnarray*}{%
  \protected\def\@eqncr{\nonumber\@seqncr}\@eqnstartrue\eqnarray
}
\@namedef{endeqnarray*}{%
  \nonumber\endeqnarray\@eqnstarfalse
}
\@ifundefined{subeqnarray}{}{%
  \let\H@subeqnarray\subeqnarray
  \let\H@endsubeqnarray\endsubeqnarray
  \def\subeqnarray{%
    \let\Hy@reserved@a\relax
    \H@subeqnarray
    \hyper@makecurrent{equation}%
    \hyper@anchorstart{\@currentHref}{}\hyper@anchorend
  }%
  \def\endsubeqnarray{%
    \H@endsubeqnarray
  }%
  \providecommand\theHsubequation{\theHequation\alph{subequation}}%
}
\def\make@stripped@name#1{%
  \begingroup
    \escapechar\m@ne
    \global\let\newname\@empty
    \protected@edef\Hy@tempa{#1}%
    \edef\@tempb{%
      \noexpand\@tfor\noexpand\Hy@tempa:=%
        \expandafter\strip@prefix\meaning\Hy@tempa
    }%
    \@tempb\do{%
      \if{\Hy@tempa\else
        \if}\Hy@tempa\else
          \xdef\newname{\newname\Hy@tempa}%
        \fi
      \fi
    }%
  \endgroup
}
\AddToHook{cmd/subequations/before}
 {%
    \stepcounter{equation}%
    \protected@edef\theHparentequation{\theHequation}%
    \addtocounter{equation}{-1}%
 }

\AddToHook{cmd/subequations/after}
 {%
   \def\theHequation{\theHparentequation\alph{equation}}%
   \ignorespaces
 }
\newcommand\Hy@theorem@refstepcounter[1]
  {%
   \H@refstepcounter{#1}%
   \hyper@makecurrent{#1}%
   \global\let\Hy@dth@currentHref\@currentHref
   \Hy@theorem@makelinktarget{\Hy@dth@currentHref}%
  }
\newcommand\Hy@theorem@makelinktarget[1]
 {
   \AddToHookNext{cmd/item/before}
     {\AddToHookNext{para/begin}
       {\let\Hy@tempa\@currentHref
        \MakeLinkTarget*{#1}% \Hy@dth@currentHref
        \global\let\@currentHref\Hy@tempa
       }%
     }%
 }
\AddToHook{begindocument}
 {%
  \@ifundefined{deferred@thm@head}{}
   {%
    \let\Hy@deferred@thm@head\deferred@thm@head
    \def\deferred@thm@head#1{\Hy@deferred@thm@head{#1}}%
    \renewcommand\Hy@theorem@makelinktarget[1]
     {%
      \AddToHookNext{cmd/deferred@thm@head/before}
       {\AddToHookNext{para/begin}
         {\let\Hy@tempa\@currentHref
          \MakeLinkTarget*{#1}%
          \global\let\@currentHref\Hy@tempa
         }%
       }%
     }%
   }%
 }
\@ifundefined{hyper@nopatch@thm}{%
\AtBeginDocument{%
 \@ifpackageloaded{cleveref}
  {\AddToHook{cmd/@thm/before}{\ifhmode\unskip\fi}}
  {%
   \ifpatchable\@thm{\refstepcounter}
     {\patchcmd\@thm{\refstepcounter}{\Hy@theorem@refstepcounter}{}{}}
     {}%
  }}}{}
\@ifundefined{hyper@nopatch@footnote}{%
\ifHy@hyperfootnotes
  \@ifundefined{theHfootnote}
   {\newcounter{Hfootnote}}
   {\let\H@@theHfootnote\theHfootnote
    \let\theHfootnote\undefined
    \newcounter{Hfootnote}
    \let\theHfootnote\H@@theHfootnote
   }%
  \@ifundefined{theHHmpfootnote}{%
   \let\theHHmpfootnote\theHHfootnote
   }{}
  \let\H@@footnotetext\@footnotetext
  \let\H@@footnotemark\@footnotemark
  \def\@xfootnotenext[#1]{%
    \begingroup
      \csname c@\@mpfn\endcsname #1\relax
      \unrestored@protected@xdef\@thefnmark{\thempfn}%
    \endgroup
    \ifx\@footnotetext\@mpfootnotetext
      \expandafter\H@@mpfootnotetext
    \else
      \expandafter\H@@footnotetext
    \fi
  }%
  \def\@xfootnotemark[#1]{%
    \begingroup
      \c@footnote #1\relax
      \unrestored@protected@xdef\@thefnmark{\thefootnote}%
    \endgroup
    \H@@footnotemark
  }%
  \let\H@@mpfootnotetext\@mpfootnotetext
  \long\def\@mpfootnotetext#1{%
    \H@@mpfootnotetext{%
      \ifHy@nesting
        \expandafter\@firstoftwo
      \else
        \expandafter\@secondoftwo
      \fi
      {%
        \expandafter\hyper@@anchor\expandafter{%
          \Hy@footnote@currentHref
         }{\ignorespaces #1}%
      }{%
        \Hy@raisedlink{%
          \expandafter\hyper@@anchor\expandafter{%
            \Hy@footnote@currentHref
          }{\relax}%
        }\ignorespaces #1%
      }%
    }%
  }%
  \long\def\@footnotetext#1{%
    \H@@footnotetext{%
      \ifHy@nesting
        \expandafter\@firstoftwo
      \else
        \expandafter\@secondoftwo
      \fi
      {%
        \expandafter\hyper@@anchor\expandafter{%
          \Hy@footnote@currentHref
        }{\ignorespaces #1}%
      }{%
        \Hy@raisedlink{%
          \expandafter\hyper@@anchor\expandafter{%
            \Hy@footnote@currentHref
          }{\relax}%
        }%
        \let\@currentHref\Hy@footnote@currentHref
        \let\@currentlabelname\@empty
        \ignorespaces #1%
      }%
    }%
  }%
  \def\@footnotemark{%
    \leavevmode
    \ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi
    \stepcounter{Hfootnote}%
    \global\let\Hy@saved@currentHref\@currentHref
    \hyper@makecurrent{Hfootnote}%
    \global\let\Hy@footnote@currentHref\@currentHref
    \global\let\@currentHref\Hy@saved@currentHref
    \hyper@linkstart{link}{\Hy@footnote@currentHref}%
    \@makefnmark
    \hyper@linkend
    \ifhmode\spacefactor\@x@sf\fi
    \relax
  }%
  \@ifpackageloaded{tabularx}{%
    \let\HyOrg@TX@endtabularx\TX@endtabularx
    \def\Hy@tabularx@hook{%
      \let\@footnotetext\H@@footnotetext
      \let\@footnotemark\H@@footnotemark
      \let\@mpfootnotetext\H@@mpfootnotetext
    }%
    \begingroup
      \toks@\expandafter{\TX@endtabularx}%
      \xdef\Hy@gtemp{%
        \noexpand\Hy@tabularx@hook
        \the\toks@
      }%
    \endgroup
    \let\TX@endtabularx\Hy@gtemp
  }{}%
  \@ifpackageloaded{longtable}{%
    \CheckCommand{\LT@p@ftntext}[1]{%
      \edef\@tempa{%
        \the\LT@p@ftn
        \noexpand\footnotetext[\the\c@footnote]%
      }%
      \global\LT@p@ftn\expandafter{\@tempa{#1}}%
    }%
    \long\def\LT@p@ftntext#1{%
      \edef\@tempa{%
        \the\LT@p@ftn
        \begingroup
          \noexpand\c@footnote=\the\c@footnote\relax
          \noexpand\protected@xdef\noexpand\@thefnmark{%
            \noexpand\thempfn
          }%
          \noexpand\Hy@LT@footnotetext{%
            \Hy@footnote@currentHref
          }%
      }%
      \global\LT@p@ftn\expandafter{%
          \@tempa{#1}%
        \endgroup
      }%
    }%
    \long\def\Hy@LT@footnotetext#1#2{%
      \H@@footnotetext{%
        \ifHy@nesting
          \hyper@@anchor{#1}{#2}%
        \else
          \Hy@raisedlink{%
            \hyper@@anchor{#1}{\relax}%
          }%
          \def\@currentHref{#1}%
          \let\@currentlabelname\@empty
          #2%
        \fi
      }%
    }%
  }{}%
  \@ifpackageloaded{fancyvrb}{%
    \def\V@@footnotetext{%
      \insert\footins\bgroup
      \csname reset@font\endcsname
      \footnotesize
      \interlinepenalty\interfootnotelinepenalty
      \splittopskip\footnotesep
      \splitmaxdepth\dp\strutbox
      \floatingpenalty \@MM
      \hsize\columnwidth
      \@parboxrestore
      \def\@currentcounter{footnote}%
      \protected@edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}%
      \@makefntext{}%
      \rule{\z@}{\footnotesep}%
      \bgroup
      \aftergroup\V@@@footnotetext
      \Hy@raisedlink{%
        \expandafter\hyper@@anchor\expandafter{%
          \Hy@footnote@currentHref
        }{\relax}%
      }%
      \let\@currentHref\Hy@footnote@currentHref
      \let\@currentlabelname\@empty
      \ignorespaces
    }%
  }{}%
  \def\Hy@temp#1{%
    \begingroup
      \unrestored@protected@xdef\@thefnmark{\ref{#1}}%
    \endgroup
    \@footnotemark
  }%
  \ifx\Hy@temp\footref
    \def\footref#1{%
    \begingroup
      \unrestored@protected@xdef\@thefnmark{\ref{#1}}%
    \endgroup
    \H@@footnotemark
    }%
  \fi
  \let\HyOrg@maketitle\maketitle
  \def\maketitle{%
    \let\Hy@saved@footnotemark\@footnotemark
    \let\Hy@saved@footnotetext\@footnotetext
    \let\@footnotemark\H@@footnotemark
    \let\@footnotetext\H@@footnotetext
    \@ifnextchar[\Hy@maketitle@optarg{% ]
      \HyOrg@maketitle
      \Hy@maketitle@end
    }%
  }%
  \def\Hy@maketitle@optarg[#1]{%
    \HyOrg@maketitle[{#1}]%
    \Hy@maketitle@end
  }%
  \def\Hy@maketitle@end{%
    \ifx\@footnotemark\H@@footnotemark
      \let\@footnotemark\Hy@saved@footnotemark
    \fi
    \ifx\@footnotetext\H@@footnotetext
      \let\@footnotetext\Hy@saved@footnotetext
    \fi
  }%
  \def\realfootnote{%
    \@ifnextchar[\@xfootnote%]
     {\stepcounter{\@mpfn}%
      \protected@xdef\@thefnmark{\thempfn}%
      \H@@footnotemark\H@@footnotetext
    }%
  }%
\fi
}{}
\Hy@DisableOption{hyperfootnotes}
\@ifundefined{hyper@nopatch@caption}{%
\def\caption{%
  \ifx\@captype\@undefined
    \@latex@error{\noexpand\caption outside float}\@ehd
    \expandafter\@gobble
  \else
    \H@refstepcounter\@captype
    \let\Hy@tempa\@caption
    \@ifundefined{float@caption}{%
    }{%
      \expandafter\ifx\csname @float@c@\@captype\endcsname
                      \float@caption
        \let\Hy@tempa\Hy@float@caption
      \fi
    }%
    \expandafter\@firstofone
  \fi
  {\@dblarg{\Hy@tempa\@captype}}%
}
\long\def\@caption#1[#2]#3{%
  \expandafter\ifx\csname if@capstart\expandafter\endcsname
                  \csname iftrue\endcsname
    \global\let\@currentHref\hc@currentHref
  \else
    \hyper@makecurrent{\@captype}%
  \fi
  \@ifundefined{NR@gettitle}{%
    \def\@currentlabelname{#2}%
  }{%
    \NR@gettitle{#2}%
  }%
  \par\addcontentsline{\csname ext@#1\endcsname}{#1}{%
    \protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}%
  }%
  \begingroup
    \@parboxrestore
    \if@minipage
      \@setminipage
    \fi
    \normalsize
    \expandafter\ifx\csname if@capstart\expandafter\endcsname
                    \csname iftrue\endcsname
      \global\@capstartfalse
      \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces#3}%
    \else
      \@makecaption{\csname fnum@#1\endcsname}{%
        \ignorespaces
        \ifHy@nesting
          \expandafter\hyper@@anchor\expandafter{\@currentHref}{#3}%
        \else
          \Hy@raisedlink{%
            \expandafter\hyper@@anchor\expandafter{%
              \@currentHref
            }{\relax}%
          }%
          #3%
        \fi
        \IfFormatAtLeastTF{2024-11-01}{\UseTaggingSocket{recordtarget}}{}%
      }%
    \fi
    \par
  \endgroup
}}{}%end no patch
\let\Hy@float@caption\@caption
\newcommand{\HyNew@float@makebox}[1]{%
  \HyOrg@float@makebox{%
    #1\relax
    \ifx\Hy@float@currentHref\@undefined
    \else
      \expandafter\hyper@@anchor\expandafter{%
        \Hy@float@currentHref
      }{\relax}%
      \global\let\Hy@float@currentHref\@undefined
    \fi
  }%
}%
\@ifpackageloaded{float}{%
  \def\Hy@float@caption{%
    \ifx\Hy@float@currentHref\@undefined
      \hyper@makecurrent{\@captype}%
      \global\let\Hy@float@currentHref\@currentHref
    \else
      \let\@currentHref\Hy@float@currentHref
    \fi
    \float@caption
  }%
  \let\HyOrg@float@makebox\float@makebox
  \let\float@makebox\HyNew@float@makebox
}{}
\def\hyper@natlinkstart#1{%
  \Hy@backout{#1}%
  \hyper@linkstart{cite}{cite.#1}%
  \def\hyper@nat@current{#1}%
}
\def\hyper@natlinkend{%
  \hyper@linkend
}
\def\hyper@natlinkbreak#1#2{%
  \hyper@linkend#1\hyper@linkstart{cite}{cite.#2}%
}
\def\hyper@natanchorstart#1{%
  \Hy@raisedlink{\hyper@anchorstart{cite.#1}}%
}
\def\hyper@natanchorend{\hyper@anchorend}
\@ifundefined{hyper@nopatch@bib}
 {%
   \@ifundefined{NAT@parse}{%
     \providecommand*\@extra@binfo{}%
     \providecommand*\@extra@b@citeb{}%
     \def\bibcite#1#2{%
       \@newl@bel{b}{#1\@extra@binfo}{%
         \hyper@@link[cite]{}{cite.#1\@extra@b@citeb}{#2}%
       }%
     }%
     \gdef\@extra@binfo{}%
     \let\Hy@bibcite\bibcite
     \begingroup
       \@ifundefined{bbl@cite@choice}{}{%
         \g@addto@macro\bbl@cite@choice{%
           \let\bibcite\Hy@bibcite
         }%
       }%
     \endgroup
     \providecommand*{\@BIBLABEL}{\@biblabel}%
     \def\@lbibitem[#1]#2{%
       \@skiphyperreftrue
       \H@item[%
         \ifx\Hy@raisedlink\@empty
           \hyper@anchorstart{cite.#2\@extra@b@citeb}%
             \@BIBLABEL{#1}%
           \hyper@anchorend
         \else
           \Hy@raisedlink{%
             \hyper@anchorstart{cite.#2\@extra@b@citeb}\hyper@anchorend
           }%
           \@BIBLABEL{#1}%
         \fi
         \hfill
       ]%
       \@skiphyperreffalse
       \if@filesw
         \begingroup
           \let\protect\noexpand
           \immediate\write\@auxout{%
             \string\bibcite{#2}{#1}%
           }%
         \endgroup
       \fi
       \ignorespaces
     }%
     \def\@bibitem#1{%
       \@skiphyperreftrue\H@item\@skiphyperreffalse
       \Hy@raisedlink{%
         \hyper@anchorstart{cite.#1\@extra@b@citeb}\relax\hyper@anchorend
       }%
       \if@filesw
         \begingroup
           \let\protect\noexpand
           \immediate\write\@auxout{%
             \string\bibcite{#1}{\the\value{\@listctr}}%
           }%
         \endgroup
       \fi
       \ignorespaces
     }%
  }{}%
}{}
\@ifpackageloaded{harvard}{%
  \Hy@AtBeginDocument{%
    \Hy@Info{*** compatibility with harvard **** }%
    \Hy@raiselinksfalse
    \def\harvardcite#1#2#3#4{%
      \global\@namedef{HAR@fn@#1}{\hyper@@link[cite]{}{cite.#1}{#2}}%
      \global\@namedef{HAR@an@#1}{\hyper@@link[cite]{}{cite.#1}{#3}}%
      \global\@namedef{HAR@yr@#1}{\hyper@@link[cite]{}{cite.#1}{#4}}%
      \global\@namedef{HAR@df@#1}{\csname HAR@fn@#1\endcsname}%
    }%
    \def\HAR@citetoaux#1{%
      \if@filesw\immediate\write\@auxout{\string\citation{#1}}\fi%
      \ifHy@backref
        \ifx\@empty\@currentlabel
        \else
          \@bsphack
          \if@filesw
            \protected@write\@auxout{}{%
              \string\@writefile{brf}{%
                \string\backcite{#1}{%
                  {\thepage}{\@currentlabel}{\@currentHref}%
                }%
              }%
            }%
          \fi
          \@esphack
        \fi
      \fi
    }%
    \def\harvarditem{%
      \@ifnextchar[{\@harvarditem}{\@harvarditem[\null]}%
    }%
    \def\@harvarditem[#1]#2#3#4#5\par{%
      \item[]%
      \hyper@anchorstart{cite.#4}\relax\hyper@anchorend
      \if@filesw
        \begingroup
          \def\protect##1{\string ##1\space}%
          \ifthenelse{\equal{#1}{\null}}%
            {\def\next{{#4}{#2}{#2}{#3}}}%
            {\def\next{{#4}{#2}{#1}{#3}}}%
          \immediate\write\@auxout{\string\harvardcite\codeof\next}%
       \endgroup
      \fi
      \protect\hspace*{-\labelwidth}%
      \protect\hspace*{-\labelsep}%
      \ignorespaces
      #5%
      \ifHy@backref
        \newblock
        \backref{\csname br@#4\endcsname}%
      \fi
      \par
    }%
    \long\def\HAR@checkcitations#1#2#3#4{%
      \def\HAR@tempa{\hyper@@link[cite]{}{cite.#1}{#2}}%
      \expandafter\ifx\csname HAR@fn@#1\endcsname\HAR@tempa
        \def\HAR@tempa{\hyper@@link[cite]{}{cite.#1}{#3}}%
        \expandafter\ifx\csname HAR@an@#1\endcsname\HAR@tempa
          \def\HAR@tempa{\hyper@@link[cite]{}{cite.#1}{#4}}%
          \expandafter\ifx\csname HAR@yr@#1\endcsname\HAR@tempa
          \else
            \@tempswatrue
          \fi
        \else
          \@tempswatrue
        \fi
      \else
        \@tempswatrue
      \fi
    }%
  }%
}{}
\@ifpackageloaded{chicago}{%
  \def\citeN{%
    \def\@citeseppen{-1000}%
    \def\@cite##1##2{##1}%
    \def\citeauthoryear##1##2##3{##1 (##3\@cite@opt)}%
    \@citedata@opt
  }%
  \def\shortciteN{%
    \def\@citeseppen{-1000}%
    \def\@cite##1##2{##1}%
    \def\citeauthoryear##1##2##3{##2 (##3\@cite@opt)}%
    \@citedata@opt
  }%
  \def\@citedata@opt{%
    \let\@cite@opt\@empty
    \@ifnextchar [{%
      \@tempswatrue
      \@citedatax@opt
    }{%
      \@tempswafalse
      \@citedatax[]%
    }%
  }%
  \def\@citedatax@opt[#1]{%
    \def\@cite@opt{, #1}%
    \@citedatax[{#1}]%
  }%
}{}
\def\@currentHpage{Doc-Start}
\@ifclassloaded{slides}{%
  \def\Hy@SlidesFormatOptionalPage#1{(#1)}%
  \def\Hy@PageAnchorSlidesPlain{%
    \advance\c@page\@ne
    \xdef\@currentHpage{page.\the\c@slide.\the\c@overlay.\the\c@note%
        \ifnum\c@page=\@ne
        \else
          .\the\c@page
        \fi}%
    \edef\Hy@TempPageAnchor{%
      \noexpand\hyper@@anchor{%
        \@currentHpage
      }%
    }%
    \advance\c@page-\@ne
  }%
  \def\Hy@PageAnchorSlide{%
    \advance\c@page\@ne
    \ifnum\c@page>\@ne
      \@ifundefined{theHpage}{%
        \protected@edef\Hy@TheSlideOptionalPage{%
          \Hy@SlidesFormatOptionalPage{\thepage}%
        }%
      }{%
        \protected@edef\Hy@TheSlideOptionalPage{%
          \Hy@SlidesFormatOptionalPage{\theHpage}%
        }%
      }%
    \else
      \def\Hy@TheSlideOptionalPage{}%
    \fi
    \advance\c@page-\@ne
    \pdfstringdef\@the@H@page{%
      \csname
        the%
        \@ifundefined{theH\Hy@SlidesPage}{}{H}%
        \Hy@SlidesPage
      \endcsname
      \Hy@TheSlideOptionalPage
    }%
    \@gobblethree
  }%
  \def\Hy@SlidesPage{slide}%
  \g@addto@macro\slide{%
    \def\Hy@SlidesPage{slide}%
  }%
  \g@addto@macro\overlay{%
    \def\Hy@SlidesPage{overlay}%
  }%
  \g@addto@macro\note{%
    \def\Hy@SlidesPage{note}%
  }%
}{%
  \def\Hy@PageAnchorSlidesPlain{}%
  \def\Hy@PageAnchorSlide{}%
}
\def\Hy@EveryPageAnchor{%
  \Hy@DistillerDestFix
  \ifHy@pageanchor
    \ifHy@hypertexnames
      \ifHy@plainpages
        \def\Hy@TempPageAnchor{\hyper@@anchor{page.\the\c@page}}%
        \xdef\@currentHpage{page.\the\c@page}%
        \Hy@PageAnchorSlidesPlain
      \else
        \begingroup
          \let\@number\@firstofone
          \Hy@unicodefalse
          \Hy@PageAnchorSlide
          \pdfstringdef\@the@H@page{\thepage}%
        \endgroup
        \EdefUnescapeString\@the@H@page{\@the@H@page}%
        \def\Hy@TempPageAnchor{\hyper@@anchor{page.\@the@H@page}}%
        \xdef\@currentHpage{page.\@the@H@page}%
      \fi
    \else
      \Hy@GlobalStepCount\Hy@pagecounter
      \def\Hy@TempPageAnchor{%
        \hyper@@anchor{page.\the\Hy@pagecounter}%
      }%
      \xdef\@currentHpage{page.\the\Hy@pagecounter}%
    \fi
    \vbox to 0pt{%
      \kern\voffset
      \kern\topmargin
      \kern-1bp\relax
      \hbox to 0pt{%
        \kern\hoffset
        \kern\ifodd\value{page}%
               \oddsidemargin
             \else
               \evensidemargin
             \fi
        \kern-1bp\relax
        \Hy@TempPageAnchor\relax
        \hss
      }%
      \vss
    }%
  \fi
}
\g@addto@macro\Hy@EveryPageBoxHook{%
  \Hy@EveryPageAnchor
}
\providecommand\protected@file@percent{}
\@ifundefined{hyper@nopatch@toc}{%
  \def\addcontentsline#1#2#3{% toc extension, type, tag
    \begingroup
      \let\label\@gobble
      \ifx\@currentHref\@empty
        \Hy@Warning{%
          No destination for bookmark of \string\addcontentsline,%
          \MessageBreak destination is added%
        }%
        \phantomsection
      \fi
      \expandafter\ifx\csname toclevel@#2\endcsname\relax
        \begingroup
          \def\Hy@tempa{#1}%
          \ifx\Hy@tempa\Hy@bookmarkstype
            \Hy@WarningNoLine{%
              bookmark level for unknown #2 defaults to 0%
            }%
          \else
            \Hy@Info{bookmark level for unknown #2 defaults to 0}%
          \fi
        \endgroup
        \expandafter\gdef\csname toclevel@#2\endcsname{0}%
      \fi
      \edef\Hy@toclevel{\csname toclevel@#2\endcsname}%
      \Hy@writebookmark{\csname the#2\endcsname}%
        {#3}%
        {\@currentHref}%
        {\Hy@toclevel}%
        {#1}%
      \ifHy@verbose
        \begingroup
          \def\Hy@tempa{#3}%
          \@onelevel@sanitize\Hy@tempa
          \let\temp@online\on@line
          \let\on@line\@empty
          \Hy@Info{%
            bookmark\temp@online:\MessageBreak
            thecounter {\csname the#2\endcsname}\MessageBreak
            text {\Hy@tempa}\MessageBreak
            reference {\@currentHref}\MessageBreak
            toclevel {\Hy@toclevel}\MessageBreak
            type {#1}%
          }%
        \endgroup
      \fi
      \addtocontents{#1}{%
        \protect\contentsline{#2}{#3}{\thepage}{\@currentHref}\protected@file@percent
      }%
    \endgroup
  }
}{}
\protected\def\Hy@toclinkstart{\hyper@linkstart{link}{\Hy@tocdestname}}
\protected\def\Hy@toclinkend{\hyper@linkend}

\@ifundefined{hyper@nopatch@toc}{%
  \def\contentsline#1#2#3#4{%
    \begingroup
      \Hy@safe@activestrue
    \edef\x{\endgroup
      \def\noexpand\Hy@tocdestname{#4}%
    }\x
    \ifx\Hy@tocdestname\@empty
      \csname l@#1\endcsname{#2}{#3}%
    \else
      \ifcase\Hy@linktoc % none
        \csname l@#1\endcsname{#2}{#3}%
      \or % section
        \csname l@#1\endcsname{%
          \Hy@toclinkstart{#2}\Hy@toclinkend
        }{#3}%
      \or % page
        \def\Hy@temp{#3}%
        \ifx\Hy@temp\@empty
          \csname l@#1\endcsname{#2}{#3}%
        \else
          \csname l@#1\endcsname{{#2}}{%
            \Hy@toclinkstart{#3}\Hy@toclinkend
          }%
        \fi
      \else % all
        \def\Hy@temp{#3}%
        \ifx\Hy@temp\@empty
          \csname l@#1\endcsname{%
            \Hy@toclinkstart{#2}\Hy@toclinkend
          }{}%
        \else
          \csname l@#1\endcsname{%
            \Hy@toclinkstart{#2}\Hy@toclinkend
          }{%
            \Hy@toclinkstart{#3}\Hy@toclinkend
          }%
        \fi
      \fi
    \fi
  }
}{}
\IfFormatAtLeastTF{2024-11-01}{\def\hyper@nopatch@counter{}}{}
\@ifundefined{hyper@nopatch@counter}
  {
   \let\H@definecounter\@definecounter
   \def\@definecounter#1{%
     \H@definecounter{#1}%
     \expandafter
     \gdef\csname theH#1\expandafter\endcsname\expandafter
          {\expandafter\@arabic\csname c@#1\endcsname}}%
  }{}
\@ifundefined{hyper@nopatch@counter}
  {
    \let\H@newctr\@newctr
    \def\@newctr#1[#2]{%
      \H@newctr#1[{#2}]%
      \expandafter\gdef\csname theH#1\endcsname{%
        \csname the\@ifundefined{theH#2}{}{H}#2\endcsname.\arabic{#1}%
      }%
    }
   }{}
\@ifundefined{hyper@nopatch@amsmath@tag}
   {%
    \AddToHook{package/amsmath/after}{%
      \def\Hy@make@anchor{%
        \Hy@MakeCurrentHrefAuto{AMS}%
        \Hy@raisedlink{\hyper@anchorstart{\@currentHref}\hyper@anchorend}%
      }%
      \def\Hy@make@df@tag@@#1{%
        \gdef\df@tag{%
          \maketag@@@{\Hy@make@anchor#1}%
          \def\@currentlabel{#1}%
        }%
      }%
      \def\Hy@make@df@tag@@@#1{%
        \gdef\df@tag{%
          \tagform@{\Hy@make@anchor#1}%
          \toks@\@xp{\p@equation{#1}}%
          \edef\@currentlabel{\the\toks@}%
        }%
      }%
      \let\HyOrg@make@df@tag@@\make@df@tag@@
      \let\HyOrg@make@df@tag@@@\make@df@tag@@@
      \let\make@df@tag@@\Hy@make@df@tag@@
      \let\make@df@tag@@@\Hy@make@df@tag@@@
    }{}
  }{}
\def\HyOrg@addtoreset#1#2{\expandafter\@cons\csname cl@#2\endcsname {{#1}}}
\@ifundefined{hyper@nopatch@counter}
  {
   \let\HyOrg@addtoreset\@addtoreset
   \def\@addtoreset#1#2{%
     \HyOrg@addtoreset{#1}{#2}%
     \expandafter\xdef\csname theH#1\endcsname{%
       \expandafter\noexpand
           \csname the\@ifundefined{theH#2}{}H#2\endcsname
       .\noexpand\the\noexpand\value{#1}%
     }%
   }
  }{}
\@ifundefined{hyper@nopatch@counter}
  {
   \AddToHook{package/amsmath/after}{%
     \renewcommand*{\numberwithin}[3][\arabic]{%
       \@ifundefined{c@#2}{\@nocounterr{#2}}{%
         \@ifundefined{c@#3}{\@nocnterr{#3}}{%
           \HyOrg@addtoreset{#2}{#3}%
           \@xp\xdef\csname the#2\endcsname{%
             \@xp\@nx\csname the#3\endcsname .\@nx#1{#2}%
           }%
           \@xp\xdef\csname theH#2\endcsname{%
             \@xp\@nx
             \csname the\@ifundefined{theH#3}{}H#3\endcsname
             .\@nx#1{#2}%
           }%
         }%
       }%
     }%
   }{}
  }{}
\ifHy@hyperfigures
  \let\Hy@Gin@setfile\Gin@setfile
  \def\Gin@setfile#1#2#3{%
    \hyperimage{#3}{\Hy@Gin@setfile{#1}{#2}{#3}}%
  }%
\fi
\Hy@DisableOption{hyperfigures}
\ifHy@hyperindex
  \def\HyInd@ParenLeft{(}%
  \def\HyInd@ParenRight{)}%
  \def\hyperindexformat#1#2{%
    \let\HyOrg@hyperpage\hyperpage
    \let\hyperpage\@firstofone
    #1{\HyOrg@hyperpage{#2}}%
    \let\hyperpage\HyOrg@hyperpage
  }%
  \Hy@nextfalse
  \@ifpackageloaded{multind}{\Hy@nexttrue}{}%
  \@ifpackageloaded{index}{\Hy@nexttrue}{}%
  \@ifpackageloaded{amsmidx}{\Hy@nexttrue}{}%
  \begingroup
    \lccode`\|=\expandafter`\HyInd@EncapChar\relax
    \lccode`\/=`\\\relax
  \lowercase{\endgroup
    \ifHy@next
      \let\HyInd@org@wrindex\@wrindex
      \def\@wrindex#1#2{\HyInd@@wrindex{#1}#2||\\}%
      \def\HyInd@@wrindex#1#2|#3|#4\\{%
        \ifx\\#3\\%
          \HyInd@org@wrindex{#1}{#2|hyperpage}%
        \else
          \HyInd@@@wrindex{#1}{#2}#3\\%
        \fi
      }%
      \def\HyInd@@@wrindex#1#2#3#4\\{%
        \def\Hy@temp@A{#3}%
        \ifcase0\ifx\Hy@temp@A\HyInd@ParenLeft 1\fi
                \ifx\Hy@temp@A\HyInd@ParenRight 1\fi
                \relax
          \HyInd@org@wrindex{#1}{%
            #2|hyperindexformat{/#3#4}%
          }%
        \else
          \ifx\\#4\\%
            \ifx\Hy@temp@A\HyInd@ParenRight
              \HyInd@org@wrindex{#1}{#2|#3}%
            \else
              \HyInd@org@wrindex{#1}{#2|#3hyperpage}%
            \fi
          \else
            \HyInd@org@wrindex{#1}{%
              #2|#3hyperindexformat{/#4}%
            }%
          \fi
        \fi
      }%
    \else
      \def\@wrindex#1{\@@wrindex#1||\\}%
      \def\@@wrindex#1|#2|#3\\{%
        \if@filesw
          \ifx\\#2\\%
            \protected@write\@indexfile{}{%
              \string\indexentry{#1|hyperpage}{\thepage}%
            }%
          \else
            \HyInd@@@wrindex{#1}#2\\%
          \fi
        \fi
        \endgroup
        \@esphack
      }%
      \def\HyInd@@@wrindex#1#2#3\\{%
        \def\Hy@temp@A{#2}%
        \ifcase0\ifx\Hy@temp@A\HyInd@ParenLeft 1\fi
                \ifx\Hy@temp@A\HyInd@ParenRight 1\fi
                \relax
          \protected@write\@indexfile{}{%
            \string\indexentry{%
              #1|hyperindexformat{/#2#3}%
            }{\thepage}%
          }%
        \else
          \ifx\\#3\\%
            \ifx\Hy@temp@A\HyInd@ParenRight
              \HyInd@DefKey{#1}%
              \@ifundefined{HyInd@(\HyInd@key)}{%
                \let\Hy@temp\@empty
              }{%
                \expandafter\let\expandafter\Hy@temp
                \csname HyInd@(\HyInd@key)\endcsname
              }%
              \protected@write\@indexfile{}{%
                 \string\indexentry{#1|#2\Hy@temp}{\thepage}%
              }%
            \else
              \protected@write\@indexfile{}{%
                 \string\indexentry{#1|#2hyperpage}{\thepage}%
              }%
              \HyInd@DefKey{#1}%
              \expandafter
              \gdef\csname HyInd@(\HyInd@key)\endcsname{%
                hyperpage%
              }%
            \fi
          \else
            \protected@write\@indexfile{}{%
               \string\indexentry{%
                 #1|#2hyperindexformat{/#3}%
               }{\thepage}%
            }%
            \ifx\Hy@temp@A\HyInd@ParenLeft
              \HyInd@DefKey{#1}%
              \expandafter
              \gdef\csname HyInd@(\HyInd@key)\endcsname{%
                hyperindexformat{/#3}%
              }%
            \fi
          \fi
        \fi
      }%
      \def\HyInd@DefKey#1{%
        \begingroup
          \let\protect\@unexpandable@protect
          \edef\Hy@temp{#1}%
          \@onelevel@sanitize\Hy@temp
          \global\let\HyInd@key\Hy@temp
        \endgroup
      }%
    \fi
  }%
\fi
\Hy@DisableOption{hyperindex}
\Hy@DisableOption{encap}
\def\nohyperpage#1{#1}
\def\hyperpage#1{%
  \HyInd@hyperpage#1\nohyperpage{}\@nil
}
\def\HyInd@hyperpage#1\nohyperpage#2#3\@nil{%
  \HyInd@@hyperpage{#1}%
  #2%
  \def\Hy@temp{#3}%
  \ifx\Hy@temp\@empty
  \else
    \Hy@ReturnAfterFi{%
      \HyInd@hyperpage#3\@nil
    }%
  \fi
}
\def\HyInd@@hyperpage#1{\@hyperpage#1----\\}
\def\@hyperpage#1--#2--#3\\{%
  \ifx\\#2\\%
    \@commahyperpage{#1}%
  \else
    \HyInd@pagelink{#1}--\HyInd@pagelink{#2}%
  \fi
}
\def\@commahyperpage#1{\@@commahyperpage#1, ,\\}
\def\@@commahyperpage#1, #2,#3\\{%
  \ifx\\#2\\%
    \HyInd@pagelink{#1}%
  \else
    \HyInd@pagelink{#1}, \HyInd@pagelink{#2}%
  \fi
}
\def\HyInd@pagelink#1{%
  \begingroup
    \toks@={}%
    \HyInd@removespaces#1 \@nil
  \endgroup
}
\def\HyInd@removespaces#1 #2\@nil{%
  \toks@=\expandafter{\the\toks@#1}%
  \ifx\\#2\\%
    \edef\x{\the\toks@}%
    \ifx\x\@empty
    \else
      \hyperlink{page.\the\toks@}{\the\toks@}%
    \fi
  \else
    \Hy@ReturnAfterFi{%
      \HyInd@removespaces#2\@nil
    }%
  \fi
}
\ifHy@texht
  \expandafter\endinput
\fi
\let\real@setref\@setref
\def\@setref#1#2#3{% csname, extract group, refname
  \ifx#1\relax
    \protect\G@refundefinedtrue
    \nfss@text{\reset@font\bfseries ??}%
    \@latex@warning{%
      Reference `#3' on page \thepage \space undefined%
    }%
  \else
    \expandafter\Hy@setref@link#1\@empty\@empty\@empty\@nil{#2}%
  \fi
}
\def\Hy@setref@link#1#2#3#4#5#6\@nil#7{%
  \begingroup
    \toks0={\hyper@@link{#5}{#4}}%
    \toks1=\expandafter{#7{#1}{#2}{#3}{#4}{#5}}%
    \edef\x{\endgroup
      \the\toks0 {\the\toks1 }%
    }%
  \x
}
\def\@pagesetref#1#2#3{% csname, extract macro, ref
  \ifx#1\relax
    \protect\G@refundefinedtrue
    \nfss@text{\reset@font\bfseries ??}%
    \@latex@warning{%
      Reference `#3' on page \thepage \space undefined%
    }%
  \else
    \protect\hyper@@link
      {\expandafter\@fifthoffive#1}%
      {page.\expandafter\@secondoffive#1}%
      {\expandafter\@secondoffive#1}%
  \fi
}
\def\HyRef@StarSetRef#1{%
  \begingroup
    \Hy@safe@activestrue
    \let\protect\@unexpandable@protect
    \edef\x{#1}%
    \@onelevel@sanitize\x
    \edef\x{\endgroup
      \noexpand\HyRef@@StarSetRef
        \expandafter\noexpand\csname r@\x\endcsname{\x}%
    }%
  \x
}
\def\HyRef@@StarSetRef#1#2#3{%
  \ifx#1\@undefined
    \let#1\relax
  \fi
  \real@setref#1#3{#2}%
}
\def\@refstar#1{%
  \HyRef@StarSetRef{#1}\@firstoffive
}
\def\@pagerefstar#1{%
  \HyRef@StarSetRef{#1}\@secondoffive
}
\def\@namerefstar#1{%
  \HyRef@StarSetRef{#1}\@thirdoffive
}
\def\@Refstar#1{%
  \HyRef@StarSetRef{#1}\HyRef@MakeUppercaseFirstOfFive
}%
\def\HyRef@MakeUppercaseFirstOfFive#1#2#3#4#5{%
  \MakeUppercase#1%
}%
\def\HyRef@Ref#1{%
  \hyperref[{#1}]{\Ref*{#1}}%
}%
\Hy@AtBeginDocument{%
  \@ifpackageloaded{varioref}{%
  \@ifundefined{hyper@nopatch@varioref}
   {
   \renewcommand\Vref@star[2][]{%
     \begingroup
       \let\T@pageref\@pagerefstar
       \Ref*{#2}
       \vpageref[#1]{#2}%
     \endgroup
   }%
   \renewcommand\Vr@f[2][]{%
     \begingroup
       \let\T@pageref\@pagerefstar
       \hyperref[{#2}]{%
         \Ref*{#2}
         \vpageref[#1]{#2}%
       }%
     \endgroup
   }%
    \renewcommand\vr@f[2][]{%
      \begingroup
        \let\T@pageref\@pagerefstar
        \hyperref[{#2}]{%
          \ref*{#2}
          \vpageref[#1]{#2}%
        }%
       \endgroup
    }%
    \renewcommand\vref@star[2][]{%
      \begingroup
        \let\T@pageref\@pagerefstar
        \ref*{#2}
        \vpageref[#1]{#2}%
       \endgroup
    }%
   }{}%
  }{}%
}
\DeclareRobustCommand*{\autopageref}{%
  \@ifstar{%
    \HyRef@autopagerefname\pageref*%
  }\HyRef@autopageref
}
\def\HyRef@autopageref#1{%
  \hyperref[{#1}]{\HyRef@autopagerefname\pageref*{#1}}%
}
\def\HyRef@autopagerefname{%
  \@ifundefined{pageautorefname}{%
    \@ifundefined{pagename}{%
      \Hy@Warning{No autoref name for `page'}%
    }{%
      \pagename\nobreakspace
    }%
  }{%
    \pageautorefname\nobreakspace
  }%
}
\NewDocumentCommand\autoref{s}
   {\leavevmode
    \IfBooleanTF{#1}{\HyRef@autoref\@gobbletwo}{\HyRef@autoref\hyper@@link}}
\def\HyRef@autoref#1#2{%
  \begingroup
    \Hy@safe@activestrue
    \expandafter\HyRef@autosetref\csname r@#2\endcsname{#2}{#1}%
  \endgroup
}
\def\HyRef@autosetref#1#2#3{% link command, csname, refname
  \HyRef@ShowKeysRef{#2}%
  \ifcase 0\ifx#1\relax 1\fi\ifx#1\Hy@varioref@undefined 1\fi\relax
    \edef\HyRef@thisref{%
      \expandafter\@fourthoffive#1\@empty\@empty\@empty
    }%
    \expandafter\HyRef@testreftype\HyRef@thisref.\\%
    \Hy@safe@activesfalse
    #3{%
      \expandafter\@fifthoffive#1\@empty\@empty\@empty
    }{%
      \expandafter\@fourthoffive#1\@empty\@empty\@empty
    }{%
      \HyRef@currentHtag
      \expandafter\@firstoffive#1\@empty\@empty\@empty
      \null
    }%
  \else
    \protect\G@refundefinedtrue
    \nfss@text{\reset@font\bfseries ??}%
    \@latex@warning{%
      Reference `#2' on page \thepage\space undefined%
    }%
  \fi
}
\def\HyRef@testreftype#1.#2\\{%
  \@ifundefined{#1autorefname}{%
    \@ifundefined{#1name}{%
      \HyRef@StripStar#1\\*\\\@nil{#1}%
      \@ifundefined{\HyRef@name autorefname}{%
        \@ifundefined{\HyRef@name name}{%
          \def\HyRef@currentHtag{}%
          \Hy@Warning{No autoref name for `#1'}%
        }{%
          \edef\HyRef@currentHtag{%
            \expandafter\noexpand\csname\HyRef@name name\endcsname
            \noexpand~%
          }%
        }%
      }{%
        \edef\HyRef@currentHtag{%
          \expandafter\noexpand
          \csname\HyRef@name autorefname\endcsname
          \noexpand~%
        }%
      }%
    }{%
      \edef\HyRef@currentHtag{%
        \expandafter\noexpand\csname#1name\endcsname
        \noexpand~%
      }%
    }%
  }{%
    \edef\HyRef@currentHtag{%
      \expandafter\noexpand\csname#1autorefname\endcsname
      \noexpand~%
    }%
  }%
}
\def\HyRef@StripStar#1*\\#2\@nil#3{%
  \def\HyRef@name{#2}%
  \ifx\HyRef@name\HyRef@CaseStar
    \def\HyRef@name{#1}%
  \else
    \def\HyRef@name{#3}%
  \fi
}
\def\HyRef@CaseStar{*\\}
\def\HyRef@currentHtag{}
\let\HyRef@ShowKeysRef\@gobble
\def\HyRef@ShowKeysInit{%
  \@ifundefined{SK@@label}{}
   {%
    \ifx\SK@ref\@empty
    \else
      \def\HyRef@ShowKeysRef{%
        \SK@\SK@@ref
      }%
    \fi
   }%
}
\AddToHook{package/showkeys/after}{\HyRef@ShowKeysInit}
\providecommand*\AMSautorefname{\equationautorefname}
\providecommand*\Hfootnoteautorefname{\footnoteautorefname}
\providecommand*\Itemautorefname{\itemautorefname}
\providecommand*\itemautorefname{item}
\providecommand*\equationautorefname{Equation}
\providecommand*\footnoteautorefname{footnote}
\providecommand*\itemautorefname{item}
\providecommand*\figureautorefname{Figure}
\providecommand*\tableautorefname{Table}
\providecommand*\partautorefname{Part}
\providecommand*\appendixautorefname{Appendix}
\providecommand*\chapterautorefname{chapter}
\providecommand*\sectionautorefname{section}
\providecommand*\subsectionautorefname{subsection}
\providecommand*\subsubsectionautorefname{subsubsection}
\providecommand*\paragraphautorefname{paragraph}
\providecommand*\subparagraphautorefname{subparagraph}
\providecommand*\FancyVerbLineautorefname{line}
\providecommand*\theoremautorefname{Theorem}
\providecommand*\pageautorefname{page}
\providecommand*{\Hy@DistillerDestFix}{}
\def\phantomsection{%
  \Hy@MakeCurrentHrefAuto{section*}%
  \Hy@raisedlink{\hyper@anchorstart{\@currentHref}\hyper@anchorend}%
}
\endinput
%%
%% End of file `hyperref.sty'.
