%%
%% This is file `minted.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% minted.dtx  (with options: `package')
%% Copyright 2010--2011 Konrad Rudolph
%% 
%% 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.
%% 
%% Additionally, the project may be distributed under the terms of the new BSD
%% license.
%% 
%% This work has the LPPL maintenance status `maintained'.
%% 
%% The Current Maintainer of this work is Konrad Rudolph.
%% 
%% This work consists of the files minted.dtx and minted.ins
%% and the derived file minted.sty.
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{minted}[2013/12/21 v2.0-alpha3 ]
\RequirePackage{keyval}
\RequirePackage{kvoptions}
\RequirePackage{fancyvrb}
\RequirePackage{float}
\RequirePackage{ifthen}
\RequirePackage{calc}
\RequirePackage{ifplatform}
\RequirePackage{pdftexcmds}
\RequirePackage{etoolbox}
\RequirePackage{xstring}
\AtBeginDocument{\@ifpackageloaded{color}{}{\RequirePackage{xcolor}}}
\DeclareVoidOption{chapter}{\def\minted@float@within{chapter}}
\DeclareVoidOption{section}{\def\minted@float@within{section}}
\newboolean{minted@cache}
\DeclareVoidOption{cache}{%
  \minted@cachetrue
  \AtEndOfPackage{\ProvideDirectory{\minted@outputdir\minted@cachedir}}%
}
\StrSubstitute{\jobname}{ }{_}[\minted@jobname]
\StrSubstitute{\minted@jobname}{"}{}[\minted@jobname]
\StrSubstitute{\minted@jobname}{*}{-}[\minted@jobname]
\newcommand{\minted@cachedir}{.minted-\minted@jobname}
\let\minted@cachedir@windows\minted@cachedir
\define@key{minted}{cachedir}{%
  \@namedef{minted@cachedir}{#1}%
  \StrSubstitute{\minted@cachedir}{/}{\@backslashchar}[\minted@cachedir@windows]}
\let\minted@outputdir\@empty
\let\minted@outputdir@windows\@empty
\define@key{minted}{outputdir}{%
  \@namedef{minted@outputdir}{#1/}%
  \StrSubstitute{\minted@outputdir}{/}%
    {\@backslashchar}[\minted@outputdir@windows]}
\newboolean{minted@langlinenos}
\DeclareVoidOption{langlinenos}{\minted@langlinenostrue}
\ProcessKeyvalOptions*
\newcommand{\minted@infile}{\jobname.out.pyg}
\newcommand{\minted@cachefiles}{}
\newcommand{\minted@addcachefile}[1]{%
  \expandafter\gdef\expandafter\minted@cachefiles\expandafter{%
    \minted@cachefiles,#1}%
  \expandafter\gdef\csname minted@current@#1\endcsname{}%
}
\newcommand{\minted@savecachefiles}{%
  \immediate\write\@mainaux{%
    \string\gdef\string\minted@oldcachefiles\string{%
      \minted@cachefiles\string}}%
}
\newcommand{\minted@cleancache}{%
  \ifthenelse{\boolean{minted@cache}}{%
    \ifcsname minted@oldcachefiles\endcsname
      \renewcommand{\do}[1]{%
        \ifthenelse{\equal{##1}{}}{}{%
          \ifcsname minted@current@##1\endcsname\else
            \DeleteFile[\minted@outputdir\minted@cachedir]{##1.pygtex}%
          \fi
        }%
      }%
      \expandafter\docsvlist\expandafter{\minted@oldcachefiles}%
    \else
    \fi
  }{}%
}
\ifthenelse{\boolean{minted@cache}}%
  {\AtEndDocument{%
    \minted@savecachefiles
    \minted@cleancache}}%
  {}%
\ifwindows
  \providecommand{\DeleteFile}[2][]{%
    \ifthenelse{\equal{#1}{}}%
      {\IfFileExists{#2}{\immediate\write18{del "#2"}}{}}%
      {\IfFileExists{#1/#2}{%
        \StrSubstitute{#1}{/}{\@backslashchar}[\minted@windir]
        \immediate\write18{del "\minted@windir\@backslashchar #2"}}{}}}
\else
  \providecommand{\DeleteFile}[2][]{%
    \ifthenelse{\equal{#1}{}}%
      {\IfFileExists{#2}{\immediate\write18{rm "#2"}}{}}%
      {\IfFileExists{#1/#2}{\immediate\write18{rm "#1/#2"}}{}}}
\fi
\ifwindows
  \newcommand{\ProvideDirectory}[1]{%
    \StrSubstitute{#1}{/}{\@backslashchar}[\minted@windir]
    \immediate\write18{if not exist "\minted@windir" mkdir "\minted@windir"}}
\else
  \newcommand{\ProvideDirectory}[1]{%
    \immediate\write18{mkdir -p "#1"}}
\fi
\newboolean{AppExists}
\newread\minted@appexistsfile
\newcommand{\TestAppExists}[1]{
  \ifwindows
    \DeleteFile{\jobname.aex}
    \immediate\write18{for \string^\@percentchar i in (#1.exe #1.bat #1.cmd)
      do set >\jobname.aex <nul: /p
      x=\string^\@percentchar \string~$PATH:i>>\jobname.aex}
    %$ <- balance syntax highlighting
    \immediate\openin\minted@appexistsfile\jobname.aex
    \expandafter\def\expandafter\@tmp@cr\expandafter{\the\endlinechar}
    \endlinechar=-1\relax
    \readline\minted@appexistsfile to \minted@apppathifexists
    \endlinechar=\@tmp@cr
    \ifthenelse{\equal{\minted@apppathifexists}{}}
     {\AppExistsfalse}
     {\AppExiststrue}
    \immediate\closein\minted@appexistsfile
    \DeleteFile{\jobname.aex}
    \immediate\typeout{file deleted}
  \else
    \immediate\write18{which #1 && touch \jobname.aex}
    \IfFileExists{\jobname.aex}
      {\AppExiststrue
        \DeleteFile{\jobname.aex}}
      {\AppExistsfalse}
  \fi
}
\newcommand{\minted@optg}{}
\let\minted@lang\@empty
\newcommand{\minted@optlang}{}
\newcommand{\minted@optcmd}{}
\newcommand{\minted@checklang}{%
  \ifcsname minted@optlang\minted@lang\endcsname\else
    \expandafter\def\csname minted@optlang\minted@lang\endcsname{}%
  \fi
  \ifcsname minted@optlang\minted@lang @extra\endcsname\else
    \expandafter\def\csname minted@optlang\minted@lang @extra\endcsname{}%
  \fi
}
\newcommand{\minted@resetoptcmd}{%
  \@namedef{minted@optcmd@extra}{}%
  \let\minted@optcmd@autogobble\relax}
\newcommand{\minted@getoptg}[1]{%
  \expandafter\detokenize%
  \expandafter\expandafter\expandafter{\csname minted@optg@#1\endcsname}}
\newcommand{\minted@getoptlang}[1]{%
  \expandafter\detokenize\expandafter\expandafter\expandafter{%
    \csname minted@optlang\minted@lang @#1\endcsname}}
\newcommand{\minted@getoptcmd}[1]{%
  \expandafter\detokenize%
  \expandafter\expandafter\expandafter{\csname minted@optcmd@#1\endcsname}}
\newcommand{\minted@regoptg}[1]{%
  \ifcsname minted@optg@#1@reg\endcsname\else
    \expandafter\let\csname minted@optg@#1@reg\endcsname\@empty
    \expandafter\def\expandafter\minted@optg\expandafter{%
      \minted@optg\space\minted@getoptg{#1}}%
  \fi
}
\newcommand{\minted@regoptlang}[1]{%
  \ifcsname minted@optlang\minted@lang @#1@reg\endcsname\else
    \ifcsname minted@optlang\minted@lang\endcsname\else
      \expandafter\def\csname minted@optlang\minted@lang\endcsname{}%
    \fi
    \expandafter\let\csname minted@optlang\minted@lang @#1@reg\endcsname\@empty
    \expandafter\let\expandafter\minted@optlang%
      \csname minted@optlang\minted@lang\endcsname
    \expandafter\def\expandafter\minted@optlang\expandafter{%
      \minted@optlang\space\minted@getoptlang{#1}}%
    \expandafter\let\csname minted@optlang\minted@lang\endcsname\minted@optlang
    \let\minted@optlang\@empty
  \fi
}
\newcommand{\minted@regoptcmd}[1]{%
  \ifcsname minted@optcmd@#1@reg\endcsname\else
    \expandafter\let\csname minted@optcmd@#1@reg\endcsname\@empty
    \expandafter\def\expandafter\minted@optcmd\expandafter{%
      \minted@optcmd\space\minted@getoptcmd{#1}}%
    \expandafter\def\expandafter\minted@resetoptcmd\expandafter{%
        \minted@resetoptcmd
        \@namedef{minted@optcmd@#1}{}}
  \fi
}
\newcommand{\minted@define@opt}[4][]{%
  \ifthenelse{\equal{#1}{}}%
    {\define@key{minted@optg}{#2}{\@namedef{minted@optg@#2}{#3=#4}%
        \@namedef{minted@optg@#2@val}{#4}%
        \minted@regoptg{#2}}%
      \define@key{minted@optlang}{#2}{%
        \@namedef{minted@optlang\minted@lang @#2}{#3=#4}%
        \@namedef{minted@optlang\minted@lang @#2@val}{#4}%
        \minted@regoptlang{#2}}%
      \define@key{minted@optcmd}{#2}{\@namedef{minted@optcmd@#2}{#3=#4}%
        \@namedef{minted@optcmd@#2@val}{#4}%
        \minted@regoptcmd{#2}}}%
    {\define@key{minted@optg}{#2}[#1]{\@namedef{minted@optg@#2}{#3=#4}%
        \@namedef{minted@optg@#2@val}{#4}%
        \minted@regoptg{#2}}%
      \define@key{minted@optlang}{#2}[#1]{%
        \@namedef{minted@optlang\minted@lang @#2}{#3=#4}%
        \@namedef{minted@optlang\minted@lang @#2@val}{#4}%
        \minted@regoptlang{#2}}%
      \define@key{minted@optcmd}{#2}[#1]{\@namedef{minted@optcmd@#2}{#3=#4}%
        \@namedef{minted@optcmd@#2@val}{#4}%
        \minted@regoptcmd{#2}}}%
}
\newcommand{\minted@define@optstyle}{%
  \define@key{minted@optg}{style}{%
    \@namedef{minted@optg@style}{-P style=##1 -P commandprefix=PYG##1}%
    \minted@regoptg{style}\minted@regstyle{##1}}%
  \define@key{minted@optlang}{style}{%
    \@namedef{minted@optlang\minted@lang @style}%
      {-P style=##1 -P commandprefix=PYG##1}%
    \minted@regoptlang{style}\minted@regstyle{##1}}%
  \define@key{minted@optcmd}{style}{%
    \@namedef{minted@optcmd@style}{-P style=##1 -P commandprefix=PYG##1}%
    \minted@regoptcmd{style}\minted@regstyle{##1}}%
}
\newcommand{\minted@regstyle}[1]{%
  \ifcsname minted@stylereg@#1\endcsname\else
    \expandafter\global\expandafter%
      \let\csname minted@stylereg@#1\endcsname\@empty
    \ifthenelse{\boolean{minted@cache}}%
      {\IfFileExists{\minted@outputdir\minted@cachedir/#1.pygstyle}{}{%
        \ifwindows
          \immediate\write18{\MintedPygmentize\space -S #1 -f latex
            -P commandprefix=PYG#1
            > "\minted@outputdir@windows\minted@cachedir@windows\@backslashchar#1.pygstyle"}%
        \else
          \immediate\write18{\MintedPygmentize\space -S #1 -f latex
            -P commandprefix=PYG#1
            > "\minted@outputdir\minted@cachedir/#1.pygstyle"}%
        \fi
        }%
        \begingroup
        \let\def\gdef
        \endlinechar=-1\relax
        \input{\minted@outputdir\minted@cachedir/#1.pygstyle}%
        \endgroup}%
      {\ifwindows
          \immediate\write18{\MintedPygmentize\space -S #1 -f latex
            -P commandprefix=PYG#1 > "\minted@outputdir@windows\jobname.out.pyg"}%
        \else
          \immediate\write18{\MintedPygmentize\space -S #1 -f latex
            -P commandprefix=PYG#1 > "\minted@outputdir\jobname.out.pyg"}%
        \fi
        \begingroup
        \let\def\gdef
        \endlinechar=-1\relax
        \input{\minted@outputdir\jobname.out.pyg}%
        \endgroup}%
  \fi
}
\newcommand{\minted@define@switch}[3][]{
  \define@booleankey{minted@optg}{#2}
    {\@namedef{minted@optg@#2}{#3}\minted@regoptg{#2}}
    {\@namedef{minted@optg@#2}{#1}\minted@regoptg{#2}}
  \define@booleankey{minted@optlang}{#2}
    {\@namedef{minted@optlang\minted@lang @#2}{#3}\minted@regoptlang{#2}}
    {\@namedef{minted@optlang\minted@lang @#2}{#1}\minted@regoptlang{#2}}
  \define@booleankey{minted@optcmd}{#2}
    {\@namedef{minted@optcmd@#2}{#3}\minted@regoptcmd{#2}}
    {\@namedef{minted@optcmd@#2}{#1}\minted@regoptcmd{#2}}
}
\newcommand{\minted@define@extra}[1]{
  \define@key{minted@optg}{#1}{%
    \expandafter\def\expandafter\minted@optg@extra\expandafter{%
      \minted@optg@extra,#1=##1}}
  \@namedef{minted@optg@extra}{}
  \define@key{minted@optlang}{#1}{%
    \ifcsname minted@optlang\minted@lang @extra\endcsname\else
      \expandafter\def\csname minted@optlang\minted@lang @extra\endcsname{}%
    \fi
    \expandafter\let\expandafter\minted@optlang@extra%
      \csname minted@optlang\minted@lang @extra \endcsname
    \expandafter\def\expandafter\minted@optlang@extra\expandafter{%
      \minted@optlang@extra,#1=##1}%
    \expandafter\let\csname minted@optlang\minted@lang @extra\endcsname%
      \minted@optlang@extra
    \let\minted@optlang@extra\@empty}%
  \@namedef{minted@optlang@extra}{}
  \define@key{minted@optcmd}{#1}{%
    \expandafter\def\expandafter\minted@optcmd@extra\expandafter{%
      \minted@optcmd@extra,#1=##1}}
  \@namedef{minted@optcmd@extra}{}
}
\newcommand{\minted@define@extra@switch}[1]{
  \define@booleankey{minted@optg}{#1}
    {\expandafter\def\expandafter\minted@optg@extra\expandafter{%
      \minted@optg@extra,#1}}
    {\expandafter\def\expandafter\minted@optg@extra\expandafter{%
      \minted@optg@extra,#1=false}}
  \define@booleankey{minted@optlang}{#1}
    {%
      \ifcsname minted@optlang\minted@lang @extra\endcsname\else
        \expandafter\def\csname minted@optlang\minted@lang @extra\endcsname{}%
      \fi
      \expandafter\let\expandafter\minted@optlang@extra%
        \csname minted@optlang\minted@lang @extra\endcsname
      \expandafter\def\expandafter\minted@optlang@extra\expandafter{%
        \minted@optlang@extra,#1}%
      \expandafter\let\csname minted@optlang\minted@lang @extra\endcsname%
        \minted@optlang@extra
      \let\minted@optlang@extra\@empty}
    {%
      \ifcsname minted@optlang\minted@lang @extra\endcsname\else
        \expandafter\def\csname minted@optlang\minted@lang @extra\endcsname{}%
      \fi
      \expandafter\let\expandafter\minted@optlang@extra%
        \csname minted@optlang\minted@lang @extra\endcsname
      \expandafter\def\expandafter\minted@optlang@extra\expandafter{%
        \minted@optlang@extra,#1=false}%
      \expandafter\let\csname minted@optlang\minted@lang @extra\endcsname%
        \minted@optlang@extra
      \let\minted@optlang@extra\@empty}
  \define@booleankey{minted@optcmd}{#1}
    {\expandafter\def\expandafter\minted@optcmd@extra\expandafter{%
      \minted@optcmd@extra,#1}}
    {\expandafter\def\expandafter\minted@optcmd@extra\expandafter{%
      \minted@optcmd@extra,#1=false}}
}
\minted@define@opt{encoding}{-P encoding}{#1}
\minted@define@opt{outencoding}{-P outencoding}{#1}
\minted@define@opt{stripnl}{-P stripnl}{#1}
\minted@define@switch{python3}{-P python3=True}
\minted@define@switch[-P funcnamehighlighting=False]%
  {funcnamehighlighting}{-P funcnamehighlighting}
\minted@define@switch{startinline}{-P startinline}
\minted@define@opt{gobble}{-F gobble:n}{#1}
\minted@define@opt{codetagify}{-F codetagify:codetags}{#1}
\minted@define@opt{keywordcase}{-F keywordcase:case}{#1}
\minted@define@switch{texcl}{-P texcomments}
\minted@define@switch{texcomments}{-P texcomments}
\minted@define@switch{mathescape}{-P mathescape}
\minted@define@switch{linenos}{-P linenos}
\minted@define@optstyle
\minted@define@extra{frame}
\minted@define@extra{framesep}
\minted@define@extra{framerule}
\minted@define@extra{rulecolor}
\minted@define@extra{numbersep}
\minted@define@extra{numbers}
\minted@define@extra{firstnumber}
\minted@define@extra{stepnumber}
\minted@define@extra{firstline}
\minted@define@extra{lastline}
\minted@define@extra{baselinestretch}
\minted@define@extra{xleftmargin}
\minted@define@extra{xrightmargin}
\minted@define@extra{fillcolor}
\minted@define@extra{tabsize}
\minted@define@extra{fontfamily}
\minted@define@extra{fontsize}
\minted@define@extra{fontshape}
\minted@define@extra{fontseries}
\minted@define@extra{formatcom}
\minted@define@extra{label}
\minted@define@extra@switch{numberblanklines}
\minted@define@extra@switch{showspaces}
\minted@define@extra@switch{resetmargins}
\minted@define@extra@switch{samepage}
\minted@define@extra@switch{showtabs}
\minted@define@extra@switch{obeytabs}
\let\minted@optcmd@bgcolor\@empty
\define@key{minted@optcmd}{bgcolor}{\@namedef{minted@optcmd@bgcolor}{#1}}
\newcommand{\minted@encoding}{%
  \ifcsname minted@optcmd@encoding@val\endcsname
    \csname minted@optcmd@encoding@val\endcsname
  \else
    \ifcsname minted@optlang\minted@lang @encoding@val\endcsname
      \csname minted@optlang\minted@lang @encoding@val\endcsname
    \else
      \ifcsname minted@optg@encoding@val\endcsname
        \csname minted@optg@encoding@val\endcsname
      \else
        UTF8%
      \fi
    \fi
  \fi
}
\define@booleankey{minted@optg}{autogobble}
    {\expandafter\let\csname minted@optg@autogobble\endcsname\@empty}
    {\expandafter\let\csname minted@optg@autogobble\endcsname\relax}
\define@booleankey{minted@optlang}{autogobble}
    {\expandafter\let\csname minted@optlang\minted@lang @autogobble\endcsname\@empty}
    {\expandafter\let\csname minted@optlang\minted@lang @autogobble\endcsname\relax}
\define@booleankey{minted@optcmd}{autogobble}
    {\expandafter\let\csname minted@optcmd@autogobble\endcsname\@empty}
    {\expandafter\let\csname minted@optcmd@autogobble\endcsname\relax}
\newboolean{minted@autogobble}
\newcommand{\minted@set@autogobble}{%
  \ifcsname minted@optg@autogobble\endcsname\else
    \expandafter\let\csname minted@optg@autogobble\endcsname\relax
  \fi
  \ifcsname minted@optlang\minted@lang @autogobble\endcsname\else
    \expandafter\let\csname minted@optlang\minted@lang @autogobble\endcsname\relax
  \fi
  \ifcsname minted@optcmd@autogobble\endcsname\else
    \expandafter\let\csname minted@optcmd@autogobble\endcsname\relax
  \fi
  \expandafter\ifx\csname minted@optcmd@autogobble\endcsname\@empty
    \setboolean{minted@autogobble}{true}%
  \else
    \expandafter\ifx\csname minted@optlang\minted@lang @autogobble\endcsname\@empty
      \setboolean{minted@autogobble}{true}%
    \else
      \expandafter\ifx\csname minted@optg@autogobble\endcsname\@empty
        \setboolean{minted@autogobble}{true}%
      \else
        \setboolean{minted@autogobble}{false}%
      \fi
    \fi
  \fi
}
\newsavebox{\minted@bgbox}
\newenvironment{minted@colorbg}[1]{
    %\setlength{\fboxsep}{-\fboxrule}
    \def\minted@bgcol{#1}
    \noindent
    \begin{lrbox}{\minted@bgbox}
    \begin{minipage}{\linewidth-2\fboxsep}}
 {\end{minipage}
    \end{lrbox}%
    \colorbox{\minted@bgcol}{\usebox{\minted@bgbox}}}
\newwrite\minted@code
\newcommand{\minted@savecode}[1]{
  \immediate\openout\minted@code\jobname.pyg\relax
  \immediate\write\minted@code{\expandafter\detokenize\expandafter{#1}}%
  \immediate\closeout\minted@code}
\newcommand{\minted@write@detok}[1]{%
  \immediate\write\FV@OutFile{\detokenize{#1}}}
\newcommand{\minted@FVB@VerbatimOut}[1]{%
  \@bsphack
  \begingroup
    \FV@UseKeyValues
    \FV@DefineWhiteSpace
    \def\FV@Space{\space}%
    \FV@DefineTabOut
    \let\FV@ProcessLine\minted@write@detok
    \immediate\openout\FV@OutFile #1\relax
    \let\FV@FontScanPrep\relax
    \let\@noligs\relax
    \FV@Scan}
\newcommand{\MintedPygmentize}{pygmentize}
\newcommand{\minted@pygmentize}[2][\jobname.pyg]{%
  \minted@checklang
  \minted@set@autogobble
  \ifthenelse{\boolean{minted@autogobble}}%
    {\def\minted@codefile{\jobname.pyg}}%
    {\def\minted@codefile{#1}}%
  \def\minted@cmd{\MintedPygmentize\space -l #2
    -f latex -F tokenmerge
    \minted@optg \space \csname minted@optlang\minted@lang\endcsname
    \space \minted@optcmd \space -P "verboptions=\minted@getoptg{extra}%
      \minted@getoptlang{extra}\minted@getoptcmd{extra}"
    -o "\minted@outputdir\minted@infile" \space
    "\minted@outputdir\minted@codefile"}%
  % For debugging, uncomment:
  % \immediate\typeout{\minted@cmd}%
  \ifthenelse{\boolean{minted@cache}}%
    {%
      \expandafter\ifx\csname XeTeXinterchartoks\endcsname\relax
        \ifthenelse{\boolean{minted@autogobble}}%
          {\edef\minted@hash{\pdf@filemdfivesum{#1}%
            \pdf@mdfivesum{\minted@cmd autogobble}}}%
          {\edef\minted@hash{\pdf@filemdfivesum{#1}%
            \pdf@mdfivesum{\minted@cmd}}}%
      \else
        \immediate\openout\minted@code\jobname.mintedcmd\relax
        \immediate\write\minted@code{\minted@cmd}%
        \ifthenelse{\boolean{minted@autogobble}}%
          {\immediate\write\minted@code{autogobble}}{}%
        \immediate\closeout\minted@code
        %Cheating a little here by using ASCII codes to write `{` and `}`
        %in the Python code
        \def\minted@hashcmd{%
          \detokenize{python -c "import hashlib;
            hasher = hashlib.sha1();
            f = open(\'}\minted@outputdir\jobname.mintedcmd\detokenize{\', \'rb\');
            hasher.update(f.read());
            f.close();
            f = open(\'}\minted@outputdir#1\detokenize{\', \'rb\');
            hasher.update(f.read());
            f.close();
            f = open(\'}\minted@outputdir\jobname.mintedmd5\detokenize{\', \'w\');
            macro = \'\\edef\\minted@hash\' + chr(123) + hasher.hexdigest() + chr(125) + \'\';
            f.write(\'\\makeatletter\' + macro + \'\\makeatother\n\');
            f.close();"}}%
        \immediate\write18{\minted@hashcmd}
        \input{\minted@outputdir\jobname.mintedmd5}%
      \fi
      \ifwindows
        \edef\minted@infile{%
          \minted@cachedir@windows\@backslashchar\minted@hash.pygtex}%
      \else
        \edef\minted@infile{%
          \minted@cachedir/\minted@hash.pygtex}%
      \fi
      \IfFileExists{\minted@cachedir/\minted@hash.pygtex}{}{%
        \ifthenelse{\boolean{minted@autogobble}}{%
          %Need a version of open() that supports encoding under Python 2
          \edef\minted@autogobblecmd{%
            \detokenize{python -c "import sys;
            import textwrap;
            from io import open;
            f = open(\'}\minted@outputdir#1\detokenize{\', \'r\', encoding=\'}\minted@encoding\detokenize{\');
            t = f.read();
            f.close();
            f = open(\'}\minted@outputdir\jobname.pyg\detokenize{\', \'w\', encoding=\'}\minted@encoding\detokenize{\');
            f.write(textwrap.dedent(t));
            f.close();"}%
          }%
          \immediate\write18{\minted@autogobblecmd}}{}%
        \immediate\write18{\minted@cmd}}%
      \expandafter\minted@addcachefile\expandafter{\minted@hash}%
      \minted@inputpyg}%
    {%
      \ifthenelse{\boolean{minted@autogobble}}{%
        %Need a version of open() that supports encoding under Python 2
        \edef\minted@autogobblecmd{%
          \detokenize{python -c "import sys;
          import textwrap;
          from io import open;
          f = open(\'}\minted@outputdir#1\detokenize{\', \'r\', encoding=\'}\minted@encoding\detokenize{\');
          t = f.read();
          f.close();
          f = open(\'}\minted@outputdir\jobname.pyg\detokenize{\', \'w\', encoding=\'}\minted@encoding\detokenize{\');
          f.write(textwrap.dedent(t));
          f.close();"}%
        }%
        \immediate\write18{\minted@autogobblecmd}}{}%
      \immediate\write18{\minted@cmd}%
      \minted@inputpyg}%
}
\newcommand{\minted@inputpyg}{%
  \ifthenelse{\equal{\minted@optcmd@bgcolor}{}}%
    {}%
    {\begin{minted@colorbg}{\minted@optcmd@bgcolor}}%
  \input{\minted@outputdir\minted@infile}%
  \ifthenelse{\equal{\minted@optcmd@bgcolor}{}}%
    {}%
    {\end{minted@colorbg}}%
}
\newcounter{minted@FancyVerbLineTemp}
\newcommand{\minted@langlinenoson}{%
  \ifcsname c@minted@lang\minted@lang\endcsname\else
    \newcounter{minted@lang\minted@lang}%
  \fi
  \setcounter{minted@FancyVerbLineTemp}{\value{FancyVerbLine}}%
  \setcounter{FancyVerbLine}{\value{minted@lang\minted@lang}}%
}
\newcommand{\minted@langlinenosoff}{%
  \setcounter{minted@lang\minted@lang}{\value{FancyVerbLine}}%
  \setcounter{FancyVerbLine}{\value{minted@FancyVerbLineTemp}}%
}
\ifthenelse{\boolean{minted@langlinenos}}{}{%
  \let\minted@langlinenoson\relax
  \let\minted@langlinenosoff\relax
}
\newcommand{\setminted}[2][]{%
  \ifthenelse{\equal{#1}{}}%
    {\setkeys{minted@optg}{#2}}%
    {\def\minted@lang{#1}\setkeys{minted@optlang}{#2}}%
}
\newcommand{\usemintedstyle}[2][]{\setminted[#1]{style=#2}}
\newcommand{\mintinline}[2][]{%
  \minted@resetoptcmd
  \setkeys{minted@optcmd}{#1}%
  \def\minted@lang{#2}%
  \begingroup
  \let\do\@makeother\dospecials
  \catcode`\{=1
  \catcode`\}=2
  \catcode`\^^I=\active
  \@ifnextchar\bgroup
    {\minted@inline@iii}%
    {\catcode`\{=12\catcode`\}=12
      \minted@inline@i}}
\def\minted@inline@i#1{%
  \endgroup
  \def\minted@inline@ii##1#1{%
    \minted@inline@iii{##1}}%
  \begingroup
  \let\do\@makeother\dospecials
  \minted@inline@ii}
\newcommand{\minted@inline@iii}[1]{%
  \endgroup
  \immediate\openout\minted@code\jobname.pyg\relax
  \immediate\write\minted@code{\detokenize{#1}}%
  \immediate\closeout\minted@code
  \begingroup
  \RecustomVerbatimEnvironment{Verbatim}{BVerbatim}{}%
  \minted@pygmentize{\minted@lang}%
  \endgroup}
\newcommand{\mint}[3][]{%
  \def\minted@lang{#2}%
  \DefineShortVerb{#3}%
  \minted@resetoptcmd
  \setkeys{minted@optcmd}{#1}%
  \SaveVerb[aftersave={%
    \UndefineShortVerb{#3}%
    \minted@savecode{\FV@SV@minted@verb}%
    \minted@langlinenoson
    \minted@pygmentize{#2}
    \minted@langlinenosoff}]{minted@verb}#3}
\newenvironment{minted}[2][]
  {\VerbatimEnvironment
    \let\FVB@VerbatimOut\minted@FVB@VerbatimOut
    \def\minted@lang{#2}%
    \minted@resetoptcmd
    \setkeys{minted@optcmd}{#1}%
    \begin{VerbatimOut}[codes={\catcode`\^^I=12}]{\jobname.pyg}}%
 {\end{VerbatimOut}%
    \minted@langlinenoson
    \minted@pygmentize{\minted@lang}%
    \minted@langlinenosoff}
\newcommand{\inputminted}[3][]{%
  \def\minted@lang{#2}%
  \minted@resetoptcmd
  \setkeys{minted@optcmd}{#1}%
  \minted@pygmentize[#3]{#2}}
\newcommand{\newminted}[3][]{
  \ifthenelse{\equal{#1}{}}
    {\def\minted@envname{#2code}}
    {\def\minted@envname{#1}}
  \newenvironment{\minted@envname}
    {\VerbatimEnvironment
      \begin{minted}[#3]{#2}}
    {\end{minted}}
  \newenvironment{\minted@envname *}[1]
    {\VerbatimEnvironment\begin{minted}[#3,##1]{#2}}
    {\end{minted}}}
\newcommand{\newmint}[3][]{
  \ifthenelse{\equal{#1}{}}
    {\def\minted@shortname{#2}}
    {\def\minted@shortname{#1}}
  \expandafter\newcommand\csname\minted@shortname\endcsname[2][]{
    \mint[#3,##1]{#2}##2}}
\newcommand{\newmintedfile}[3][]{
  \ifthenelse{\equal{#1}{}}
    {\def\minted@shortname{#2file}}
    {\def\minted@shortname{#1}}
  \expandafter\newcommand\csname\minted@shortname\endcsname[2][]{
    \inputminted[#3,##1]{#2}{##2}}}
\newcommand{\newmintinline}[3][]{%
  \ifthenelse{\equal{#1}{}}%
    {\def\minted@shortname{#2inline}}%
    {\def\minted@shortname{#1}}%
    \expandafter\newcommand\csname\minted@shortname\endcsname{%
      \begingroup
      \let\do\@makeother\dospecials
      \catcode`\{=1
      \catcode`\}=2
      \@ifnextchar[{\endgroup\minted@inliner[#3][#2]}%
        {\endgroup\minted@inliner[#3][#2][]}}%
    \def\minted@inliner[##1][##2][##3]{\mintinline[##1,##3]{##2}}%
}
\@ifundefined{minted@float@within}
  {\newfloat{listing}{h}{lol}}
  {\newfloat{listing}{h}{lol}[\minted@float@within]}
\newcommand{\listingscaption}{Listing}
\floatname{listing}{\listingscaption}
\newcommand{\listoflistingscaption}{List of listings}
\providecommand{\listoflistings}{\listof{listing}{\listoflistingscaption}}
\AtEndOfPackage{
  \ifnum\pdf@shellescape=1\relax\else
    \PackageError{minted}
     {You must invoke LaTeX with the
      -shell-escape flag}
     {Pass the -shell-escape flag to LaTeX. Refer to the minted.sty
      documentation for more information.}%
  \fi
  \TestAppExists{pygmentize}
  \ifAppExists\else
    \PackageError{minted}
     {You must have `pygmentize' installed
      to use this package}
     {Refer to the installation instructions in the minted
      documentation for more information.}
  \fi
  \setminted{style=default}%
}
\AtEndDocument{
  \expandafter\ifx\csname XeTeXinterchartoks\endcsname\relax
  \else
    \DeleteFile[\minted@outputdir]{\jobname.mintedcmd}%
    \DeleteFile[\minted@outputdir]{\jobname.mintedmd5}%
  \fi
  \DeleteFile[\minted@outputdir]{\jobname.pyg}%
  \DeleteFile[\minted@outputdir]{\jobname.out.pyg}%
}
%% \Finale
\endinput
%%
%% End of file `minted.sty'.
