% This is file `imsart.sty'
%%
%% LaTeX 2e style file for the processing of LaTeX2e files
%% of the following IMS/BS journals:
%%
%% - The Annals of Probability
%% - The Annals of Applied Probability
%% - The Annals of Statistics
%% - The Annals of Applied Statistics
%% - Statistical Science
%% - Probability Surveys
%% - Statistics Surveys
%% - Electronic Journal of Statistics
%% - Bernoulli
%% - Annales de l'Institut Henri Poincar\'e - Probabilit\'es et Statistiques
%% - Brazilian Journal of Probability and Statistics
%% - Bayesian Analysis
%%
%% - Institute of Mathematical Statistics, U.S.A.
%% - Bernoulli Society
%% - Institut Henry Poincare
%% - Brazilian Statistical Association
%% - International Society for Bayesian Analysis
%%
%% Macros written by Vytas Statulevicius, VTeX, Lithuania
%% Maintained by TeX group members, VTeX, Lithuania
%% for Institute of Mathematical Statistics, U.S.A.
%% Please submit bugs or your comments to latex-support@vtex.lt
%%
%% The original distribution is located at:
%% https://www.e-publications.org/ims/support
%%
%% This style file contains additional macros and is designed to use
%% with standard "article.cls"
%%
%% You are free to use this style file as you see fit, provided
%% that you do not make changes to the file.
%% If you DO make changes, you are required to rename this file.
%%
%% It may be distributed under the terms of the LaTeX Project Public
%% License, as described in lppl.txt in the base LaTeX distribution.
%% Either version 1.0 or, at your option, any later version.
%%
%% \CharacterTable
%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%%   Digits        \0\1\2\3\4\5\6\7\8\9
%%   Exclamation   \!     Double quote  \"     Hash (number) \#
%%   Dollar        \$     Percent       \%     Ampersand     \&
%%   Acute accent  \'     Left paren    \(     Right paren   \)
%%   Asterisk      \*     Plus          \+     Comma         \,
%%   Minus         \-     Point         \.     Solidus       \/
%%   Colon         \:     Semicolon     \;     Less than     \<
%%   Equals        \=     Greater than  \>     Question mark \?
%%   Commercial at \@     Left bracket  \[     Backslash     \\
%%   Right bracket \]     Circumflex    \^     Underscore    \_
%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
%%   Right brace   \}     Tilde         \~}
%%
%% Bug fixes and changes: at end of file
%
% TeX programming: Vytas Statulevicius, VTeX, Lithuania.
% TeX programming: Deimantas Galcius, VTeX, Lithuania.
% TeX programming: Edgaras Sakuras, VTeX, Lithuania.
% Requires Latex2e, ver.2000.06
%
\def\imsfmt@name{imsart}
\def\imsfmt@version{2023/05/19}
%
\ProvidesFile{imsart.sty}[\imsfmt@version\space IMS article style]
%
\RequirePackage{etoolbox}
%
% hyperref must be loaded after:
\@ifpackageloaded{hyperref}%
    {\@latex@error{Package 'hyperref' must be loaded after 'imsart'!}\@ehc}%
    {}
%
% Passoptions to hyperref:
\ifdefined\loadhyperrefoptions
\else
    \def\loadhyperrefoptions{%
        \PassOptionsToPackage{colorlinks,citecolor=blue,urlcolor=blue,%
            linkcolor=blue,linktocpage=true}{hyperref}%
        }
\fi
%
\loadhyperrefoptions
%
% General options:
%
% prints out \bid{doi={}}
\newif\if@print@bid@doi \@print@bid@doifalse
\DeclareOption{printbiddoi}{\global\@print@bid@doitrue}
%
% Put keywords as footnote
\newif\if@keywordsasfootnote
\DeclareOption{keywordsasfootnote}{\@keywordsasfootnotetrue}
%
% Put history as footnote
\newif\if@historyasfootnote
\DeclareOption{historyasfootnote}{\@historyasfootnotetrue}
%
% Put address as footnote
\newif\if@addressasfootnote
\DeclareOption{addressasfootnote}{\@addressasfootnotetrue}
%
% Put addresses at end of document
\newif\if@addressatend
\DeclareOption{addressatend}{\@addressatendtrue}
%
% Put "." after inline section headings:
\newif\if@autosecdot
\DeclareOption{autosecdot}{\@autosecdottrue}
\DeclareOption{noautosecdot}{\AtBeginDocument{\@autosecdotfalse}}
%
% do not print thanksref undefined marks
\newif\if@noundefthanksref
\DeclareOption{noundefthanksref}{\@noundefthanksreftrue}
%
\newif\if@front@back \@front@backfalse
\DeclareOption{frontback}{\global\@front@backtrue}
%
% Load amsmath style with correct settings:
\newif\if@load@amsmath
\DeclareOption{amsmath}{\@load@amsmathtrue}
%
% Load amsthm style with correct settings:
\newif\if@load@amsthm
\DeclareOption{amsthm}{\@load@amsthmtrue}
%
% Resets equation number in each section
\newif\if@imsart@seceqn
\DeclareOption{seceqn}{\@imsart@seceqntrue}
%
% Load amsmath with leqno option
\newif\if@amsmath@leqno
%
% Load natbib with correct settings:
\newif\if@load@natbib
\DeclareOption{natbib}{\@load@natbibtrue}
%
% When hyperref is loaded, makes a hyperlink only from year component of the cite command:
\newif\if@linksfromyear\@linksfromyearfalse
\DeclareOption{linksfromyear}{\@linksfromyeartrue}
%
\newif\if@imsart@numbers
\newif\if@imsart@authoryear
\newif\if@imsart@nameyear
\DeclareOption{numbers}{%
    \@imsart@numberstrue
    \PassOptionsToPackage{numbers}{natbib}%
    }
\DeclareOption{nameyear}{%
    \PassOptionsToPackage{authoryear}{natbib}%
    \@imsart@nameyeartrue
    \@imsart@authoryeartrue
    }
\DeclareOption{authoryear}{%
    \PassOptionsToPackage{authoryear}{natbib}%
    \@imsart@nameyeartrue
    \@imsart@authoryeartrue
    }
%
\newif\if@ims@rotating
\DeclareOption{rotating}{\@ims@rotatingtrue}
%
% enable writing to .aux
\newif\if@supertoc \@supertocfalse
\newif\if@changetoc \@changetocfalse
%
% for new thanksref syntax
\newif\if@updated@thanksref \@updated@thanksreffalse
%
% Information about journals
%
\def\set@generic{\def\@tempa{-generic}}
\AtEndOfPackage{\set@generic}
%
\DeclareOption{ba}{%
    \def\journal@id{-ba}%
    \def\journal@name{Bayesian Analysis}%
    \def\journal@issn@print{1936-0975}%
    \def\journal@issn@electronic{1931-6690}%
    \def\journal@url{https://bayesian.org/resources/bayesian-analysis/}%
    \@balayouttrue
    \@noundefthanksreftrue
    \@updated@thanksreftrue
    \@addressasfootnotetrue
    }
%
\DeclareOption{ps}{%
    \def\journal@id{-ps}%
    \def\journal@name{Probability Surveys }%
    \def\journal@issn{ISSN: 1549-5787}%
    \def\journal@url{https://imstat.org/journals-and-publications/probability-surveys/}%
    \@ejs@ps@ss@layouttrue
    }
%
% Information about journals
\DeclareOption{ss}{%
    \def\journal@id{-ss}%
    \def\journal@name{Statistics Surveys }%
    \def\journal@issn{ISSN: 1935-7516}%
    \def\journal@url{https://imstat.org/journals-and-publications/statistics-surveys/}%
    \@ejs@ps@ss@layouttrue
    }
%
% Information about journals
\DeclareOption{ejs}{%
    \def\journal@id{-ejs}%
    \def\journal@name{Electronic Journal of Statistics }%
    \def\journal@issn{ISSN: 1935-7524}%
    \def\journal@url{https://imstat.org/journals-and-publications/electronic-journal-of-statistics/}%
    \@ejs@ps@ss@layouttrue
    }
%
% Options for the IMS journals:
%
\DeclareOption{aap}{%
    \def\journal@id{-aap}%
    \def\journal@name{Submitted to the Annals of Applied Probability }%
    \def\journal@url{https://imstat.org/journals-and-publications/annals-of-applied-probability/}%
    \set@page@layout{405bp}{646bp}%
    \@twosidetrue
    \input{leqno.clo}% formula numbers at left
    \@amsmath@leqnotrue
    \@historyasfootnotetrue
    \@keywordsasfootnotetrue
    \@imslayouttrue
    \@autosecdottrue
    \@print@bid@doitrue
    \@updated@thanksreftrue
    }
%
\DeclareOption{aop}{%
    \def\journal@id{-aop}%
    \def\journal@name{Submitted to the Annals of Probability }%
    \def\journal@url{https://imstat.org/journals-and-publications/annals-of-probability/}%
    \set@page@layout{405bp}{646bp}%
    \@twosidetrue
    \input{leqno.clo}% formula numbers at left
    \@amsmath@leqnotrue
    \@historyasfootnotetrue
    \@keywordsasfootnotetrue
    \@imslayouttrue
    \@autosecdottrue
    \@print@bid@doitrue
    \@updated@thanksreftrue
    }
%
\DeclareOption{aos}{%
    \def\journal@id{-aos}%
    \def\journal@name{Submitted to the Annals of Statistics }%
    \def\journal@url{https://imstat.org/journals-and-publications/annals-of-statistics/}%
    \set@page@layout{405bp}{646bp}%
    \@twosidetrue
    \input{leqno.clo}% formula numbers at left
    \@amsmath@leqnotrue
    \@historyasfootnotetrue
    \@keywordsasfootnotetrue
    \@imslayouttrue
    \@autosecdottrue
    \@print@bid@doitrue
    \@updated@thanksreftrue
    }
%
\DeclareOption{aoas}{%
    \def\journal@id{-aoas}%
    \def\journal@name{Submitted to the Annals of Applied Statistics }%
    \def\journal@url{https://imstat.org/journals-and-publications/annals-of-applied-statistics/}%
    \set@page@layout{405bp}{646bp}%
    \@twosidetrue
    \input{leqno.clo}% formula numbers at left
    \@amsmath@leqnotrue
    \@historyasfootnotetrue
    \@keywordsasfootnotetrue
    \@imslayouttrue
    \@autosecdottrue
    \@print@bid@doitrue
    \@updated@thanksreftrue
    \AtBeginDocument{%
        \@ifpackagewith{natbib}{numbers}{%
            \@latex@error{Only author-year citations are allowed!
                Please use the option 'authoryear' of 'natbib' package}{}%
            }{}%
        }%
    }
%
\DeclareOption{sts}{%
    \def\journal@id{-sts}%
    \def\journal@name{Submitted to Statistical Science }%
    \def\journal@url{https://imstat.org/journals-and-publications/statistical-science/}%
    \set@page@layout{408.62625pt}{702.75pt}% twocol wd - 10pc
    \@twosidetrue
    \input{leqno.clo}% formula numbers at left
    \@amsmath@leqnotrue
    \@stslayouttrue
    \@twocolumntrue
    \@print@bid@doitrue
    \AtEndPreamble{\if@twocolumn\set@page@layout{528.62625pt}{702.75pt}\fi}%
    }
%
\DeclareOption{bj}{%
    \def\journal@id{-bj}%
    \def\journal@name{Submitted to Bernoulli }%
    \def\journal@url{http://www.bernoulli-society.org/index.php/publications/bernoulli-journal/bernoulli-journal}%
    \def\journal@issn{1350-7265}%
    \set@page@layout{34pc}{574pt}%
    \@twosidetrue
    \@bjlayouttrue
    \@autosecdottrue
    \@updated@thanksreftrue
    \@print@bid@doitrue
    \@load@amsthmtrue
    \@load@amsmathtrue
    \@load@natbibtrue
    \@imsart@showframetrue
    }
%
\DeclareOption{aihp}{%
    \def\journal@id{-aihp}%
    \def\journal@name{Submitted to the Annales de l'Institut Henri Poincar\'e - 
        Probabilit\'es et Statistiques}%
    \def\journal@url{https://imstat.org/journals-and-publications/annales-de-linstitut-henri-poincare/}%
    \set@page@layout{169.475mm}{56pc}%
    \@twosidetrue
    \input{leqno.clo}% formula numbers at left
    \@amsmath@leqnotrue
    \@aihplayouttrue
    \@updated@thanksreftrue
    \@print@bid@doitrue
    \AtBeginDocument{%
        \@ifpackagewith{natbib}{authoryear}{%
            \@latex@error{Only numerical citations are allowed!
                Please use the option 'numbers' of 'natbib' package}{}%
            }{}%
        }%
    }
%
\DeclareOption{bjps}{%
    \def\journal@id{-bjps}%
    \def\journal@name{Submitted to the Brazilian Journal of Probability and Statistics}%
    \def\journal@url{https://imstat.org/journals-and-publications/brazilian-journal-of-probability-and-statistics/}%
    \set@page@layout{405pt}{646pt}%
    \@twosidetrue
    \@historyasfootnotetrue
    \@keywordsasfootnotetrue
    \@bjpslayouttrue
    \@updated@thanksreftrue
    \@print@bid@doitrue
    \AtBeginDocument{%
        \@ifpackagewith{natbib}{numbers}{%
            \@latex@error{Only author-year citations are allowed!
                Please use the option 'authoryear' of 'natbib' package}{}%
            }{}%
        }%
    }
%
%% Layouts:
% IMS journals AAP, AOP, AOS layout:
\newif\if@imslayout \@imslayoutfalse
%
% IMS STS journal layout:
\newif\if@stslayout \@stslayoutfalse
%
% EJS, PS, SS journals layout:
\newif\if@ejs@ps@ss@layout \@ejs@ps@ss@layoutfalse
%
% BA journal layout:
\newif\if@balayout \@balayoutfalse
%
% BS BJ journal layout:
\newif\if@bjlayout \@bjlayoutfalse
%
% AIHP journal layout:
\newif\if@aihplayout \@aihplayoutfalse
%
% BJPS journal layout:
\newif\if@bjpslayout \@bjpslayoutfalse
%
% Spacing
\DeclareOption{doublespacing}{\doublespacing}
\DeclareOption{singlespacing}{\singlespacing}
%
\def\singlespacing{\renewcommand{\baselinestretch}{}\large\normalsize}
\def\doublespacing{\renewcommand{\baselinestretch}{1.6}\large\normalsize}
%
% Do not print id line at bottom of the page:
\DeclareOption{noinfoline}{\AtBeginDocument{\let\info@line\@empty}}
\DeclareOption{infoline}{\AtBeginDocument{\let\info@line\infoline@text}}
%
% Put lines numbers in margins
\newif\ifnumberlines@ \numberlines@false
\DeclareOption{linenumbers}{\numberlines@true}
\DeclareOption{nolinenumbers}{\numberlines@false}
%
% Put frame on page layout
\newif\if@imsart@showframe \@imsart@showframefalse
\DeclareOption{showframe}{\@imsart@showframetrue}
\DeclareOption{noshowframe}{\@imsart@showframefalse}
%
% Combined options:
%
% Use this option for submission for pier review:
\DeclareOption{submission}{%
    \singlespacing
    \AtBeginDocument{\let\info@line\infoline@text}%
    \numberlines@false
    }
%
% use this option for pre-edition
\DeclareOption{preedit}{%
    \doublespacing
    \AtBeginDocument{%
        \let\info@line\@empty
        \set@preedit@page@layout
        }%
    \numberlines@false
    }
%
% for preprint or supplement articles - removes journal info
\newif\if@imsart@preprint \@imsart@preprintfalse
\ifcsundef{imsart@preprint@settings}%
    {%
        \def\imsart@preprint@settings{%
            \global\@imsart@preprinttrue
            \let\info@line\@empty
            \numberlines@false
            }%
    }%
    {}
\DeclareOption{preprint}{%
    \imsart@preprint@settings
    }
%
% Initiate some info:
\def\journal@name{}
\def\journal@url{}
\def\journal@issn{}
\def\journal@id{-generic}
\def\paper@url{}
\def\info@line{}
\def\copyrightowner@text{}
\def\msc@url{https://mathscinet.ams.org/mathscinet/msc/msc2020.html}
%
% set@page@layout
%
% \set@page@layout{\textwidth}{\textheight}
\def\set@page@layout#1#2{%
    \setlength\textwidth{#1}%
    \@settopoint\textwidth
    \setlength\textheight{#2}%
    \@settopoint\textheight
    %
    % make side margins equal:
    \setlength\@tempdima{\paperwidth}%
    \addtolength\@tempdima{-\textwidth}%
    \setlength\oddsidemargin{.5\@tempdima}%
    \addtolength\oddsidemargin{-1in}%
    \setlength\evensidemargin{\oddsidemargin}%
    \@settopoint\oddsidemargin
    \@settopoint\evensidemargin
    %
    % topmargin
    \setlength\topmargin{\paperheight}%
    \addtolength\topmargin{-2in}%
    \addtolength\topmargin{-\headheight}%
    \addtolength\topmargin{-\headsep}%
    \addtolength\topmargin{-\textheight}%
    \addtolength\topmargin{-\footskip}% this might be wrong!
    \addtolength\topmargin{-.5\topmargin}%
    \@settopoint\topmargin
    %
    % check if tw and th are'nt altered
    \xdef\imsart@check@textwidth{\the\textwidth}%
    \xdef\imsart@check@textheight{\the\textheight}%
    \AtEndDocument{%
        \@ifundefined{do@not@check@textbox@alter}%
            {%
                \ifdim\textwidth=\imsart@check@textwidth
                \else
                    \PackageError{imsart}{\string\textwidth\space cannot be altered}\@ehc
                \fi
                \ifdim\textheight=\imsart@check@textheight
                \else
                    \PackageError{imsart}{\string\textheight\space cannot be altered}\@ehc
                \fi
            }%
            {}%
        }%
    }
%
\def\set@preedit@page@layout{%
    \setlength\paperwidth{\textwidth}%
    \addtolength\paperwidth{2in}%
    \setlength\oddsidemargin{0in}%
    \let\evensidemargin\oddsidemargin
    \setlength\paperheight{\textheight}%
    \addtolength\paperheight{2in}%
    \addtolength\paperheight{\headheight}%
    \addtolength\paperheight{\headsep}%
    \setlength\topmargin{0in}%
    }
%
% Load imsart.cnf with additional options:
\@input{\imsfmt@name.cnf}
%
% Execute options
\ExecuteOptions{}
\ProcessOptions
%
% dimensions
%
\setlength\parindent{12\p@}
\setlength\headsep{14\p@}
\setlength\footskip{14\p@}
\if@aihplayout
    \setlength\footskip{24\p@}
\fi
\if@bjlayout
    \setlength\parindent{10\p@}
    \setlength\footskip{24\p@}
\fi
%
\setlength\smallskipamount{6\p@ \@plus 1\p@ \@minus 1\p@}
\setlength\medskipamount{12\p@ \@plus 3\p@ \@minus 3\p@}
\setlength\bigskipamount{18\p@ \@plus 3\p@ \@minus 3\p@}
%
% setpkgattr, getpkgattr, do@option@list
%
\def\sep@key@value#1=#2/?/#3{\setpkgattr{#3}{#1}{#2}}
\def\do@option@list#1#2{%
    \@for\curr@option:={#2}\do{%
        \expandafter\sep@key@value\curr@option/?/{#1}\relax
        }%
    }
\def\pkgattr@namedef{\long\gdef}
\def\pkgattr@namedef@def#1{\expandafter\pkgattr@namedef\csname #1\endcsname}
\protected\def\setpkgattr{\@ifnextchar[{\@setpkgattr}{\@@setpkgattr}}
\protected\def\getpkgattr#1#2{\csname #1@#2\endcsname}
\long\def\@setpkgattr[#1]#2#3#4{%
    \pkgattr@namedef@def{#2@#3}{#4}%
    }
\long\def\@@setpkgattr#1#2#3{%
    \pkgattr@namedef@def{#1@#2}{#3}%
    }
%
% newpseudoenvironment
% same as \newenvironment, but new environment do not have additional groups \bgroup \egroup
% (i.e. all definitions are not local
%
\let\org@begin\begin
\let\org@end\end
\def\begin#1{%
    \@ifundefined{pseudo@#1}%
        {\org@begin{#1}}%
        {\csname pseudo@#1\endcsname[0]\relax}%
    }
\def\end#1{%
    \@ifundefined{pseudo@#1}%
        {\org@end{#1}}%
        {\csname pseudo@#1\endcsname[1]\relax}%
    }
\def\newpseudoenvironment#1#2#3{%
    \expandafter\gdef\csname pseudo@#1\endcsname[##1]{%
        \relax
        \ifcase##1\relax\def\@@next@@{#2}\or\def\@@next@@{#3}\else\let\@@next@@\relax\fi
        \@@next@@
        }%
    }
%
% pubyear, volume, paperno
%
\def\pubyear#1{\gdef\@pubyear{(#1) }\gdef\@copyrightyear{#1 }}
\def\@pubyear{}
\def\@copyrightyear{}
%
\def\volumetitle#1{\gdef\volume@title{#1 }}
%
\def\volume#1{\gdef\@volume{Vol. #1 }}
\gdef\@volume{}
%
\def\issue#1{\gdef\@issue{No. #1 }}
\gdef\@issue{}
%
\def\paperno#1{\gdef\@paperno{Paper no. #1 }}
\gdef\@paperno{00}
%
% firstpage, lastpage, pagerange
%
\newcounter{firstpage}
\newcounter{lastpage}
%
\def\firstpage#1{%
    \def\@tempa{#1}%
    \ifx\@tempa\@empty
    \else
        \gdef\@firstpage{#1}%
        \global\c@firstpage=#1%
        \global\c@lastpage=#1%
        \global\c@page=#1 \ignorespaces\fi
    }
%
\def\lastpage#1{%
    \def\@tempa{#1}%
    \ifx\@tempa\@empty
    \else
        \gdef\@lastpage{#1}%
        \global\c@lastpage=#1%
        \ignorespaces
    \fi
    }
%
\def\pagerange@sep{--}
%
\def\set@pagerange{%
    \ifnum\c@firstpage=0%
    \else
        \ifnum\c@firstpage=\c@lastpage
            \gdef\@pagerange{\thefirstpage}%
        \else
            \gdef\@pagerange{\thefirstpage\pagerange@sep\thelastpage}%
        \fi
    \fi
    }
%
\def\@pagerange{}
%
\def\pagenumbering#1{%
    \gdef\thefirstpage{\csname @#1\endcsname\c@firstpage}%
    \gdef\thelastpage{\csname @#1\endcsname\c@lastpage}%
    \gdef\thepage{\csname @#1\endcsname\c@page}%
    }
%
% hyperref redefines \pagenumbering, so we must override hyperref definition:
\let\ims@pagenumbering\pagenumbering
%
% check last page
\newbool{checklpage}
\def\check@last@page{%
    \ifbool{checklpage}%
        {%
            \ifnum0\number\c@lastpage>0\relax
                \ifnum0\number\c@lastpage=\c@page
                \else
                    \special{mt:error Wrong lastpage!}%
                    \@latex@error{Wrong lastpage: set to \number\c@lastpage, 
                        should be \the\c@page!}\@ehc
                \fi
            \fi
        }%
        {}%
    }
\AtEndDocument{\check@last@page}
%
% startlocaldefs, endlocaldefs
%
\def\startlocaldefs{\makeatletter}
\def\endlocaldefs{\makeatother}
%
% thanksref, thanksmark, thankslabel, thankstext
% to be safe with hyperref we will use original LaTeX definitions:
%
\def\saferef#1{\expandafter\safe@setref\csname r@#1\endcsname\@firstoftwo{#1}}
\let\safe@setref\@setref
%
\def\safelabel#1{%
    \@bsphack
    \protected@write\@auxout{}%
        {\string\thanksnewlabel{#1}{{\@currentlabel}{\thepage}}}%
    \@esphack
    }
%
\long\def\safe@footnotetext#1{\insert\footins{%
    \reset@font\footnotesize
    \interlinepenalty\interfootnotelinepenalty
    \splittopskip\footnotesep
    \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
    \hsize\columnwidth \@parboxrestore
    \color@begingroup
        \def\@thefnmark{}%
        \@makefntext{%
            \rule\z@\footnotesep\ignorespaces #1\@finalstrut\strutbox}%
    \color@endgroup
    }}%
%
\long\def\orig@footnotetext#1{\insert\footins{%
    \reset@font\footnotesize
    \interlinepenalty\interfootnotelinepenalty
    \splittopskip\footnotesep
    \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
    \hsize\columnwidth \@parboxrestore
    \protected@edef\@currentlabel{%
        \csname p@footnote\endcsname\@thefnmark
    }%
    \color@begingroup
        \@makefntext{\rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
    \color@endgroup
    }}%
%
\let\thanksnewlabel\newlabel
%
% we want to use various counters:
\def\usethankscounter#1{%
    \@ifundefined{current@thankscounter}%
        {\gdef\previous@thankscounter{#1}}%
        {\xdef\previous@thankscounter{\current@thankscounter}}%
    \def\current@thankscounter{#1}%
    }
%
\def\restorethankscounter{\xdef\current@thankscounter{\previous@thankscounter}}
%
\newcounter{thanks}
\def\thethanks{\@fnsymbol\c@thanks}
\usethankscounter{thanks}
%
% address ref:
\newcounter{addressref}
\def\theaddressref{\arabic{addressref}}
%
\def\thanksmark@fmt#1{\@textsuperscript{\normalfont#1}}
\def\thanksref@sep{,}
%
% hooks for the hyperref:
\def\thankref@hyperlink#1{\saferef{#1thanks}}
\def\thanks@hypertarget#1{}
%
% printing the marks
\DeclareRobustCommand{\thanksref}{%
    \@ifnextchar[{\@tempswatrue\@thanksref}{\@tempswafalse\@thanksref[]}%
    }
\let\orig@thanksref\thanksref
%
\def\@thanksref[#1]#2{%
    \if@tempswa% []
        \thanksmark@fmt{#1}%
    \else
        \let\@tempa\@empty
        \thanksmark@fmt{\@for\@tempb:=#2\do{%
            \csname thanksref@hook\endcsname
            \@tempa
            \let\@tempa\thanksref@sep
            \edef\@tempb{\expandafter\@firstofone\@tempb\@empty}%
            \thankref@hyperlink{\@tempb}%
            }}%
    \fi
    }
%
% form and print mark
\def\thanksmark{\@ifnextchar[{\@tempswatrue\@thanksmark}{\@tempswafalse\@thanksmark[]}}
%
\def\@thanksmark[#1]#2{%
    \@thankslabel[#1]{#2}%
    \thanksmark@fmt{\expandafter\saferef{#2thanks}\thanks@hypertarget{#2}}%
    }
%
% form only mark
\def\thankslabel{\@ifnextchar[{\@tempswatrue\@thankslabel}{\@tempswafalse\@thankslabel[]}}
%
\def\@thankslabel[#1]#2{%
    \if@tempswa% []
        \protected@edef\@currentlabel{#1}%
    \else
        \refstepcounter{\current@thankscounter}%
    \fi
    \@ifundefined{temp@label@#2thanks}%
        {\global\@namedef{temp@label@#2thanks}{}\safelabel{#2thanks}}%
        {}%
    }
%
% form a mark and place text in \@thanks:
\def\thankstext{\@ifnextchar[{\@tempswatrue\@thankstext}{\@tempswafalse\@thankstext[]}}
%
\def\@thankstext[#1]#2#3{%
    \@thankslabel[#1]{#2}%
    \protected@xdef\@thanks{\@thanks\protect\thanks@thefnmark{#2thanks}%
    \protect\orig@footnotetext{\thanks@hypertarget{#2}#3}}%
    }
%
\def\thanks@thefnmark#1{\begingroup\unrestored@protected@xdef\@thefnmark{\saferef{#1}}\endgroup}
%
% ST macro for creation customized enumeration system
\def\setvaluelist#1#2{%
    \@tempcnta=0\relax
    \@for\@curr@val:=#2\do{%
        \advance\@tempcnta by 1\relax
        \expandafter\protected@xdef\csname #1@item@\the\@tempcnta\endcsname{\@curr@val}%
        }%
    \expandafter\protected@xdef\csname #1@item@0\endcsname{\the\@tempcnta}%
    }
\xdef\getitemvalue#1#2{\noexpand\csname #1@item@#2\endcsname}
%
% \ead, \printead
%
\RequirePackage{keyval}
%
\def\email@text{e-mail: }
\def\url@text{url: }
\def\fullurl@text{url: }
\def\ead@sep{;~}
\let\ead@size\relax
\def\printead@fmt#1{#1}
%
\newcounter{emailref}
\setvaluelist{emailmarks}{*,**,\textdagger,\textdaggerdbl}
\def\theemailref{\getitemvalue{emailmarks}{\the\c@emailref}}
\define@key{ead}{mark}[true]{%
    \usethankscounter{emailref}%
    \thankslabel{\ead@label}%
    }
%
\RequirePackage{ifpdf}
\def\orcid@base{https://orcid.org/}
\def\orcid@special@pdf#1{\special{pdf: #1}}
\def\orcid@pic@pdf{%
    \hbox to 9bp{%
        \vrule width \z@ height 9bp%
        \orcid@special@pdf{% 
            q 1 0 0 -1 0 9 cm q 0.65098 0.807843 0.223529 rg 9 4.5 m 9 
            6.984 6.984 9 4.5 9 c 2.016 9 0 6.984 0 4.5 c 0 2.016 2.016 
            0 4.5 0 c 6.984 0 9 2.016 9 4.5 c h 9 4.5 m f 1 1 1 rg 2.492 
            2.781 0.543 3.766 re f 3.828 2.781 m 5.289 2.781 l 6.684 
            2.781 7.297 3.777 7.297 4.664 c 7.297 5.633 6.539 6.551 
            5.297 6.551 c 3.828 6.551 l h 4.371 6.062 m 5.23 6.062 l 
            6.457 6.062 6.738 5.129 6.738 4.664 c 6.738 3.91 6.258 3.27 
            5.203 3.27 c 4.371 3.27 l h 4.371 6.062 m f 3.117 1.996 m 
            3.117 2.191 2.961 2.352 2.762 2.352 c 2.566 2.352 2.41 2.191 
            2.41 1.996 c 2.41 1.801 2.566 1.641 2.762 1.641 c 2.961 
            1.641 3.117 1.805 3.117 1.996 c h 3.117 1.996 m f Q Q
            }\hss
        }%
    }
\def\orcid@pic@ps{%
    \hbox to 9bp{%
        \vrule width \z@ height 9bp%
        \special{" gsave 0 0 9 9 rectclip
            1 0 0 -1 0 9 6 array astore concat gsave 0.65098 0.807843 0.223529 setrgbcolor
            9 4.5 moveto 9 6.984 6.984 9 4.5 9 curveto 2.016 9 0 6.984 0 4.5 curveto 
            0 2.016 2.016 0 4.5 0 curveto 6.984 0 9 2.016 9 4.5 curveto closepath
            9 4.5 moveto fill 1 setgray 2.492 2.781 0.543 3.766 exch dup neg 3 1 roll 5 3 roll 
            moveto 0 rlineto 0 exch rlineto 0 rlineto closepath fill
            3.828 2.781 moveto 5.289 2.781 lineto 6.684 2.781 7.297 3.777 7.297 4.664 curveto 
            7.297 5.633 6.539 6.551 5.297 6.551 curveto 3.828 6.551 lineto closepath
            4.371 6.062 moveto 5.23 6.062 lineto 6.457 6.062 6.738 5.129 6.738 4.664 curveto 
            6.738 3.91 6.258 3.27 5.203 3.27 curveto 4.371 3.27 lineto closepath
            4.371 6.062 moveto fill 3.117 1.996 moveto 3.117 2.191 2.961 2.352 2.762 2.352 curveto 
            2.566 2.352 2.41 2.191 2.41 1.996 curveto 2.41 1.801 2.566 1.641 2.762 1.641 curveto 
            2.961 1.641 3.117 1.805 3.117 1.996 curveto closepath
            3.117 1.996 moveto fill grestore grestore
            }\hss
        }%
    }
\ifpdf
    \let\orcid@pic\orcid@pic@pdf
\else
    \ifdefined\XeTeXversion
        \def\orcid@special@pdf#1{\special{pdf:literal #1}}
        \let\orcid@pic\orcid@pic@pdf
    \else
        \let\orcid@pic\orcid@pic@ps
    \fi
\fi
\def\orcid#1{%
    \ifcsundef{author@\the\c@author @orcid}%
        {\csxdef{author@\the\c@author @orcid}{#1}}%
        {%
            \PackageError{imsart}{author \the\c@author\space contains more than one orcid}\@ehc
        }%
    }
\def\printorcid{%
    \ifcsundef{author@\the\c@author @orcid}%
        {}%
        {%
            \raisebox{-1.3\p@}[\z@][\z@]{{%
                \def\null{}%
                \ims@href
                    {\orcid@base\csname author@\the\c@author @orcid\endcsname}%
                    {\orcid@pic}%
                }}%
        }%
    }
\if@updated@thanksref
    \setvaluelist{emailmarks}{*,\textdagger,\textdaggerdbl,%
        \textsection,\textparagraph,||,**,\textdagger\textdagger,%
        \textdaggerdbl\textdaggerdbl
        }
    \define@key{ead}{mark}[true]{%
        \csxdef{ead@\ead@label @mark}{\the\c@author}%
        \ifcsundef{author@\the\c@author @ead@marks}%
            {\csxdef{author@\the\c@author @ead@marks}{\ead@label}}%
            {\csxappto{author@\the\c@author @ead@marks}{,\ead@label}}%
        }
    \if@balayout
    \else
        \def\theemailref{\@alph{\the\c@emailref}}
        \define@key{ead}{mark}[true]{}
        \def\ead@type@email@posthook{%
            \csxdef{ead@\ead@label @mark}{\the\c@author}%
            \ifcsundef{author@\the\c@author @ead@marks}%
                {\csxdef{author@\the\c@author @ead@marks}{\ead@label}}%
                {\csxappto{author@\the\c@author @ead@marks}{,\ead@label}}%
            }
        \let\ead@type@url@posthook\ead@type@email@posthook
        \let\ead@type@fullurl@posthook\ead@type@email@posthook
    \fi
\fi
%
% we are using keyval package
\define@key{ead}{email}[true]{\def\ead@type{email}}
\define@key{ead}{url}[true]{\def\@tempa{fullurl}\ifx\ead@type\@tempa\else\def\ead@type{url}\fi}
\define@key{ead}{label}{\def\ead@label{#1}}
%
\define@key{ead}{text}{%
    \bgroup
        \def\\{\string\break}%
        \def\break{\string\break}%
        \protected@edef\@currentlabel{#1}%
        \safelabel{\ead@label @\ead@type text}%
    \egroup
    }
%
\define@key{ead}{nopdflink}[true]{%
    \protected@edef\@currentlabel{nolink}%
    \safelabel{\ead@label @nopdflink}%
    }
%
\DeclareRobustCommand\ead[2][label= ,email]{{%
    \def\ead@type{email}% default
    \checkead@prefix#2://\end
    \def\texttildelow{\noexpand\texttildelow}%
    \def~{\string~}%
    \setkeys{ead}{#1}%
    \protected@edef\@currentlabel{#2}%
    \safelabel{\ead@label @\ead@type}%
    \csuse{ead@type@\ead@type @posthook}%
    }}
%
\def\checkead@prefix#1://#2\end{\ifx.#2.\else\def\ead@type{fullurl}\fi}
%
\newif\ifnot@ead@star
\newif\if@printead@opt
%
\def\printead@presep{}
\def\printead@text{}
\define@key{printead}{text}{\def\printead@text{#1}}
\define@key{printead}{presep}{\def\printead@presep{#1}}
%
\DeclareRobustCommand{\printead}{%
    \@ifstar{\not@ead@starfalse\@printead}{\not@ead@startrue\@printead}%
    }
%
\def\@printead{%
    \@ifnextchar[{\@printead@opttrue\@@printead}{\@printead@optfalse\@@printead[]}%
    }
%
\def\@@printead[#1]#2{{%
    \if@printead@opt%[]
        \setkeys{printead}{#1}%
        \printead@presep
        \ifx\printead@text\@empty
            \@printead@optfalse
        \else
            \def\safe@href@text{\printead@text}%
            \not@ead@starfalse
        \fi
    \fi
    \let\prev@ead@text\relax
    \let\@ead@sep\relax
    \let\ead@text\relax
    \let\ead@prefix\relax
    \def\ead@type{}%
    \@tempcnta=0%
    \let\sv@ims@href\ims@href
    \printead@fmt{%
        \@for\ead@ref:=#2\do{%
            \advance\@tempcnta by 1%
            \let\ims@href\sv@ims@href
            \@ead@sep\let\@ead@sep\ead@sep
            \@ifundefined{r@\ead@ref @nopdflink}%
                {}%
                {\def\ims@href##1##2{##2}}%
            \@ifundefined{r@\ead@ref @email}%
                {}%
                {\let\ead@text\email@text\def\ead@type{email}\def\ead@prefix{mailto:}}%
            \@ifundefined{r@\ead@ref @url}%
                {}%
                {\let\ead@text\url@text\def\ead@type{url}\def\ead@prefix{http://}}%
            \@ifundefined{r@\ead@ref @fullurl}%
                {}%
                {\let\ead@text\fullurl@text\def\ead@type{fullurl}\def\ead@prefix{}}%
            \ifx\prev@ead@text\ead@text
                \let\ead@text\relax
            \fi
            \csname printead@hook\endcsname
            \if@printead@opt
                \ifnum\@tempcnta>1%
                    \@latex@error{Command \@backslashchar printead[]{e1} could 
                        have only one parameter "e1"!}\@eha
                \fi
            \else
                \@ifundefined{r@\ead@ref @\ead@type text}%
                    {%
                        \def\ims@href@text{%
                            \@ifundefined{r@\ead@ref thanks}%
                                {}%
                                {\thanksref{\ead@ref}}%
                            \saferef{\ead@ref @\ead@type}%
                            }%
                    }%
                    {%
                        \def\ims@href@text{%
                            \@ifundefined{r@\ead@ref thanks}%
                                {}%
                                {\thanksref{\ead@ref}}%
                            \saferef{\ead@ref @\ead@type text}%
                            }%
                    }%
            \fi
            \bgroup
                \def\null{}%
                \@ifundefined{ead@\ead@ref @mark}%
                    {}%
                    {%
                        \usethankscounter{emailref}%
                        \thanksmark{\ead@ref}%
                        \restorethankscounter
                        \cslet{r@\ead@ref thanks}\relax
                    }%
                \ifnot@ead@star
                    \ead@text
                \fi
                \ead@size
                \ifcsundef{r@\ead@ref @\ead@type}%
                    {\ims@href@text}%
                    {%
                        \ims@href{\ead@prefix\saferef{\ead@ref @\ead@type}}{\csuse{ead@\ead@type @fmt}{\ims@href@text}}%
                    }%
            \egroup
            \@ifundefined{ead@text}%
                {}%
                {\let\prev@ead@text\ead@text}%
            }%
        }%
    }}
%
% \copyrightowner, \corref
\def\copyrightowner#1{\def\copyrightowner@text{#1}}
%
% for corresponding author
\def\corref#1{}
%
% normaltext, nohyphen, today
%
% normal text (justify)
\def\normaltext{%
    \let\\=\@normalcr
    \leftskip=\z@
    \@rightskip=\z@
    \rightskip=\@rightskip
    \parfillskip=\@flushglue
    }
%
% to switch off hyphenation
\def\nohyphen{%
    \pretolerance=\@M
    \tolerance=\@M
    \hyphenpenalty=\@M
    \exhyphenpenalty=\@M
    }
%
% \@ifemptyhbox
\def\@ifnonempty#1{%
    \setbox\@tempboxa\hbox{\ignorespaces #1}%
    \ifdim\wd\@tempboxa>1pt #1\fi
    }
%
\@ifundefined{check@head@line@length}%
    {\let\check@head@line@length\@gobbletwo}%
    {}
% pagestyle{imsheadings} \thispagestyle{copyright}
\if@twoside
%
    \def\ps@imsheadings{%
        \def\@oddfoot{\hfill\info@line}%
        \let\@evenfoot\@oddfoot
        \def\check@head@line@length@even{%
            \runninghead@size {\pagenumber@size 000\quad}%
            \evenhead@fmt{\leftmark}{\pagenumber@size\quad 000}%
            }%
        \def\@evenhead{%
            \runninghead@size
            \rlap{\pagenumber@size\thepage}\evenhead@fmt{\leftmark}%
            \check@head@line@length{\check@head@line@length@even}{author}%
            }%
        \def\check@head@line@length@odd{%
            \runninghead@size{\pagenumber@size 000\quad}%
            \oddhead@fmt{\rightmark}{\pagenumber@size\quad 000}%
            }%
        \def\@oddhead{%
            \runninghead@size
            \oddhead@fmt{\rightmark}\llap{\pagenumber@size\thepage}%
            \check@head@line@length{\check@head@line@length@odd}{title}%
            }%
        }
\else
    \def\ps@imsheadings{%
        \def\@oddfoot{\hfill\info@line}%
        \let\@evenfoot\@oddfoot
        \def\@evenhead{%
            \runninghead@size\hfill\leftmark/\rightmark\hfill
            \llap{\pagenumber@size\thepage}%
            }%
        \def\@oddhead{%
            \runninghead@size\hfill\leftmark/\rightmark\hfill
            \llap{\pagenumber@size\thepage}%
            }%
        }
\fi
%
\def\ps@copyright{%
    \let\@mkboth\@gobbletwo
    \def\@evenhead{\parbox[t]{\textwidth}{\copyright@size\copyright@text}}%
    \let\@oddhead\@evenhead
    \def\@oddfoot{\hfill\pagenumber@size\thepage\hfill\llap{\info@line}}%
    \let\@evenfoot\@oddfoot
    }
%
\def\evenhead@fmt#1{\hfill#1\hfill}
\def\oddhead@fmt#1{\hfill#1\hfill}
%
% url@fmt
%
\def\journalurl#1{\def\journal@url{#1}}
\def\paperurl#1{\def\paper@url{#1}}
%
% DOI
%
\def\doi#1{%
    \gdef\@doi{#1}%
    \gdef\doi@text{\url@fmt{DOI: }{\ttfamily}{#1}{\doi@base\@doi}}%
    }
%
\let\@doi\relax
%
\def\doi@base{https://doi.org/}
\@onlypreamble\doi
%
\protected\def\relateddoi{\@ifnextchar[{\@tempswatrue\@relateddoi}{\@tempswafalse\@relateddoi[]}}
\def\@relateddoi[#1]#2#3{\protect\ims@href{\doi@base#3}{#3}}
%
\protected\def\relateddois{%
    \@ifnextchar[{\@tempswatrue\@relateddois}{\@tempswafalse\@relateddois[]}%
    }
\def\@relateddois[#1]#2#3{%
    \@thankslabel[#1]{#2}%
    \bgroup
        \protected@xdef\@thanks{\@thanks\protect\thanks@thefnmark{#2thanks}%
        \protect\@footnotetext{\thanks@hypertarget{#2}#3}}%
    \egroup
    }
%
% arXiv
%
\def\arxiv#1{%
    \gdef\@arxiv{#1}%
    \thankstext[]{fm@arXiv}{\protect\url@fmt{arXiv: }{}{#1}{\arxiv@base\@arxiv}}%
    }%
%
\let\@arxiv\relax
\@onlypreamble\arxiv
%
% https://arxiv.org/abs/math.PR/0603300
\def\arxiv@base{https://arxiv.org/abs/}
%
% {url}{text}
\def\ims@href#1#2{#2}
\def\ims@nolinkurl#1{#1}
%
% {prefix}{font}{text}{url}
\def\url@fmt#1#2#3#4{%
    \edef\@tempa{#3}%
    \ifx\@tempa\@empty
    \else
        #1{#2\ims@href{#4}{#3}}%
    \fi
    }
%
% LIST ENVIRONMENTS
%
\parsep=\z@
\topsep=\smallskipamount
\partopsep=\z@
\itemsep=\z@
\labelsep=.5em
%
\def\@listI{%
    \leftmargin=\leftmargini
    \parsep=\z@
    \topsep=\smallskipamount
    \itemsep=\z@
    }
%
\def\list@parindent{1pc}
%
% quotation
\let\quotation@size\footnotesize
\def\quotation@itemindent{\list@parindent}
\def\quotation@parindent{\list@parindent}
\def\quotation@leftmargin{\list@parindent}
\let\quotation@rightmargin\z@
\let\quotation@topsep\smallskipamount
%
\def\quotation{%
    \list{}{%
        \quotation@size
        \listparindent=\quotation@parindent
        \itemindent=\quotation@itemindent
        \rightmargin=\quotation@rightmargin
        \leftmargin=\quotation@leftmargin
        \partopsep=\z@
        \topsep=\quotation@topsep
        \parsep=\z@
        \csname quotation@hook\endcsname
        }%
        \item[\Q@strut]\relax
    }
\def\endquotation{\endlist}
%
\def\Q@strut{\leavevmode\hbox{\vrule height9pt depth1pt width0pt}}
%
% quote
\let\quote@size\footnotesize
\def\quote@indent{\z@}
\def\quote@leftmargin{2pc}
\def\quote@rightmargin{2pc}
\let\quote@topsep\smallskipamount
%
\def\quote{%
    \list{}{%
        \quote@size
        \listparindent=\quote@indent
        \itemindent=\listparindent
        \rightmargin=\quote@rightmargin
        \leftmargin=\quote@leftmargin
        \partopsep=\z@
        \topsep=\quote@topsep
        \parsep=\z@
        \csname quote@hook\endcsname
        }%
    \item\relax
    }
\def\endquote{\endlist}
%
% table, figure
%
\newdimen\tablewidth \tablewidth\textwidth
%
\def\fnum@table{\tablename~\thetable}
\setlength\belowcaptionskip{4\p@}
%
\renewenvironment{table}
    {%
        \let\@makecaption\@maketablecaption
        \csname starttable@hook\endcsname
        \tablewidth=\hsize
        \@float{table}%
    }
    {\end@float}
\renewenvironment{table*}
    {%
        \let\@makecaption\@maketablecaption
        \csname starttable@hook\endcsname
        \tablewidth=\hsize
        \@dblfloat{table}%
    }
    {\end@dblfloat}
%
\long\def\@maketablecaption#1#2{%
    \tablecaption@shape\tablecaption@size
    {\tablename@size #1}\tablename@skip #2\par
    \vskip\belowcaptionskip
    }
%
\setpkgattr{tablecaption}{shape}{\centering}
\setpkgattr{tablecaption}{size}{\footnotesize\itshape}
\setpkgattr{tablename}{size}{\scshape}
\setpkgattr{tablename}{skip}{\endgraf}
%
% figure : use \@makecaption:
\renewcommand\figurename{Fig}
%
\long\def\@makecaption#1#2{%
    \vskip\abovecaptionskip
    \figurecaption@size
    \sbox\@tempboxa{{\figurename@size #1}\figurename@skip #2}%
    \ifdim \wd\@tempboxa >\hsize
        {\figurename@size #1}\figurename@skip #2\par
    \else
        \global \@minipagefalse
        \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
    \fi
    \vskip\belowcaptionskip
    }
%
\setpkgattr{figurecaption}{size}{\footnotesize\itshape}
\setpkgattr{figurename}{size}{\scshape}
\setpkgattr{figurename}{skip}{.~}
%
\def\@floatboxreset{%
    \reset@font
    \@setminipage
    \singlespacing
    \ifcsundef{\@captype @size}%
        {\footnotesize}%
        {\csuse{\@captype @size}}%
    \ifcsundef{\@captype @shape}%
        {\centering}%
        {\csuse{\@captype @shape}}%
    }
%
\if@aihplayout
    \setpkgattr{tablecaption}{size}{\footnotesize}
    \setpkgattr{figurecaption}{size}{\footnotesize}
\fi
%
\if@bjlayout
    \let\savehline\hline
    \def\thline{\noalign{\vskip3pt}\savehline\noalign{\vskip3pt}}%
    \setpkgattr{starttable}{hook}{\let\hline\thline}
    \setpkgattr{table}{size}{\small}
    \AtBeginDocument{\appto\@xhline{\noalign{\vskip2\p@}}}
    \def\cline#1{\noalign{\vskip1\p@}\@cline#1\@nil\noalign{\vskip2\p@}}
    \setpkgattr{algorithm}{size}{\normalsize}
    \setpkgattr{algorithm}{shape}{}
\fi
%
\if@bjpslayout
    \let\savehline\hline
    \def\thline{\noalign{\vskip3pt}\savehline\noalign{\vskip3pt}}%
    \setpkgattr{starttable}{hook}{\let\hline\thline}
    \setpkgattr{tablename}{size}{\bfseries\upshape}
    \setpkgattr{tablename}{skip}{\enskip}
    \setpkgattr{figurename}{size}{\bfseries\upshape}
    \setpkgattr{figurename}{skip}{\enskip}
    \def\figurename{Figure}
    \setpkgattr{tablecaption}{shape}{}
\fi
%
\if@stslayout
    \let\savehline\hline
    \def\thline{\noalign{\vskip3pt}\savehline\noalign{\vskip4pt}}%
    \setpkgattr{starttable}{hook}{\let\hline\thline}
\fi
%
\if@ims@rotating
    \AtEndOfPackage{%
        \RequirePackage[counterclockwise,figuresright]{rotating}%
        \renewenvironment{sidewaystable}%
            {%
                \let\@makecaption\@maketablecaption
                \csname starttable@hook\endcsname
                \tablewidth=\textheight
                \@rotfloat{table}%
            }%
            {%
                \end@rotfloat
            }%
        \renewenvironment{sidewaystable*}%
            {%
                \let\@makecaption\@maketablecaption
                \csname starttable@hook\endcsname
                \tablewidth=\textheight
                \@rotdblfloat{table}%
            }%
            {%
                \end@rotdblfloat
            }%
        \let\imsart@xrotfloat\@xrotfloat
        \def\@xrotfloat#1[#2]{%
            \imsart@xrotfloat#1[#2]%
            \centering
            }%
        }
\fi
%
% tabnotes
%
\def\tabnote@table@label{table@\the\c@table @tabnote@}
\let\tabnotetext@hypertarget\@gobble
\def\tabnoteref@link#1#2{#2}
\def\@enable@tabnote@links{%
    \gdef\tabnotetext@hypertarget##1{%
        \hyper@anchorstart{\tabnote@table@label ##1}%
        \strut\hyper@anchorend
        }%
    \gdef\tabnoteref@link##1##2{%
        \hyperlink{\tabnote@table@label ##1}{##2}%
        }%
    }
\AtBeginDocument{%
    \@ifpackageloaded{hyperref}{%
        \ifdefined\hyper@anchorstart
            \@enable@tabnote@links
        \fi
        }{}%
    }
% 
\newcounter{tabnote}
\def\thetabnote{\@alph\c@tabnote}
\def\missing@mark@qq{??}
% 
\def\tabnoteref@font{\normalfont}
\def\tabnoteref@sep@output{\tabnoteref@sep}
\def\tabnoteref@sep@default{,}
\def\tabnoteref@sep@fmt{%
    \ifx\tabnoteref@sep\@empty
    \else
        \csname fix@tabnoteref@sepspace\endcsname
        \tabnoteref@sep@output
    \fi
    \global\let\tabnoteref@sep\tabnoteref@sep@default
    }
\def\fix@tabnoteref@sepspace{\kern-\scriptspace}
% 
\def\@thetbnref@fmt#1{\tabnoteref@link{#1}{\@get@tabnoteref{#1}}}
% 
\def\@get@tabnoteref#1{%
    \@ifundefined{tn@\tabnote@table@label #1}%
        {\missing@mark@qq}%
        {\csname tn@\tabnote@table@label #1\endcsname}%
    }
% 
\def\tabnoteref@fmt#1{#1}
% 
\newcommand{\tabnoteref}[2][]{%
    \bgroup
        \let\tabnoteref@sep\@empty
        \@for\tabnoteref@id:=#2\do{%
            \tabnoteref@fmt{\hbox{\@textsuperscript{%
                \tabnoteref@font
                \tabnoteref@sep@fmt
                \@thetbnref@fmt{\tabnoteref@id}%
                }}}%
            }%
    \egroup
    \ignorespaces
    }
% 
\newif\if@firsttabnotetext
\def\tabnotetext@id{}
\def\tabnotetext@sep{}
\let\tabnotetext@mark\relax
\def\tabnotetext@mark@fmt#1{\textsuperscript{#1}}
\def\tabnotetext@text@fmt#1{#1}
% 
\def\tabnotetext@mark@font{\normalfont}
\def\tabnotetext@skip{\vskip\z@}
\let\tabnotetext@skip@default\tabnotetext@skip
\def\tabnotetext@indent{\noindent\parindent\sv@parindent}
\def\sv@parindent{12\p@}
% 
\define@key{tabnotetext}{id}{\def\tabnotetext@id{#1}}
\define@key{tabnotetext}{mark}{\def\tabnotetext@mark{#1}}
% 
\def\@auto@tabnotetext@sep@fmt{%
    \if@firsttabnotetext
    \else
        \tabnotetext@sep@output
    \fi
    }
\let\auto@tabnotetext@sep@fmt\relax
\def\tabnotetext@sep@output{\tabnotetext@sep}
% 
\newcommand{\tabnotetext}[2][]{%
    \bgroup
        \let\tabnotetext@markcounter\relax
        \setkeys{tabnotetext}{#1}%
        \auto@tabnotetext@sep@fmt
        \tabnotetext@skip
        \@write@tabnote@label
        % fixing hypertarget position
        \setbox\@tempboxa=\hbox to\z@{\vbox{\tabnotetext@hypertarget{\tabnotetext@id}}\hss}%
        \wd\@tempboxa=\z@
        \dp\@tempboxa=\z@
        \ht\@tempboxa=\z@
        \noindent\box\@tempboxa
        \tabnotetext@indent
        \ifx\tabnotetext@mark\@empty
        \else
            \tabnotetext@mark@fmt{{%
                \tabnotetext@mark@font
                \tabnotetext@mark
                }}%
        \fi
        \tabnotetext@text@fmt{#2}%
        \let\tabnotetext@mark\relax
    \egroup
    \@firsttabnotetextfalse
    \ignorespaces
    }
% 
\def\legend#1{\tabnotetext[mark={}]{#1}}
% 
\def\@tabnote@mark#1#2{\global\@namedef{tn@#1}{#2}}
\def\@write@tabnote@label{%
    \ifx\tabnotetext@mark\relax
        \global\advance\c@tabnote by\@ne
        \edef\tabnotetext@mark{\thetabnote}%
    \fi
    \ifx\tabnotetext@mark\empty
    \else
        \bgroup
            \protected\def\#{}%
            \protected\def\dag{}%
            \protected\def\ddag{}%
            \immediate\write\@auxout{%
                \string\@tabnote@mark{\tabnote@table@label\tabnotetext@id}{\tabnotetext@mark}%
                }%
        \egroup
    \fi
    }
% 
\newtoks\tabnotestoks
\def\tabnotes@width{\tablewidth}
\def\tabnotes@leftskip{2pt}
\def\tabnotes@alignment{\raggedright}
\def\tabnotes@size{\footnotesize}
\def\pre@tabnotes@skip{\vskip 1\p@}
\def\post@tabnotes@skip{\vskip 1\p@}
% 
\long\def\@tabnotes#1\end#2{%
    \global\tabnotestoks={#1}%
    \end{tabnotes}%
    \global\tabnotestoks={}%
    \ignorespaces
    }
% 
\newenvironment{tabnotes}[1][]%
    {%
        \setcounter{tabnote}{0}%
        \@firsttabnotetexttrue
        \def\sep{\tabnotetext@sep@output}%
        \@tabnotes
    }%
    {%
        \pre@tabnotes@skip
        \tabnotes@alignment
        \parbox[t]{\tabnotes@width}{%
            \leftskip=\tabnotes@leftskip
            \tabnotes@size
            \the\tabnotestoks
            }%
        \setcounter{tabnote}{0}%
        \post@tabnotes@skip
    }
%
% FOOTNOTE
%
\def\@makefntext@parindent{\parindent=12\p@}
\renewcommand\@makefntext[1]{\@makefntext@parindent\@makefnmark #1}
%
\def\@makefnmark{\@textsuperscript{\normalfont\@thefnmark}}
%
% SECTION commands:
% from latex.ltx:
% Two improvements:
% 1. if section command is defined as "inline" the '.' will be inserted after heading;
% 2. section* will write to toc and will appear in pdf bookmarks
%
% dirty trick...
\def\@startsection#1#2#3#4#5#6{%
    \if@noskipsec \leavevmode \fi
    \par
    \@tempskipa #4\relax
    \@afterindenttrue
    \ifdim \@tempskipa <\z@
        \@tempskipa=-\@tempskipa \@afterindentfalse
    \fi
    \if@nobreak
        \everypar{}%
    \else
        \addpenalty\@secpenalty\addvspace\@tempskipa
    \fi
    \@ifstar
        {\def\ssection@level{#2}\@ssect{#3}{#4}{#5}{#6}}%
        {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}%
    }
%
% Trick for the hyperref:
\def\setaftersec@dot#1{%
    \if@autosecdot
        \setbox0=\hbox{#1}%
        \ifdim\wd0>0\p@
            \def\aftersec@dot{.}%
        \else
            \def\aftersec@dot{}%
        \fi
    \fi
    }
\let\aftersec@dot\relax
%
% section - will add hook for the dot after section heading
\def\@sect#1#2#3#4#5#6[#7]#8{%
    \ifnum #2>\c@secnumdepth
        \let\@svsec\@empty
    \else
        \refstepcounter{#1}%
        \protected@edef\@svsec{\@seccntformat{#1}\relax}%
    \fi
    \@tempskipa #5\relax
    \ifdim \@tempskipa>\z@
        \begingroup
            #6{%
                \@hangfrom{\hskip #3\relax\@svsec}%
                \interlinepenalty \@M #8\@@par
                }%
        \endgroup
        \csname #1mark\endcsname{#7}%
        \addcontentsline{toc}{#1}{%
            \ifnum #2>\c@secnumdepth
            \else
                \protect\numberline{\csname the#1\endcsname}%
            \fi
            #7%
            }%
    \else
        \setaftersec@dot{#8}%
        \def\@svsechd{%
            #6{\hskip #3\relax \@svsec #8\aftersec@dot}%
            \csname #1mark\endcsname{#7}%
            \addcontentsline{toc}{#1}{%
                \ifnum #2>\c@secnumdepth
                \else
                    \protect\numberline{\csname the#1\endcsname}%
                \fi
                #7%
                }%
            }%
    \fi
    \@xsect{#5}%
    }
%
% section* - will add hook for the dot after section heading and \contentsline
\def\@ssect#1#2#3#4#5{%
    \@tempskipa #3\relax
    \ifdim \@tempskipa>\z@
        \begingroup
            #4{%
                \@hangfrom{\hskip #1}%
                \interlinepenalty=\@M #5\@@par
                }%
        \endgroup
    \else
        \setaftersec@dot{#5}%
        \def\@svsechd{#4{\hskip #1\relax #5\aftersec@dot}}%
    \fi
    \ifnum\ssection@level=1\phantomsection\addcontentsline{toc}{section}{#5}\fi
    \@xsect{#3}%
    }
%
% Block adding to contents for the next command only:
\def\nocontentsline{%
    \let\@@addcontentsline\addcontentsline
    \ifx\hyper@anchor\@undefined
        \def\addcontentsline##1##2##3{\let\addcontentsline\@@addcontentsline}%
    \else
        \def\addcontentsline##1##2##3##4{\let\addcontentsline\@@addcontentsline}%
    \fi
    }
%
\protected\def\qq#1{%
    \bgroup
        \ifx.#1.\relax
            \ifmmode
                \mbox{\normalfont\textbf{???}}%
            \else
                \normalfont\textbf{???}%
            \fi
        \else
            \ifmmode
                \mbox{\normalfont\textbf{#1}}%
            \else
                \normalfont\textbf{#1}%
            \fi
        \fi
    \egroup
    }
%
% \phantomsection is defined in hyperref
\let\phantomsection\relax
%
% FRONTMATTER SETTINGS
%
% FRONT MATTER FORMATTING PARAMETERS
%
\setpkgattr{frontmatter}{style}{\centering}
\setpkgattr{title}{style}{\centering\def\\{\break}}
\setpkgattr{author}{style}{\centering}
\setpkgattr{address}{style}{\centering}
\setpkgattr{abstract}{style}{\normaltext}
\setpkgattr{keyword}{style}{\normaltext}
\setpkgattr{history}{style}{\normaltext}
%
% FRONT MATTER SKIPS
\setpkgattr{title}{skip}{18\p@}
\setpkgattr{atltitle}{skip}{14\p@}
\setpkgattr{authors}{skip}{12pt}
\setpkgattr{dedicated}{skip}{12\p@}
\setpkgattr{address}{skip}{6\p@ plus 1\p@ minus 1\p@}
\setpkgattr{abstract}{skip}{10\p@}
\setpkgattr{abstractname}{skip}{:\enskip}
\setpkgattr{keyword}{skip}{10\p@}
\setpkgattr{history}{skip}{10\p@}
\setpkgattr{frontmatter}{cmd}{%
    \vskip20\p@ plus 3\p@ minus 3\p@
    \@afterindentfalse\@afterheading
    }
\setpkgattr{firstpage}{cmd}{}
%
% FRONT MATTER DIMENSIONS
\setpkgattr{abstract}{width}{.8\textwidth}
\setpkgattr{abstract}{indent}{0\p@}
\setpkgattr{keyword}{width}{.8\textwidth}
\setpkgattr{keyword}{indent}{0\p@} %
\setpkgattr{history}{width}{.8\textwidth}
%
% FRONT MATTER FONTS
\setpkgattr{dochead}{size}{\Large\bfseries}
\setpkgattr{title}{size}{\LARGE\bfseries}
\setpkgattr{author}{size}{\normalsize\bfseries}
\setpkgattr{fnms}{size}{}
\setpkgattr{snm}{size}{}
\setpkgattr{address}{size}{\footnotesize\itshape\mdseries}
\setpkgattr{dedicated}{size}{\normalsize\itshape}
\setpkgattr{ead}{size}{\upshape\ttfamily}
\setpkgattr{abstract}{size}{\footnotesize\upshape\mdseries}
\setpkgattr{abstractname}{size}{\bfseries}
\setpkgattr{keyword}{size}{\footnotesize\upshape\mdseries}
\setpkgattr{keywordname}{size}{\bfseries}
\setpkgattr{history}{size}{\footnotesize\mdseries}
\setpkgattr{copyright}{size}{\footnotesize\raggedright}
\setpkgattr{runninghead}{size}{\footnotesize\itshape}
\setpkgattr{pagenumber}{size}{\footnotesize\upshape}
\setpkgattr{thebibliography}{size}{\normalsize}
%
% FRONT MATTER CASE
\setpkgattr{dochead}{case}{}
\setpkgattr{title}{case}{}
\setpkgattr{runninghead}{case}{}
%
% TEXT, etc.
\setpkgattr{doi}{text}{\url@fmt{url: }{\ttfamily}{\paper@url}{\paper@url}}
\if@imsart@preprint
    \setpkgattr{copyright}{text}{}
\else
    \setpkgattr{copyright}{text}{%
        \url@fmt{}{\bfseries}{\journal@name}{\journal@url}\break
        \@ifundefined{volume@title}{}{\textbf{\volume@title}\break}%
        \@ifnonempty{\@volume\@pubyear\@pagerange\break}%
        \@ifnonempty{\journal@issn\break}%
        \doi@text
        }
\fi
%
\setpkgattr{infoline}{text}{%
    \lower12pt%
    \hbox{%
        \footnotesize\ttfamily\imsfmt@name\journal@id\ 
        ver. \imsfmt@version\ file: \jobname.tex\ date: \today
        }%
    }
\setpkgattr{copyright}{owner}{$\copyright$~\@copyrightyear \copyrightowner@text}
\setpkgattr{author}{prefix}{}
\setpkgattr{keyword}{postfix}{\unskip.}
%
\def\abstractname{Abstract}
%
% HISTORY
\setpkgattr{history}{prefix}{}
\setpkgattr{history}{postfix}{.}
\setpkgattr{received}{prefix}{Received~}
\setpkgattr{received}{postfix}{}
\setpkgattr{revised}{prefix}{; revised~}
\setpkgattr{revised}{postfix}{}
\setpkgattr{accepted}{prefix}{; accepted~}
\setpkgattr{accepted}{postfix}{}
\setpkgattr{pubonline}{prefix}{; published online~}
\setpkgattr{pubonline}{postfix}{}
%
% FRONTMATTER STUFF
%
% COUNTERS, ETC
\newcounter{author}
\newcounter{address}
\newdimen\sv@mathsurround
\def\author@num{0}
%
% RUNNING HEAD
\def\runtitle#1{\gdef\@runtitle{\runninghead@case{#1}}}
\def\@runtitle{}
\def\runauthor#1{{\def\etal{et al.}\gdef\@runauthor{\runninghead@case{#1}}}}
\def\@runauthor{}
%
\newdimen\sv@parindent
\sv@parindent\parindent
%
\newbox\fm@box
\newdimen\fm@size
%
\let\hy@frontmatter\relax
\let\hy@endfrontmatter\relax
\let\tableofcontents@fmt\relax
%
% FRONTMATTER
%
\def\frontmatter{%
    \global\c@author=\z@
    \global\c@address=\z@
    \renewcommand\thefootnote{\@fnsymbol\c@footnote}%
    %
    \if@changetoc
        \let\old@tableofcontents\tableofcontents
        \def\tableofcontents{\let\tableofcontents@fmt\old@tableofcontents}%
    \fi
    %
    \def\pdftitle##1{\write@pdfinfo{\user@hy@title}{##1}}%
    \def\pdfauthor##1{\write@pdfinfo{\user@hy@author}{##1}}%
    \def\pdfsubject##1{\write@pdfinfo{\user@hy@subject}{##1}}%
    \def\pdfkeywords##1{\write@pdfinfo{\user@hy@keywords}{##1}}%
    %
    \if@supertoc
        \addtocontents{toc}{\protect\contentsline{begintocitem}{}{}{}}%
        \addtocontents{toc}{\protect\contentsline{jobname}{\jobname}{}{}}%
        \ifx\@doi\relax \else\addtocontents{toc}{\protect\contentsline{doi}{\@doi}{}{}}\fi
        \ifx\@arxiv\relax
        \else
            \addtocontents{toc}{\protect\contentsline{arxiv}{\@arxiv}{}{}}%
        \fi
    \fi
    %
    \sv@mathsurround=\mathsurround \m@th
    \parindent=\z@
    \hy@frontmatter
    \global\let\maketitle\relax
    \open@fm \ignorespaces
    }
%
% ENDFRONTMATTER
%
\def\endfrontmatter{%
    \global\@topnum=\z@
    \set@pagerange
    \csname form@runauthors\endcsname
    \markboth{\@runauthor}{\@runtitle}%
    \thispagestyle{copyright}%
    %
    \put@fmt@data
    %
    \close@fm
    %
    \firstpage@cmd
    %
    \write@pdfinfo{\hy@author}{\the\authors@list}%
    \write@pdfinfo{\hy@subject}{\journal@name\@copyrightyear\@volume\@issue\@pagerange}%
    \write@pdfinfo{\hy@keywords}{\the\keywords@list}%
    %
    \if@supertoc
        \addtocontents{toc}{\protect\contentsline{author}{\the\authors@list}{\thepage}{}}%
        \addtocontents{toc}{\protect\contentsline{endtocitem}{}{}{}}%
    \fi
    %
    \write\@mainaux{\string\gdef\string\author@num{\the\c@author}}%
    \hy@endfrontmatter
    \global\mathsurround\sv@mathsurround
    \global\c@footnote=\z@
    \global\let\@thanks\@empty
    \let\title\relax
    \let\author\relax
    \let\address\relax
    \let\frontmatter\relax
    \let\endfrontmatter\relax
    \let\@maketitle\relax
    \let\@@maketitle\relax
    \aftergroup\frontmatter@cmd
    }
%
\def\put@fmt@data{%
    \copyright@fmt
    \@thanks
    \abstract@fmt
    \keyword@fmt
    \history@fmt
    \tableofcontents@fmt
    }
%
\newdimen\t@xtheight
\def\init@settings{%
    \splittopskip=\topskip
    \splitmaxdepth=\maxdepth
    \t@xtheight=\textheight
    \advance\t@xtheight by -\splittopskip
    }
%
\def\no@harm{%
    \let\thanks=\@gobble
    \let\thanksref=\@gobble
    \def\orcid##1##{\@gobble}%
    \let~\space
    \def\ead[##1]##2{}%
    \let\\=\@empty
    \def\protect{\noexpand\protect\noexpand}%
    }
%
\def\open@fm{%
    \global\setbox\fm@box=\vbox\bgroup
        \hsize=\textwidth
        \frontmatter@style
    }
%
\def\close@fm{%
        \par
    \egroup
    \fm@size=\dp\fm@box
    \advance\fm@size by \ht\fm@box
    \@whiledim\fm@size>\t@xtheight \do{%
        \global\setbox\@tempboxa=\vsplit\fm@box to \t@xtheight
        \unvbox\@tempboxa
        \fm@size=\dp\fm@box
        \advance\fm@size by \ht\fm@box
        }%
    \if@twocolumn
        \emergencystretch=1pc \twocolumn[\unvbox\fm@box]
    \else
        \unvbox\fm@box
    \fi
    }
%
% DOCHEAD
\def\dochead#1{%
    \bgroup
        \dochead@size
        \leavevmode\vphantom{\strut}\dochead@case{#1}\par
    \egroup
    \setpkgattr{title}{skip}{8\p@}%
    }
%
% TITLE
\def\title@endhook{}
\def\title@correctionnote#1{%
    \thanksref{CoRreCtIoNnOtE}%
    \g@addto@macro\title@endhook{\thankstext{CoRreCtIoNnOtE}{#1}}%
    }
\def\title@supportinfo#1{%
    \thanksref{SuPpOrTiNfO}%
    \g@addto@macro\title@endhook{\thankstext{SuPpOrTiNfO}{#1}}%
    }
\let\write@title@metadata\@gobble
\def\title#1{%
    \vglue\title@skip
    % check if we are in {frontmatter}
    \def\reserved@a{frontmatter}%
    \ifx\reserved@a\@currenvir \else \hy@frontmatter\fi
    \bgroup
        \no@harm
        \let\correctionnote\@gobble
        \let\support\@gobble
        \xdef\@argi{#1}%
        \xdef\@title{#1}%
    \egroup
    \write@pdfinfo{\hy@title}{\@argi}%
    \write@title@metadata{#1}%
    \if@supertoc
        \addtocontents{toc}{\protect\contentsline{title}{\@argi}{\thepage}{}}%
    \fi
    \bgroup
        \let\correctionnote\title@correctionnote
        \let\support\title@supportinfo
        \title@style\title@size\title@case{#1}\par
    \egroup
    \title@endhook
    }
%
% ATLTITLE
%
\def\atltitle#1{%
    \vglue\atltitle@skip
    \bgroup
        \title@size #1\par
    \egroup
    }
%
% AUTHOR
%
% AUG - author block
\def\smart@par{\ifhmode\par\fi}
\newenvironment{aug}{}{\smart@par}
%
\def\and{\unskip~and~}
%
\def\author@sep@by@number#1{}
\def\author{\@ifnextchar[{\author@fmt}{\author@fmt[]}}
%
\def\author@fmt[#1]#2{%
    \stepcounter{author}%
    \author@fmt@init
    \let\author@fmt@init\relax
    \bgroup
        \def\degs##1{##1}%
        \def\fnms##1{##1}%
        \def\inits##1{}%
        \def\snm##1{##1}%
        \def\roles##1{##1}%
        \@tempcnta=\author@num\relax
        \ifnum\c@author=\@tempcnta
            \def\author@sep{ and }%
        \else
            \def\author@sep{, }%
        \fi
        \ifnum\c@author=1%
            \addto@authors@list{#2}%
        \else
            \addto@authors@list{\author@sep #2}%
        \fi
        \def\inits##1{{\inits@size{##1}}}%
        \def\fnms##1{{\fnms@size{##1}}}%
        \def\snm##1{\snm@size{##1}}%
        \if@updated@thanksref
            \def\thanksref##1{%
                \edef\author@direct@thanksref{##1}%
                \def\thanksref{\@latex@error{only one \string\thanksref\space
                    is allowed inside \string\author}{??}}%
                }%
        \fi
        \noindent#2%
        \if@updated@thanksref
            \ifx.#1.%
                \let\tmp@author@thanksrefs\@empty
                \edef\tmp@sep{}%
            \else
                \appto\tmp@author@thanksrefs{#1}%
                \edef\tmp@sep{,}%
            \fi
            \@ifundefined{author@direct@thanksref}%
                {}%
                {%
                    \eappto\tmp@author@thanksrefs{\tmp@sep\author@direct@thanksref}%
                    \edef\tmp@sep{,}%
                }%
            \@ifundefined{author@\the\c@author @ead@marks}%
                {}%
                {%
                    \eappto\tmp@author@thanksrefs
                        {\tmp@sep\csname author@\the\c@author @ead@marks\endcsname}%
                }%
            \ifx\tmp@author@thanksrefs\@empty
            \else
                \expandafter\orig@thanksref\expandafter{\tmp@author@thanksrefs}%
            \fi
        \else
            \if@stslayout
            \else
                \thanksref{#1}%
            \fi
        \fi
    \egroup
    \printorcid
    \author@sep@by@number{\the\c@author}%
    }
%
\def\author@fmt@init{%
    \vskip\authors@skip
    \noindent\leavevmode\author@style\author@size\author@prefix
    }
%
\let\author@fmt@init@def\author@fmt@init
%
% DEDICATED
\def\dedicated#1{%
    \vskip\dedicated@skip
    \bgroup
        \dedicated@size #1\par
    \egroup
    }
%
% ADDRESS
\def\address{\@ifnextchar[{\address@fmt}{\address@fmt[]}}
%
\def\address@fmt[#1]#2{%
    \smart@par
    \let\author@fmt@init\author@fmt@init@def
    \vskip\address@skip
    \bgroup
        \address@style\address@size\leavevmode
        \ifx.#1.%
        \else
            \usethankscounter{addressref}%
            \thanksmark{#1}%
            \restorethankscounter
        \fi
        #2\par
    \egroup
    }
%
% CONTRIBUTOR
% write as index entry:
% \contributor{Author, F.}{University}
% \indexentry{Author, F., \textit{Some University}}{}
%
\let\contributor\@gobbletwo
\if@supertoc
    \def\contributor#1#2{%
        \addtocontents{idx}{\protect\indexentry{#1, \protect\textit{#2}}{}}%
        }
\fi
%
% COPYRIGHTOWNER
%
\def\copyright@fmt{%
    \@ifundefined{\copyrightowner@text}{}{\safe@footnotetext{\copyright@owner}}%
    }
%
% ABSTRACT
%
\newbox\abstract@box
%
\define@key{abstract}{language}{\set@loc@hyphenation{#1}\set@loc@abstractname{#1}}
%
\gdef\abstract{\@ifnextchar[{\@abstract}{\@abstract[]}}
%
\def\@abstract[#1]{%
    \setkeys{abstract}{#1}%
    \global\setbox\abstract@box=\vbox\bgroup
        \ifvoid\abstract@box
        \else
            \unvbox\abstract@box
            \vskip\abstract@skip
        \fi
        \@tempdima=\textwidth
        \advance\@tempdima by -\abstract@width
        \divide\@tempdima by 2%
        \abstract@style
        \leftskip=\@tempdima
        \rightskip=\@tempdima
        \abstract@size
        \parindent=\sv@parindent
        \noindent\hskip\abstract@indent
        {\abstractname@size\abstractname\abstractname@skip}\ignorespaces
    }
%
\def\endabstract{\par\egroup}
%
\def\abstract@fmt{%
    \ifvoid\abstract@box
    \else
        \vskip\abstract@skip
        \unvbox\abstract@box
    \fi
    }
%
\def\set@loc@hyphenation#1{%
    \@ifundefined{l@#1}%
        {}%
        {\expandafter\language\csname l@#1\endcsname}%
    }
%
\def\set@loc@abstractname#1{%
    \def\abstractname@english{Abstract}%
    \def\abstractname@german{Zusammenfassung}%
    \def\abstractname@french{R\'esum\'e}%
    \def\abstractname@spanish{Resumen.}%
    \@ifundefined{abstractname@#1}%
        {\@latex@error{Language '#1` is not supported!}{}}%
        {\edef\abstractname{\csname abstractname@#1\endcsname}}%
    }
%
% HISTORY: received, revised, accepted
%
\def\history@exist{0}
%
\def\received#1{\def\@tempa{#1}\ifx\@tempa\@empty\else\gdef\@received{#1}\gdef\history@exist{1}\fi}
\def\@received{\@nil}
\def\revised#1{\def\@tempa{#1}\ifx\@tempa\@empty\else\gdef\@revised{#1}\gdef\history@exist{1}\fi}
\def\@revised{\@nil}
\def\accepted#1{\def\@tempa{#1}\ifx\@tempa\@empty\else\gdef\@accepted{#1}\gdef\history@exist{1}\fi}
\def\@accepted{\@nil}
\def\pubonline#1{\def\@tempa{#1}\ifx\@tempa\@empty\else\gdef\@pubonline{#1}\gdef\history@exist{1}\fi}
\def\@pubonline{\@nil}
%
\def\empty@data{\@nil}
%
\def\history@fmt{%
    \ifcase\history@exist
    \else
        \bgroup
            \nobreak
            \vskip\history@skip
            \nobreak
            \history@style
            \history@size
            \@tempdima=\textwidth
            \advance\@tempdima by -\history@width
            \divide\@tempdima by 2%
            \leftskip=\@tempdima
            \rightskip=\@tempdima
            \leavevmode
            \history@prefix
            \ifx\@received\empty@data
            \else
                \received@prefix\@received \received@postfix
            \fi
            \ifx\@revised\empty@data
            \else
                \revised@prefix\@revised \revised@postfix
            \fi
            \ifx\@accepted\empty@data
            \else
                \accepted@prefix\@accepted \accepted@postfix
            \fi
            \ifx\@pubonline\empty@data
            \else
                \pubonline@prefix\@pubonline \pubonline@postfix
            \fi
            \history@postfix\par
        \egroup
        \gdef\history@exist{0}%
    \fi
    }
%
\def\sday#1{#1}
\def\smonth#1{%
    \@ifundefined{month@item@#1}%
        {\@latex@error{there is no month number #1!}{??}}%
        {\getitemvalue{month}{#1}}%
    }%
\def\syear#1{#1}
\setvaluelist{month}{January,February,March,April,May,June,%
    July,August,September,October,November,December}
%
% KEYWORDS
%
\newbox\keyword@box
\newdimen\pre@kwd@depth
%
\setpkgattr{keyword}{AMS}{AMS 2000 subject classifications:}
\setpkgattr{keyword}{MSC}{\ims@href{\msc@url}{MSC2020 subject classifications}:}
\setpkgattr{keyword}{MSC2010}{MSC 2010 subject classifications:}
\setpkgattr{keyword}{MSC2020}{\ims@href{\msc@url}{MSC2020 subject classifications}:}
%
\setpkgattr{keyword}{KWD}{Keywords and phrases:}
% key=class
\setpkgattr[default]{keyword}{class}{KWD}
%
% \keyword@class -> KWD
% \keyword@KWD -> AMS 2000...
%
\gdef\keyword{\@ifnextchar[{\@keyword}{\@keyword[class=KWD]}}
%
\gdef\@keyword[#1]{%
    \do@option@list{keyword}{#1}%
    \def\keyword@name{\csname keyword@\keyword@class\endcsname}%
    \let\kwd@sep\relax
    %
    \global\setbox\keyword@box=\vbox\bgroup
        \ifvoid\keyword@box
        \else
            \unvbox\keyword@box
            \vskip-\pre@kwd@depth\vtop to\pre@kwd@depth{}%
        \fi
        \@tempdima=\textwidth
        \advance\@tempdima by -\keyword@width
        \divide\@tempdima by 2%
        \keyword@style
        \leftskip=\@tempdima
        \rightskip=\@tempdima
        \keyword@size
        \parindent=\sv@parindent
        \noindent\hskip\keyword@indent
        {\keywordname@size\keyword@name}\space\hskip.1pt%
    }
%
\def\endkeyword{\keyword@postfix\par\global\pre@kwd@depth\prevdepth\egroup}
%
\def\keyword@fmt{%
    \ifvoid\keyword@box
    \else
        \vskip\keyword@skip
        \unvbox\keyword@box
    \fi
    }
%
% \kwd[; ]{foo}
\def\sep{\unskip\string, }
\newif\if@firstkeywordinlist \@firstkeywordinlisttrue
%
\DeclareRobustCommand*\kwd{\@ifnextchar[\@kwd{\@kwd[\kwd@sep]}}
\def\@kwd[#1]#2{%
    \unskip#1{#2}%
    \if@firstkeywordinlist
        \addto@keywords@list{#2}%
        \@firstkeywordinlistfalse
    \else
        \addto@keywords@list{, #2}%
    \fi
    \let\kwd@sep\sep
    }
%
% \maketitle
% if \frontmatter is not used, we will redefine \maketitle
%
\def\local@maketitle{%
    \global\@topnum=\z@
    \set@pagerange
    \markboth{\@runauthor}{\@runtitle}%
    \thispagestyle{copyright}%
    %
    \put@fmt@data
    %
    \write@pdfinfo{\hy@author}{\the\authors@list}%
    \write@pdfinfo{\hy@keywords}{\the\keywords@list}%
    \hy@endfrontmatter
    \global\mathsurround=\sv@mathsurround
    \global\c@footnote=\z@
    \global\let\@thanks\@empty
    \let\title\relax
    \let\author\relax
    \let\address\relax
    \let\frontmatter\relax
    \let\endfrontmatter\relax
    \let\@maketitle\relax
    \let\@@maketitle\relax
    \normalfont\normaltext
    \parindent=\sv@parindent
    \frontmatter@cmd
    }
%
\AtBeginDocument{\let\maketitle\local@maketitle}
%
% PROCESS LAYOUT OPTIONS
%
% Put keywords as footnote
\if@keywordsasfootnote
    \newtoks\keyword@toks
    \newpseudoenvironment{keyword}{\gdef\keyword@exist{1}\get@keyword@toks}{}
    \def\get@keyword@toks#1\end{%
        \keyword@toks=\expandafter{\the\keyword@toks\keyword#1\endkeyword}%
        \@gobble
        }
    \def\keyword@exist{0}
    \gdef\keyword#1{\@ifnextchar[{\@keyword}{\@keyword[class=KWD]}}
    \gdef\@keyword[#1]{%
        \do@option@list{keyword}{#1}%
        \def\keyword@name{\csname keyword@\keyword@class\endcsname}%
        \let\kwd@sep\relax
        \keyword@style
        \keyword@size
        \parindent=\sv@parindent
        \pre@kwd
        \hbox{\keywordname@size\keyword@name}\space\hskip.1pt%
        }%
    \gdef\endkeyword{\keyword@postfix\gdef\pre@kwd{\par\leavevmode}}
    \let\pre@kwd\relax
    \def\keyword@fmt{\ifcase\keyword@exist\else\safe@footnotetext{\the\keyword@toks}\fi}
\fi
%
% Put history as footnote
\if@historyasfootnote
    %
    \def\history@fmt{%
        \ifcase\history@exist
        \else
            \safe@footnotetext{%
                \nobreak
                \history@style
                \history@size
                \leavevmode
                \history@prefix
                \ifx\@received\empty@data
                \else
                    \received@prefix\@received \received@postfix
                \fi
                \ifx\@revised\empty@data
                \else
                    \revised@prefix\@revised \revised@postfix
                \fi
                \ifx\@accepted\empty@data
                \else
                    \accepted@prefix\@accepted \accepted@postfix
                \fi
                \ifx\@pubonline\empty@data
                \else
                    \pubonline@prefix\@pubonline \pubonline@postfix
                \fi
                \history@postfix
                }%
        \fi
    }
\fi
%
% Put address as footnote
\if@addressasfootnote
    \def\address@fmt[#1]#2{%
        \ifx.#1.%
            \safe@footnotetext{#2}%
        \else
            \usethankscounter{addressref}%
            \bgroup
                \def\\{\hfill\break}%
                \thankstext{#1}{#2}%
            \egroup
            \restorethankscounter
        \fi
        }
\fi
%
% Put address at end
\if@addressatend
    %
    \def\address{\@ifnextchar[{\address@fmt}{\address@fmt[default]}}
    %
    % \def\address@ref@A=1
    % \newtoks\@address@1
    % \@address@1={#2}
    %
    \def\address@fmt[#1]#2{%
    \stepcounter{address}%
    \expandafter\protected@xdef\csname address@ref@#1\endcsname{\the\c@address}%
    \expandafter\newtoks\csname @address@\the\c@address\endcsname
    \expandafter\expandafter\expandafter\global\csname @address@\the\c@address\endcsname={#2}}
    %
    \let\safe@phantomsection\@gobble
    %
    % print address by number: \printaddressnum{1}
    \def\printaddressnum#1{%
        \xdef\@tmp{#1}%
        \bgroup
            \@ifundefined{@address@#1}%
                {\@latex@error{Error: there are no address with number '#1'!}{??}}%
                {%
                    \address@size
                    \ifnum#1=1%
                        \safe@phantomsection{\addcontentsline{toc}{section}{Author's addresses}}%
                    \fi
                    \begin{tabular}[t]{@{}l@{}}%
                        \expandafter\expandafter\expandafter\the\csname @address@\@tmp\endcsname
                    \end{tabular}%
                }%
        \egroup
        }
    %
    % print all addresses:
    \def\address@par{\par\vskip3pt}
    %
    \def\printaddresses{%
        \vskip\address@skip
        \def\last@right@glue{\par}%
        \ifodd\c@address
            \def\last@right@glue{\hfill\hbox{}\address@par}%
        \fi
        \ifnum\c@address=1%
            \def\last@right@glue{\address@par}%
        \fi
        \@tempcnta=0%
        \bgroup
            \parindent=\z@
            \@whilenum{\@tempcnta<\c@address}\do{%
                \advance\@tempcnta by \@ne
                \ifodd\@tempcnta
                    \def\left@glue{}%
                    \def\right@glue{}% odd
                \else
                    \def\left@glue{\hfill}%
                    \def\right@glue{\address@par}% even
                \fi
                \ifnum\@tempcnta=\c@address
                    \let\left@glue\hfill
                    \let\right@glue\last@right@glue% last member
                \fi
                \left@glue\expandafter\printaddressnum{\the\@tempcnta}\right@glue
                }%
        \egroup
        }
    %
    % invoke \printaddresses at end of document:
    \let\old@enddocument\enddocument
    \def\enddocument{\printaddresses\old@enddocument}
\fi
%
% settings from in-house packages
\def\declaremathsizes@as@in@mathtime{%
    \DeclareMathSizes{5}{6}{6}{6}%
    \DeclareMathSizes{6}{6}{6}{6}%
    \DeclareMathSizes{7}{6.8}{6}{6}%
    \DeclareMathSizes{8}{8}{6.8}{6}%
    \DeclareMathSizes{9}{9}{7.6}{6}%
    \DeclareMathSizes{10}{10}{7.6}{6}%
    \DeclareMathSizes{10.95}{10.95}{7.6}{6}%
    \DeclareMathSizes{12}{12}{9}{7}%
    \DeclareMathSizes{14.4}{14.4}{10}{8}%
    \DeclareMathSizes{17.28}{17.28}{12}{9}%
    \DeclareMathSizes{20.74}{20.74}{14.4}{10}%
    \DeclareMathSizes{24.88}{24.88}{17.28}{12}%
    }
%
\def\ims@common@float@settings{%
    % float parameters:
    \setlength\floatsep{18\p@ \@plus 6\p@ \@minus 2\p@}%
    \setlength\textfloatsep{18\p@ \@plus 6\p@ \@minus 2\p@}%
    \setlength\intextsep{18\p@ \@plus 6\p@ \@minus 2\p@}%
    \setlength\dblfloatsep{18\p@ \@plus 6\p@ \@minus 2\p@}%
    \setlength\dbltextfloatsep{24\p@ \@plus 6\p@ \@minus 2\p@}%
    % For floats on a separate float page or column:
    \setlength\@fptop{0\p@ \@plus 1fil}%
    \setlength\@fpsep{8\p@ \@plus 1000fil}%
    \setlength\@fpbot{0\p@ \@plus 1fil}%
    \setlength\@dblfptop{0\p@ \@plus 1fil}%
    \setlength\@dblfpsep{8\p@ \@plus 1000fil}%
    \setlength\@dblfpbot{0\p@ \@plus 1fil}%
    % float counters:
    \setcounter{topnumber}{5}%
    \renewcommand\topfraction{.99}%
    \setcounter{bottomnumber}{5}%
    \renewcommand\bottomfraction{.99}%
    \setcounter{totalnumber}{10}%
    \renewcommand\textfraction{.05}%
    \renewcommand\floatpagefraction{.9}%
    \setcounter{dbltopnumber}{5}%
    \renewcommand\dbltopfraction{.99}%
    \renewcommand\dblfloatpagefraction{.8}%
    }
%
\def\set@amsgen@frenchspacing{%
    \def\frenchspacing{\sfcode`\.1006\sfcode`\?1005\sfcode`\!1004%
        \sfcode`\:1003\sfcode`\;1002\sfcode`\,1001 }%
    }
% Set up parameters for the EJS, PS, SS layout:
\if@ejs@ps@ss@layout
    \RequirePackage{lmodern}
    \usepackage[T1]{fontenc}
    \AtEndOfPackage{%
        \ifcsundef{do@not@scale@lmex}%
            {% make lmex10 scalable
                \DeclareFontFamily{OMX}{lmex}{}%
                \DeclareFontShape{OMX}{lmex}{m}{n}{%
                    <-> lmex10
                    }{}%
            }%
            {}%
        }%
\fi
%
% Set up parameters for the BA journal layout:
\if@balayout
    \RequirePackage{lmodern}
    \usepackage[T1]{fontenc}
    % make lmex10 scalable
    \DeclareFontFamily{OMX}{lmex}{}
    \DeclareFontShape{OMX}{lmex}{m}{n}{%
        <-> lmex10
        }{}
    %
    \setlength{\parskip}{0.5\baselineskip}
    \setlength{\parindent}{15pt}
    \setlength{\paperwidth}{8.5in}
    \setlength{\paperheight}{11in}
    \set@page@layout{5.25in}{7.6in}
    \advance\topmargin by-7\p@
    %
    \setpkgattr{title}{size}{\sffamily\LARGE\bfseries}
    \setpkgattr{title}{skip}{-16pt}
    \setpkgattr{author}{size}{\normalsize}
    \setpkgattr{authors}{skip}{16pt}
    \setpkgattr{abstractname}{size}{\sffamily\bfseries}
    \setpkgattr{keywordname}{size}{\sffamily\bfseries}
    \setpkgattr{abstractname}{skip}{.\enskip\enskip}
    \setpkgattr{keyword}{KWD}{Keywords:}
    %
    \setpkgattr{abstract}{width}{115mm}
    \setpkgattr{keyword}{width}{115mm}
    \setpkgattr{keyword}{style}{}
    \setpkgattr{history}{width}{115mm}
    %
    \setpkgattr{abstract}{size}{\small\upshape\mdseries}
    \setpkgattr{keyword}{size}{\small\upshape\mdseries\rightskip=\the\rightskip plus1.0fil}
    %
    \setpkgattr{ead}{size}{\upshape}
    \setpkgattr{abstract}{skip}{22\p@}
    \setpkgattr{keyword}{skip}{8.5\p@}
    %
    \setpkgattr{frontmatter}{cmd}{%
        \vskip10\p@ plus 3\p@ minus 3\p@
        \@afterindentfalse\@afterheading
        }
    %
    \setpkgattr{copyright}{size}{\small\raggedright}
    %
    \gdef\volume#1{\gdef\@volume{#1}}%
    \gdef\issue#1{\gdef\@issue{#1}}%
    %
    \def\doi#1{%
        \gdef\@doi{#1}%
        \gdef\doi@text{\url@fmt{DOI: }{\upshape}{#1}{\doi@base\@doi}}%
        }
    %
    \def\address@fmt[#1]#2{%
        \ifx.#1.%
            \safe@footnotetext{#2}%
        \else
            \bgroup
                \def\\{\hfill\break}%
                \thankstext{#1}{#2}%
            \egroup
        \fi
        }
    %
    \def\ps@copyright{%
        \let\@mkboth\@gobbletwo
        \def\@evenhead{\parbox[t]{\textwidth}{\copyright@size\issuedata@text}}%
        \let\@oddhead\@evenhead
        \def\@oddfoot{%
            \rlap{\parbox[t]{\textwidth}{\copyright@size\copyright@text}}%
            \hfill\llap{\vbox to0pc{\hbox{\info@line\hss}}}%
            }%
        \let\@evenfoot\@oddfoot
        }
    %
    \setpkgattr{infoline}{text}{\lower36pt\hbox{\footnotesize\ttfamily\imsfmt@name\journal@id\ 
        ver. \imsfmt@version\ file: \jobname.tex\ date: \today}}
    %
    \def\ps@imsheadings{%
        \def\@oddfoot{\hfill\info@line}%
        \let\@evenfoot\@oddfoot
        \def\check@head@line@length@even{%
            \runninghead@size{\pagenumber@size 000\quad}\hfill {\runningtitle@size \rightmark}%
            }%
        \def\@evenhead{%
            \runninghead@size{\pagenumber@size\thepage}\hfill {\runningtitle@size \rightmark}%
            \check@head@line@length{\check@head@line@length@even}{title}%
            }%
        \def\check@head@line@length@odd{%
            \runninghead@size{\runningauthor@size \leftmark} \hfill {\pagenumber@size\quad 000}%
            }%
        \def\@oddhead{%
            \runninghead@size{\runningauthor@size \leftmark} \hfill {\pagenumber@size\thepage}%
            \check@head@line@length{\check@head@line@length@odd}{author}%
            }%
        }
    %
    \setpkgattr{runninghead}{size}{\normalsize}
    \setpkgattr{pagenumber}{size}{\upshape}
    \setpkgattr{runningtitle}{size}{\bfseries\slshape}
    \setpkgattr{runningauthor}{size}{\slshape}
    %
    \def\pubonline#1{}%
    %
    \AtBeginDocument{%
        \setpkgattr{section}{numbersep}{\enskip}%
        \setpkgattr{subsection}{numbersep}{\enskip}%
        \setpkgattr{subsubsection}{numbersep}{}%
        \setpkgattr{paragraph}{numbersep}{}%
        \setpkgattr{subparagraph}{numbersep}{}%
        \renewcommand\section{%
            \@startsection
                {section}%
                {1}%
                {\z@}%
                {-\baselineskip}%
                {.25\baselineskip}%
                {\Large\sffamily\bfseries\mathversion{bold}\raggedright}%
            }%
        \renewcommand\subsection{%
            \@startsection
                {subsection}%
                {2}%
                {\z@}%
                {-\baselineskip}%
                {.25\baselineskip}%
                {\large\sffamily\bfseries\mathversion{bold}\raggedright}%
            }%
        \renewcommand\subsubsection{%
            \@startsection
                {subsubsection}%
                {3}%
                {\z@}%
                {-\baselineskip}%
                {.25\baselineskip}%
                {\sffamily\bfseries\mathversion{bold}\raggedright}%
            }%
        \setcounter{secnumdepth}{2}%
        \renewcommand\paragraph{%
            \@startsection
                {paragraph}%
                {4}%
                {\z@}%
                {\medskipamount}%
                {-1em}%
                {\sffamily\bfseries}%
            }%
        \renewcommand\subparagraph{%
            \@startsection
                {subparagraph}%
                {5}%
                {\z@}%
                {\medskipamount}%
                {-1em}%
                {\sffamily\itshape}%
            }%
        % Supplement
        \def\articletitle{\csuse{@title}}%
        \let\specialsection\section
        \@namedef{specialsection*}{\section*}%
        \def\stitle@fmt#1{#1}%
        % Supplement case for BA:
        % macroses: \stitle, \slink[doi], \sdatatype, \sfilename.
        \def\stitlepost#1{\gdef\@stitlepost{#1}}%
        \stitlepost{\space}%
        \def\slink@doi@fmt{%
            \url@fmt{DOI: }{}{\slink@doi}{\doi@base\slink@doi}%
            \@ifundefined{supp@label}%
                {}%
                {%
                    \expandafter\xdef\csname\supp@label @doi\endcsname{\slink@doi}%
                    \expandafter\xdef\csname\supp@label @url\endcsname{\doi@base\slink@doi}%
                }%
            }%
        \def\endsupplement{%
            \noindent
            \@ifundefined{@stitle}{}{\stitle@fmt{\@stitle}}%
            \@stitlepost
            \ifnum\slink@data@exists>\z@(\fi
            \@ifundefined{slink@doi}{}{\slink@doi@fmt}%
            \@ifundefined{slink@url}{}{\slink@url@fmt}%
            \@ifundefined{@sdatatype}{}{; \@sdatatype}%
            \ifnum\slink@data@exists>\z@)\else\unskip\fi.
            \@ifundefined{@sdescription}{}{\@sdescription}%
            \par
            }%
        \setpkgattr{email}{text}{}%
        %
        \appto\set@natbib{\setlength\bibsep{6pt}}%
        %
        \csdef{copyrightowner@text}{International Society for Bayesian Analysis}%
        \def\journal@issn{$\copyright$~\ims@href{https://www.imstat.org}{\copyrightowner@text}, 
            \@copyrightyear}%
        \if@imsart@preprint
            \setpkgattr{issuedata}{text}{}%
            \setpkgattr{copyright}{text}{}%
        \else
            \setpkgattr{issuedata}{text}{%
                \ims@href{\journal@url}{\journal@name}%
                \space\@pubyear
                \hskip5pc%
                \@ifnonempty{\textbf{\@volume}, Number \@issue, pp. \@pagerange}%
                }%
            \setpkgattr{copyright}{text}{\copyright@owner \hfill \doi@text}%
        \fi
        \setpkgattr{copyright}{owner}{$\copyright$~\@copyrightyear \copyrightowner@text}%
        }
    \def\@floatboxreset{%
        \reset@font
        \@setminipage
        \singlespacing
        \centering
        }
    % Table
    \def\fnum@table{\tablename~\thetable:}
    \setpkgattr{tablecaption}{shape}{}
    \setpkgattr{tablecaption}{size}{\normalsize}
    \setpkgattr{tablename}{size}{}
    \setpkgattr{tablename}{skip}{\space}
    %
    \long\def\@maketablecaption#1#2{%
        \vskip\belowcaptionskip
        \tablecaption@shape\tablecaption@size
        \sbox\@tempboxa{{\tablename@size #1}\tablename@skip #2}%
        \ifdim\wd\@tempboxa>\hsize
            {\tablename@size #1}\tablename@skip #2\par
        \else
            \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
        \fi
        }
    % Figure
    \setpkgattr{figurename}{size}{}
    \setpkgattr{figurecaption}{size}{\normalsize}
    \setpkgattr{figurename}{skip}{:\space}
    \def\figurename{Figure}
    %
    \AtBeginDocument{%
        \@ifpackageloaded{amsmath}{\allowdisplaybreaks}{}%
        }
    \ifcsvoid{bibdir}{\gdef\bibdir{}}{}
    \def\bibliography#1{%
        \if@filesw
            \immediate\write\@auxout{\string\bibdata{\bibdir#1}}%
        \fi
        \@input@{\jobname.bbl}%
        }
    \def\bibliographystyle#1{%
        \ifx\@begindocumenthook\@undefined
        \else
            \expandafter\AtBeginDocument
        \fi
        {%
            \if@filesw
                \immediate\write\@auxout{\string\bibstyle{\bibdir#1}}%
            \fi
        }}
    \partopsep=2.1\p@ \@plus1\p@ \@minus\z@
    \AtBeginDocument{%
        \def\@listi{%
            \leftmargin=\leftmargini
            \parsep=4\p@ \@plus2\p@ \@minus\z@
            \topsep=8\p@ \@plus2\p@ \@minus4\p@
            \itemsep=4\p@ \@plus2\p@ \@minus\z@
            }%
        }
    \renewcommand\footnoterule{\kern8\p@ \hrule\@width.4\columnwidth \kern2.6\p@}
    \setlength\footskip{25\p@}
    \renewcommand\normalsize{%
        \@setfontsize\normalsize\@xpt{12\p@ \@plus .3\p@ \@minus .3\p@}%
        \abovedisplayskip=10\p@ \@plus2\p@ \@minus5\p@
        \abovedisplayshortskip=\z@ \@plus3\p@
        \belowdisplayshortskip=6\p@ \@plus3\p@ \@minus3\p@
        \belowdisplayskip=\abovedisplayskip
        \let\@listi\@listI
        }
    \normalsize
    \renewcommand\small{%
        \@setfontsize\small\@ixpt{11\p@ \@plus .2\p@ \@minus .2\p@}%
        \abovedisplayskip=8.5\p@ \@plus3\p@ \@minus4\p@
        \abovedisplayshortskip=\z@ \@plus2\p@
        \belowdisplayshortskip=4\p@ \@plus2\p@ \@minus2\p@
        \def\@listi{%
            \leftmargin=\leftmargini
            \topsep=4\p@ \@plus2\p@ \@minus2\p@
            \parsep=2\p@ \@plus\p@ \@minus\p@
            \itemsep=\parsep
            }%
        \belowdisplayskip=\abovedisplayskip
        }
    \flushbottom
    %
\fi % end if@balayout
%
% Set up parameters for the IMS journals (AOP, AAP, AOS) layout:
\if@imslayout
    \RequirePackage[T1]{fontenc}
    \RequirePackage{times}
    \RequirePackage[scaled=.9]{helvet}
    \RequirePackage{textcomp}
    \RequirePackage{textcase}
    \def\@xipt{11}
    \def\@xivpt{14}
    \def\@xvipt{16}
    \def\@xviiipt{18}
    \def\@xxpt{20}
    \def\@xxivpt{24}
    \declaremathsizes@as@in@mathtime
    \renewcommand\normalsize{%
        \@setfontsize\normalsize\@xipt{13\p@ plus .5\p@ minus .5\p@}%
        \abovedisplayskip 7\p@ \@plus3\p@ \@minus3\p@
        \belowdisplayskip\abovedisplayskip
        \abovedisplayshortskip\abovedisplayskip
        \belowdisplayshortskip\abovedisplayskip
        \let\@listi\@listI
        }
    \normalfont\normalsize
    \renewcommand\small{%
        \@setfontsize\small\@xpt{12pt plus .3pt minus .3pt}%
        \abovedisplayskip 6\p@ \@plus2\p@ \@minus2\p@
        \belowdisplayskip \abovedisplayskip
        \abovedisplayshortskip\abovedisplayskip
        \belowdisplayshortskip\abovedisplayskip
        }
    \renewcommand\footnotesize{%
        \@setfontsize\footnotesize\@ixpt{11pt plus .2\p@ minus .2\p@}%
        \abovedisplayskip 6\p@ \@plus2\p@ \@minus2\p@
        \belowdisplayskip \abovedisplayskip
        \abovedisplayshortskip\abovedisplayskip
        \belowdisplayshortskip\abovedisplayskip
        }
    \renewcommand\scriptsize{\@setfontsize\scriptsize\@viiipt\@xpt}
    \renewcommand\tiny{\@setfontsize\tiny\@vipt\@viipt}
    \renewcommand\large{\@setfontsize\large\@xiipt{14}}
    \renewcommand\Large{\@setfontsize\Large\@xivpt{16}}
    \renewcommand\LARGE{\@setfontsize\LARGE\@xvipt{18}}
    \renewcommand\huge{\@setfontsize\huge\@xviiipt{20}}
    \renewcommand\Huge{\@setfontsize\Huge\@xxpt{24}}
    % lists
    \def\labelitemi{\textbullet}
    \def\labelitemii{\textendash}
    \def\labelitemiii{\textasteriskcentered}
    \def\labelitemiv{{\footnotesize +}}
    \def\labelenumi{\theenumi.}
    \def\labelenumii{\theenumii)}
    \def\labelenumiii{\theenumiii.}
    \def\labelenumiv{\theenumiv.}
    \setlength\leftmargini{1em}
    \setlength\leftmarginii{1em}
    \setlength\leftmarginiii{1.02em}
    \setlength\leftmarginiv{0.96em}
    \setlength\labelsep{.5em}
    \setlength\labelwidth{\leftmargini}
    \addtolength\labelwidth{-\labelsep}
    \def\enumerate@listi{%
        \labelwidth=.75em
        \leftmargin=\labelwidth
        \advance\leftmargin by \labelsep
        }
    \def\@listI{%
        \leftmargin=\leftmargini
        \listparindent=12\p@
        \topsep=\smallskipamount
        \csletcs{\@currenvir @list@addons}{\@currenvir @listi}%
        \preto\@trivlist{%
        \def\makelabel##1{{\hfill\normalfont ##1}}%
        \csuse{\@currenvir @list@addons}}%
        }
    \def\enumerate@listii{%
        \labelwidth=.777em
        \leftmargin=\labelwidth
        \advance\leftmargin by \labelsep
        }
    \def\longlist@listii{%
        \leftmargin=\labelwidth
        \advance\leftmargin by \labelsep
        }
    \def\@listii{%
        \leftmargin=\leftmarginii
        \listparindent=12\p@
        \topsep=\z@
        \csletcs{\@currenvir @list@addons}{\@currenvir @listii}%
        \preto\@trivlist{%
            \def\makelabel##1{{\hfill\normalfont ##1}}%
            \csuse{\@currenvir @list@addons}%
            }%
        }%
    \def\enumerate@listiii{%
        \labelwidth=1.084em
        \leftmargin=\labelwidth
        \advance\leftmargin by \labelsep
        }
    \def\longlist@listiii{%
        \leftmargin=\labelwidth
        \advance\leftmargin by \labelsep
        }
    \def\@listiii{%
        \leftmargin=\leftmarginiii
        \labelwidth=\leftmarginiii
        \advance\labelwidth by -\labelsep
        \listparindent=12\p@
        \topsep=\z@
        \csletcs{\@currenvir @list@addons}{\@currenvir @listiii}%
        \preto\@trivlist{%
            \def\makelabel##1{{\hfill\normalfont ##1}}%
            \csuse{\@currenvir @list@addons}}%
        }
    \def\enumerate@listiv{%
        \labelwidth=.917em
        \leftmargin=\labelwidth
        \advance\leftmargin by \labelsep
        }
    \def\@listiv{%
        \leftmargin=\leftmarginiv
        \labelwidth=\leftmarginiv
        \advance\labelwidth by -\labelsep
        \listparindent=12\p@
        \topsep=\z@
        \csletcs{\@currenvir @list@addons}{\@currenvir @listiv}%
        \preto\@trivlist{%
            \def\makelabel##1{{\hfill\normalfont ##1}}%
            \csuse{\@currenvir @list@addons}%
            }%
        }
    % longlist
    \newcounter{longlist}
    \def\thelonglist{\@roman\c@longlist}
    \def\labellonglist{(\thelonglist)}
    \def\longlist{\@ifnextchar[{\@longlist}{\@longlist[]}}
    \def\@longlist[#1]{%
        \list
            {\labellonglist}%
            {%
                \usecounter{longlist}%
                \ifx.#1.%
                    \setcounter{longlist}{3}%
                    \settowidth\labelwidth{\labellonglist}%
                    \setcounter{longlist}{0}%
                \else
                    \settowidth{\labelwidth}{#1}%
                \fi
                \topsep=\smallskipamount
                \itemindent=\labelwidth
                \advance\itemindent by \labelsep
                \advance\itemindent by 1pc%
                \leftmargin=\z@
            }%
        }
    \let\endlonglist =\endlist
    %
    \setlength\topskip{10\p@}
    \setlength\maxdepth{.5\topskip}
    %
    \setlength\smallskipamount{6.5\p@ \@plus 1\p@ \@minus 1\p@}
    \setlength\medskipamount{13\p@ \@plus 3\p@ \@minus 3\p@}
    \setlength\bigskipamount{19.5\p@ \@plus 3\p@ \@minus 3\p@}
    % PAGE-BREAKING PENALTIES
    \clubpenalty=10000
    \widowpenalty=10000
    \tolerance=800
    \hbadness=800
    \emergencystretch=3\p@
    \hfuzz=1pt
    \AtBeginDocument{\interdisplaylinepenalty=100}
    %
    \arraycolsep=1.2\p@
    \setlength\tabbingsep{6\p@}
    \jot=6\p@
    \@ifundefined{mathindent}%
        {\newskip\mathindent}%
        {}
    \mathindent=2pc
    \AtBeginDocument{%
        \@ifundefined{@mathmargin}%
            {}%
            {\@mathmargin=\mathindent}%
        }
    \setlength\thinmuskip{2.5mu}
    \setlength\medmuskip{3.5mu plus 1.5mu minus 2mu}
    \setlength\thickmuskip{3.75mu plus 1.5mu}
    \setlength\mathsurround{0.1\p@}
    %
    \setlength{\parskip}{\z@}
    %
    \setlength\marginparsep{25\p@}
    \setlength\marginparwidth{120\p@}
    %
    \AtEndOfPackage{%
        \appto\set@natbib{%
            \let\save@NAT@bibsetnum\NAT@bibsetnum
            \def\bibsection{\specialsection*{\refname}}%
            \setlength\bibsep{\z@ \@plus .5\p@ \@minus .5\p@}%
            \setlength\bibindent{20\p@}%
            \preto\bibitem@fin{%
                \clubpenalty=\@M
                \widowpenalty=\@M
                }%
            \def\NAT@bibsetnum{%
                \labelsep=5\p@
                \NAT@openbibtrue
                \topsep=\z@
                \save@NAT@bibsetnum
                }%
            }%
        }
    \setpkgattr{title}{skip}{12\p@}
    \setpkgattr{frontmatter}{cmd}{\vskip20\p@ plus 3\p@ minus 3\p@}
    %
    \setpkgattr{abstract}{width}{23pc}
    \setpkgattr{abstract}{indent}{16pt\@gobble}% 2em and remove abstract name 
    %
    \setpkgattr{title}{size}{\normalsize\bfseries\mathversion{bold}\spaceskip.5em}
    \setpkgattr{author}{size}{\normalsize\scshape}
    \setpkgattr{abstract}{skip}{14\p@}
    \setpkgattr{address}{skip}{8\p@}
    \setpkgattr{address}{size}{\scriptsize\itshape}
    \setpkgattr{ead}{size}{}
    \setpkgattr{ead}{sep}{; }
    \setpkgattr{email}{text}{}
    \setpkgattr{url}{text}{}
    \setpkgattr{fullurl}{text}{}
    \setcounter{secnumdepth}{5}
    \setcounter{tocdepth}{6}
    \setpkgattr{keywordname}{size}{\itshape}
    \setpkgattr{runninghead}{size}{\footnotesize}
    \setpkgattr{pagenumber}{size}{\small}
    \setpkgattr{copyright}{size}{\fontsize{6}{7}\selectfont\raggedright}
    \setpkgattr{thebibliography}{size}{\footnotesize}
    %
    \setpkgattr{dochead}{case}{\MakeUppercase}
    \setpkgattr{title}{case}{\MakeUppercase}
    \setpkgattr{runninghead}{case}{\MakeUppercase}
    %
    \setpkgattr{author}{prefix}{By~}
    %
    \if@imsart@preprint
        \setpkgattr{copyright}{text}{}
    \else
        \setpkgattr{copyright}{text}{%
            \url@fmt{}{\itshape}{\journal@name}{\journal@url}\break
            \@ifnonempty{\@copyrightyear\@volume\@issue\@pagerange\break}\doi@text
            }
    \fi
    %
    \def\volume#1{\gdef\@volume{Vol. #1, }}
    \def\issue#1{\gdef\@issue{No. #1, }}
    \def\pubyear#1{\gdef\@pubyear{#1,}\gdef\@copyrightyear{#1 }}
    %
    \def\abstractname{}
    %
    \def\put@fmt@data{%
        \copyright@fmt
        \history@fmt
        \@thanks
        \keyword@fmt
        \abstract@fmt
        }
    %
    \def\contentsname@cmd{\specialsection*{\contentsname}}
    %
    \setlength\footnotesep{7\p@}
    \setlength{\skip\footins}{18\p@ \@plus 4\p@ \@minus 2\p@}
    \skip\@mpfootins = \skip\footins
    %
    \set@amsgen@frenchspacing
    %
    \ims@common@float@settings
\fi
%
% Set up parameters for the STS journal layout:
%
\if@stslayout
    \def\@xipt{11}
    \def\@xivpt{14}
    \def\@xvipt{16}
    \def\@xviiipt{18}
    \def\@xxpt{20}
    \def\@xxivpt{24}
    \renewcommand\normalsize{%
        \@setfontsize\normalsize\@xipt{13\p@ plus .5\p@ minus .5\p@}%
        \abovedisplayskip=7\p@ \@plus3\p@ \@minus3\p@
        \belowdisplayskip=\abovedisplayskip
        \abovedisplayshortskip=\abovedisplayskip
        \belowdisplayshortskip=\abovedisplayskip
        }
    \renewcommand\small{%
        \@setfontsize\small\@xpt{12pt plus .3pt minus .3pt}%
            \abovedisplayskip=6\p@ \@plus2\p@ \@minus2\p@
            \belowdisplayskip=\abovedisplayskip
            \abovedisplayshortskip=\abovedisplayskip
            \belowdisplayshortskip=\abovedisplayskip
        }
    \renewcommand\footnotesize{%
        \@setfontsize\footnotesize\@ixpt{11pt plus .2\p@ minus .2\p@}%
        \abovedisplayskip=6\p@ \@plus2\p@ \@minus2\p@
        \belowdisplayskip=\abovedisplayskip
        \abovedisplayshortskip=\abovedisplayskip
        \belowdisplayshortskip=\abovedisplayskip
        }
    \renewcommand\Large{\@setfontsize\Large\@xivpt{16}}
    \renewcommand\Large{\@setfontsize\Large\@xivpt{16}}
    \renewcommand\LARGE{\@setfontsize\LARGE\@xvipt{18}}
    \renewcommand\huge{\@setfontsize\huge\@xviiipt{20}}
    \renewcommand\Huge{\@setfontsize\Huge\@xxpt{24}}
    \RequirePackage[T1]{fontenc}
    \RequirePackage{times}
    \RequirePackage[scaled=.9]{helvet}
    \RequirePackage{textcomp}
    \RequirePackage{textcase}
    %
    \setlength\columnsep{2pc}
    \setlength\columnseprule{0\p@}
    \setlength\footskip{24\p@}
    \setlength\parskip{0\p@}
    \setlength\topskip{10\p@}
    \setlength\maxdepth{.5\topskip}
    \setlength\parindent{10\p@}
    \sv@parindent=\parindent
    %
    \declaremathsizes@as@in@mathtime
    \DeclareMathSizes{\@xxivpt}{\@xxivpt}{16}{12}
    % page-breaking penalties
    \clubpenalty=10000
    \widowpenalty=10000
    \emergencystretch=3\p@
    \hbadness=800
    \tolerance=800
    %
    \setlength\smallskipamount{6.5\p@ \@plus 1\p@ \@minus 1\p@}
    \setlength\medskipamount{13\p@ \@plus 3\p@ \@minus 3\p@}
    \setlength\bigskipamount{19.5\p@ \@plus 3\p@ \@minus 3\p@}
    %
    \marginparpush=5\p@
    \marginparsep=25\p@
    \marginparwidth=120\p@
    % frontmatter settings
    \setpkgattr{frontmatter}{style}{\raggedright}
    \setpkgattr{title}{style}{\noindent\raggedright}
    \setpkgattr{author}{style}{\noindent\raggedright}
    \setpkgattr{address}{style}{\raggedright}
    %
    \setpkgattr{title}{skip}{6\p@}
    \setpkgattr{authors}{skip}{10pt}
    \setpkgattr{address}{skip}{\z@}
    \setpkgattr{abstract}{skip}{36\p@}
    \setpkgattr{abstractname}{skip}{. }
    \setpkgattr{keyword}{skip}{8\p@}
    %
    \setpkgattr{abstract}{width}{28pc}
    \setpkgattr{keyword}{width}{28pc}
    %
    \setpkgattr{dochead}{size}{\sffamily\Large\bfseries\spaceskip.5em}
    \setpkgattr{title}{size}{%
        \sffamily\fontsize{26}{26}\selectfont
        \bfseries\mathversion{bold}\spaceskip.5em%
        }
    \setpkgattr{author}{size}{\sffamily\fontsize{13}{13}\selectfont\bfseries}
    \setpkgattr{address}{size}{\small\itshape}
    \setpkgattr{ead}{size}{}
    \setpkgattr{abstract}{size}{\normalsize\upshape}
    \setpkgattr{abstractname}{size}{\itshape}
    \setpkgattr{keyword}{size}{\normalsize\mdseries\upshape}
    \setpkgattr{keywordname}{size}{\itshape}
    \setpkgattr{thebibliography}{size}{\footnotesize}
    \setpkgattr{copyright}{size}{\normalfont\mdseries\fontsize{6}{7}\selectfont\raggedright}
    \setpkgattr{runninghead}{size}{\footnotesize}
    \setpkgattr{runninghead}{case}{\MakeUppercase}
    \setpkgattr{pagenumber}{size}{\small\bfseries}
    %
    \setpkgattr{keyword}{KWD}{Key words and phrases:}
    \setpkgattr{ead}{text}{\hbox{e-mail:}\ }
    \setpkgattr{url}{text}{URL: }
    \setpkgattr{fullurl}{text}{URL: }
    %
    \setcounter{secnumdepth}{5}
    \setcounter{tocdepth}{6}
    %
    \def\thethanks{\@arabic\c@thanks}
    % \printead:
    \def\printead@fmt#1{\ifnot@ead@star (#1)\else #1\fi}
    % all addresses are combined:
    \newtoks\address@toks
    \def\address@exist{0}
    \def\address{\@ifnextchar[{\@address}{\@address[]}}
    \def\@address[#1]#2{%
        \gdef\address@exist{1}%
        \begingroup
            \no@harm
            \xdef\@act{\global\noexpand\address@toks{\the\address@toks#2\ }}\@act
        \endgroup
        }
    \def\address@fmt{%
        \ifcase\address@exist
        \else
            \safe@footnotetext{\hskip-\parindent\address@style\address@size\the\address@toks}%
        \fi
        }
    \def\put@fmt@data{%
        \copyright@fmt
        \address@fmt
        \@thanks
        \abstract@fmt
        \keyword@fmt
        \if@twocolumn
            \frontmatter@cmd
        \fi
        }
    \def\firstpage@cmd{%
        \if@twocolumn
            \markboth{\@runauthor}{\@runtitle}%
            \address@fmt
            \@thanks
        \fi
        }
    % footnotes
    \setlength\footnotesep{7\p@}
    \setlength{\skip\footins}{18\p@ \@plus 4\p@ \@minus 2\p@}
    \skip\@mpfootins = \skip\footins
    %
    \arraycolsep=1.2\p@
    \arrayrulewidth=1\p@
    \AtBeginDocument{\interdisplaylinepenalty=100}
    \jot=6\p@
    \@ifundefined{mathindent}%
        {\newskip\mathindent}%
        {}
    \mathindent=2pc
    \AtBeginDocument{%
        \mathindent=2pc
        \@ifundefined{@mathmargin}%
            {}%
            {\@mathmargin=\mathindent}%
        }
    \setlength\medmuskip{3.5mu plus 1.5mu minus 2mu}
    \setlength\thickmuskip{3.75mu plus 1.5mu}
    \setlength\thinmuskip{2.5mu}
    \setlength\mathsurround{0.1\p@}
    % lists
    \let\quotation@size\relax
    \def\quotation@leftmargin{2pc}
    \def\quotation@rightmargin{2pc}
    \def\quotation@itemindent{\z@}
    \let\quote@size\relax
    \topsep=\smallskipamount
    \def\labelenumii{\theenumii)}
    \def\labelitemiv{{\footnotesize +}}
    \def\@listi{\leftmargin=\leftmargini}
    \def\@listii{%
        \leftmargin=\leftmarginii
        \labelwidth=\leftmarginii
        \advance\labelwidth by -\labelsep
        \topsep=\z@
        }
    \let\@listI\@listi
    % longlist
    \newcounter{longlist}
    \def\thelonglist{\@roman\c@longlist}
    \def\labellonglist{\thelonglist)}
    \def\longlist{\@ifnextchar[{\@longlist}{\@longlist[]}}
    \def\@longlist[#1]{%
        \list
            {\labellonglist}%
            {%
                \usecounter{longlist}%
                \ifx.#1.%
                    \setcounter{longlist}{3}%
                    \settowidth\labelwidth{\labellonglist}%
                    \setcounter{longlist}{0}%
                \else
                    \settowidth{\labelwidth}{#1}%
                \fi
                \topsep=\smallskipamount
                \itemindent=\labelwidth
                \advance\itemindent by \labelsep
                \advance\itemindent by 1pc%
                \leftmargin=\z@
            }%
        }
    \let\endlonglist =\endlist
    %
    \set@amsgen@frenchspacing
    %
    \ims@common@float@settings
\fi
%
% Set up parameters for the BJ journal layout:
%
\if@bjlayout
    \IfFileExists{newtxmath.sty}%
        {\edef\new@tx@math@sty@exists{1}}%
        {}
    \RequirePackage[T1]{fontenc}
    \def\rmdefault{utm}
    \ifdefined\new@tx@math@sty@exists
        \def\ttdefault{ucr}
    \else
        \def\ttdefault{pcr}% ucr in old systems are somewhat buggy
    \fi
    \RequirePackage[scaled=0.9]{helvet}
    \RequirePackage{textcomp}
    \ifdefined\HCode
    \else
        \ifdefined\new@tx@math@sty@exists
            \RequirePackage[cmintegrals,bigdelims]{newtxmath}
        \else
            \PackageWarning{imsart}{newtxmath package isn't available, 
                amsmath is used instead}%
            \RequirePackage{amsmath}
        \fi
    \fi
    \let\openbox\relax
    \RequirePackage{graphicx}%
    \RequirePackage{letterspace}%
    \def\setlstracking#1{\csdef{MT@letterspace}{#1}}%
    \def\texttracking#1#2{\bgroup\setlstracking{#1}\textls{#2}\egroup}%
    %
    \appto\ps@copyright{%
        \def\@evenhead{\parbox[c]{\textwidth}{\copyright@size\copyright@text}}%
        \let\@oddhead\@evenhead
        }
    \def\@xipt{11}
    \def\@xivpt{14}
    \def\@xvipt{16}
    \def\@xviiipt{18}
    \def\@xxpt{20}
    \def\@xxivpt{24}
    %
    % lists
    % 
    \RequirePackage{enumitem}
    % old settings (for compatibility)
    \parsep=\z@
    \topsep=\z@
    \partopsep=\z@
    \itemsep=\z@
    \labelsep=.5em
    \setlength\leftmargin{2em}
    \setlength\leftmargini{2em}
    \setlength\leftmarginii{2.2em}
    \setlength\leftmarginiii{1.87em}
    \setlength\leftmarginiv{1.7em}
    \setlength\labelwidth{\leftmargini}
    \addtolength\labelwidth{-\labelsep}
    % new settings
    \def\bj@list@makelabel#1{\hfill\enit@format{#1}}%
    \setlist{itemsep=\z@,labelsep=0.5em,partopsep=\z@,parsep=\z@,listparindent=10pt}%
    \setlist[itemize]{align=left,format=\normalfont,before={\let\makelabel\bj@list@makelabel}}
    \setlist[enumerate]{align=left,format=\normalfont,before={\let\makelabel\bj@list@makelabel}}
    \setlist[description]{labelwidth=*,leftmargin=10\p@,listparindent=\z@,topsep=6\p@ \@plus \p@ \@minus \p@,align=left}
    \@ifundefined{enit@setleft}%
        {%
            \PackageWarning{imsart}{older enumitem is used, left alignment may behave strangely}%
            \setlist[itemize,1]{label=$\bullet$,labelindent=1em,leftmargin=*,topsep=6\p@ \@plus \p@ \@minus \p@}%
            \setlist[itemize,2]{label=\textendash,labelindent=0em,leftmargin=*,topsep=\z@}%
            \setlist[itemize,3]{label=$\ast$,topsep=\z@,labelindent=0.05em,leftmargin=*}%
            \setlist[itemize,4]{label={{\footnotesize +}},topsep=\z@,labelindent=0em,leftmargin=*}%
            \setlist[enumerate,1]{label=\arabic*.,ref=\arabic*,labelindent=1em,leftmargin=*,topsep=6\p@ \@plus \p@ \@minus \p@}%
            \setlist[enumerate,2]{label=\alph*),ref=\alph*,topsep=\z@,labelindent=-0.33em,leftmargin=*}%
            \setlist[enumerate,3]{label=\roman*.,ref=\roman*,labelindent=-0.5em,leftmargin=*,topsep=\z@}%
            \setlist[enumerate,4]{label=\Alph*.,ref=\Alph*,labelindent=-0.2em,leftmargin=*,topsep=\z@}%
        }%
        {%
            \setlist[itemize,1]{label=$\bullet$,left=1em,topsep=6\p@ \@plus \p@ \@minus \p@}%
            \setlist[itemize,2]{label=\textendash,left=0em,topsep=\z@}%
            \setlist[itemize,3]{label=$\ast$,topsep=\z@,left=0.05em}%
            \setlist[itemize,4]{label={{\footnotesize +}},topsep=\z@,left=0em}%
            \setlist[enumerate,1]{label=\arabic*.,ref=\arabic*,left=1em,topsep=6\p@ \@plus \p@ \@minus \p@}%
            \setlist[enumerate,2]{label=\alph*),ref=\alph*,topsep=\z@,left=-0.33em}%
            \setlist[enumerate,3]{label=\roman*.,ref=\roman*,left=-0.5em,topsep=\z@}%
            \setlist[enumerate,4]{label=\Alph*.,ref=\Alph*,left=-0.2em,topsep=\z@}%
        }
    %
    \def\quote@leftmargin{1pc}
    \def\quote@rightmargin{1pc}
    \appto\quote@hook{\itemsep=\z@}
    \def\quotation@itemindent{10\p@}
    \def\quotation@parindent{10\p@}
    \def\quotation@rightmargin{1pc}
    \appto\quotation@hook{\itemsep=\z@}
    %
    \declaremathsizes@as@in@mathtime
    \renewcommand\normalsize{%
        \@setfontsize\normalsize\@xpt{12\p@ \@plus .3\p@ \@minus .3\p@}%
        \abovedisplayskip=10\p@ \@plus2\p@ \@minus2\p@
        \abovedisplayshortskip=6\p@ \@plus 2\p@
        \belowdisplayskip=\abovedisplayskip
        \belowdisplayshortskip=\abovedisplayshortskip
        }
    \normalsize
    \renewcommand\small{%
        \@setfontsize\small\@ixpt{11\p@ plus .2\p@ minus .2\p@}%
        \abovedisplayskip=7.5\p@ \@plus4\p@ \@minus1\p@
        \belowdisplayskip=\abovedisplayskip
        \abovedisplayshortskip=\abovedisplayskip
        \belowdisplayshortskip=\abovedisplayskip
        }
    \renewcommand\footnotesize{%
        \@setfontsize\footnotesize\@viiipt{10\p@ plus .1pt minus .1pt}%
        \abovedisplayskip=6\p@ \@plus4\p@ \@minus1\p@
        \belowdisplayskip=\abovedisplayskip
        \abovedisplayshortskip=\abovedisplayskip
        \belowdisplayshortskip=\abovedisplayskip
        }
    \renewcommand\Large{\@setfontsize\Large\@xivpt{16}}
    \renewcommand\LARGE{\@setfontsize\LARGE\@xvipt{18}}
    \renewcommand\huge{\@setfontsize\huge\@xviiipt{20}}
    \renewcommand\Huge{\@setfontsize\Huge\@xxpt{24}}
    %
    \def\@makefntext@parindent{\noindent\parindent=10\p@}
    %
    \def\doi#1{%
        \gdef\@doi{#1}%
        \gdef\doi@text{\url{\doi@base\@doi}}%
    }
    %
    \setpkgattr{frontmatter}{cmd}{%
        \vskip14\p@ plus 3\p@ minus 3\p@
        \@afterindentfalse\@afterheading
        }%
    %
    \def\and{\unskip\ and }
    \setpkgattr{frontmatter}{style}{\raggedright}
    \setpkgattr{title}{style}{\noindent\raggedright}
    \setpkgattr{author}{style}{\noindent\raggedright}
    \setpkgattr{address}{style}{\raggedright}
    \setpkgattr{keyword}{style}{\raggedright}
    %
    \setpkgattr{title}{skip}{10\p@}
    \setpkgattr{abstract}{skip}{16\p@}
    \setpkgattr{abstractname}{skip}{}
    \setpkgattr{address}{skip}{6\p@\def\address@skip{0pt}}
    %
    \setpkgattr{abstract}{width}{\textwidth}
    \setpkgattr{keyword}{width}{\textwidth}
    \setpkgattr{history}{width}{\textwidth}
    %
    \setpkgattr{dochead}{size}{\normalsize\MakeUppercase}
    \setpkgattr{title}{size}{\fontsize{21}{26}\selectfont}
    \setpkgattr{author}{size}{\normalsize\spaceskip=0.2em}
    \def\write@fnms@metadata#1{}
    \def\write@snm@metadata#1{}
    \def\write@inits@metadata#1{}
    \def\fnms@size#1{\write@fnms@metadata{#1}\texttracking{105}{\MakeUppercase{#1}}}
    \def\snm@size#1{\write@snm@metadata{#1}\texttracking{105}{\MakeUppercase{#1}}}
    \def\inits@size#1{\write@inits@metadata{#1}}
    %
    \setpkgattr{address}{size}{\small\itshape}
    \setpkgattr{abstract}{size}{\small\upshape}
    \setpkgattr{keyword}{size}{\small\upshape\rightskip=\the\rightskip plus1.0fil}
    \setpkgattr{keywordname}{size}{\itshape}
    \setpkgattr{history}{size}{\raggedright\small\itshape}
    %
    \setpkgattr{runninghead}{size}{\normalsize\itshape}
    \setpkgattr{pagenumber}{size}{\normalsize\upshape}
    \setpkgattr{copyright}{size}{\normalsize}
    \setpkgattr{footline}{size}{\footnotesize}
    \setpkgattr{thebibliography}{size}{\small}
    %
    \setpkgattr{email}{text}{}
    \setpkgattr{url}{text}{}
    \setpkgattr{fullurl}{text}{}
    \setpkgattr{ead}{sep}{, }
    \setpkgattr{ead}{size}{}
    \if@imsart@preprint
        \setpkgattr{copyright}{text}{}
    \else
        \setpkgattr{copyright}{text}{\url@fmt{}{\itshape}{\journal@name}{\journal@url}\ 
            \textbf{\number\@volume}(\@issue), \number\@pubyear, \@pagerange\\\doi@text}
    \fi
    \setpkgattr{history}{postfix}{}
    \setpkgattr{revised}{prefix}{ and revised~}
    \setpkgattr{keyword}{postfix}{}
    \def\sep{\unskip\string; }%
    %
    \setpkgattr{keyword}{KWD}{Keywords:}
    %
    \def\put@fmt@data{%
        \copyright@fmt
        \@thanks
        \abstract@fmt
        \keyword@fmt
        \tableofcontents@fmt
        }
    %
    \AtBeginDocument{%
        \ifcsundef{jobstart@date@info}%
            {\xdef\jobstart@date@info{\the\year\two@digits{\the\month}\two@digits{\the\day}}}%
            {}%
        \ifnum\jobstart@date@info>20211202\relax
            \def\author@sep@by@number#1{%
                \@tempcntb=\author@num
                \advance\@tempcntb by \m@ne
                \ifnum#1=\@tempcntb
                    \unskip\unkern\ \and
                \else
                    \ifnum#1=\author@num
                    \else
                        \unskip\unkern,
                    \fi
                \fi
                \ignorespaces
                }%
        \fi
        }
    % invoke \printhistory at end of document:
    \let\old@enddocument\enddocument
    \def\enddocument{\history@fmt\old@enddocument}
    %
    \def\volume#1{\gdef\@volume{#1}}
    \def\issue#1{\gdef\@issue{#1}}
    \def\pubyear#1{\gdef\@pubyear{#1}\gdef\@copyrightyear{#1}}
    %
    \def\abstractname{}
    %
    \def\evenhead@fmt#1{\hfill#1}
    \def\oddhead@fmt#1{#1\hfill}
    %
    \def\fnum@table{\tablename~\thetable.}
    %
    \long\def\@maketablecaption#1#2{%
        \centering
        \parbox[t]{\tablewidth}{\small\textbf{#1}\enskip #2\par}%
        \vskip\belowcaptionskip
        }
    %
    \setcounter{secnumdepth}{5}
    \setcounter{tocdepth}{6}
    %
    \setlength\medskipamount{12\p@ \@plus 3\p@ \@minus 2\p@}
    \setlength\bigskipamount{18\p@ \@plus 3\p@ \@minus 2\p@}
    \setlength\marginparsep{25\p@}
    \setlength\marginparwidth{120\p@}
    %
    \renewcommand\figurename{Figure}
    %
    \long\def\@makecaption#1#2{%
        \vskip\abovecaptionskip
        \small
        \textbf{#1}. #2\par
        \vskip\belowcaptionskip
        }
    \def\tabnotes@alignment{\centering}
    %
    \AtBeginDocument{\interdisplaylinepenalty=100}
    \arraycolsep=1.2\p@
    \columnsep=12\p@
    \jot=6\p@
    \@ifundefined{mathindent}%
        {\newskip\mathindent}%
        {}
    \mathindent=2pc
    \setlength\medmuskip{3.5mu plus 1.5mu minus 2mu}
    \setlength\thickmuskip{3.75mu plus 1.5mu}
    \setlength\thinmuskip{2.5mu}
    \setlength\tabbingsep{6\p@}
    %
    \let\footnoterule\relax
    \setlength\footnotesep{7\p@}
    \setlength{\skip\footins}{18\p@ \@plus 4\p@ \@minus 2\p@}
    \skip\@mpfootins = \skip\footins
    \setlength{\parskip}{\z@}
    % PAGE-BREAKING PENALTIES
    \clubpenalty=10000
    \tolerance=800
    \widowpenalty=10000
    %
    \set@amsgen@frenchspacing
    %
    \ims@common@float@settings
    %
    \AtEndOfPackage{%
        \IfFileExists{imsart-bj.cnf}%
            {}%
            {%
                \RequirePackage[colorlinks]{hyperref}%
                \setpkgattr{copyright}{text}{\raisebox{2pt}{\url@fmt{}{\itshape}{\journal@name}{\journal@url}}}%
            }%
        \appto\set@natbib{%
            \setlength\bibsep{\z@ \@plus .5\p@ \@minus .5\p@}%
            \let\bej@sv@bibsetup\@bibsetup
            \def\@bibsetup#1{%
                \topsep=\z@
                \bej@sv@bibsetup{#1}%
                }%
            \preto\bibitem@fin{%
                \clubpenalty=\@M
                \widowpenalty=\@M
                }%
            \@ifpackagewith{natbib}{numbers}%
                {%
                    \def\NAT@def@citea{\def\@citea{\NAT@separator}}%
                    \def\NAT@def@citea@space{\def\@citea{\NAT@separator}}%
                    \def\NAT@def@citea@close{\def\@citea{\NAT@@close\NAT@separator}}%
                    \def\NAT@def@citea@box{\def\@citea{\NAT@mbox{\NAT@@close}\NAT@separator}}%
                }%
                {%
                    \setcitestyle{comma}%
                }%
            \csname more@natbib@settings\endcsname
            }%
        }
    \flushbottom
\fi
%
% Set up parameters for the AIHP journal layout:
%
\if@aihplayout
    %
    \def\@xipt{11}
    \def\@xivpt{14}
    \def\@xvipt{16}
    \def\@xviiipt{18}
    \def\@xxpt{20}
    \def\@xxivpt{24}
    %
    \renewcommand\normalsize{%
        \@setfontsize\normalsize\@xpt{12\p@ \@plus .3\p@ \@minus .3\p@}%
        \abovedisplayskip=10\p@ \@plus 2\p@ \@minus2\p@
        \abovedisplayshortskip=6\p@ \@plus 2\p@
        \belowdisplayshortskip=6\p@ \@plus 2\p@
        \belowdisplayskip=\abovedisplayskip
        \let\@listi\@listI
        }
    \renewcommand\small{%
        \@setfontsize\small\@ixpt{11\p@ \@plus .2\p@ \@minus .2\p@}%
        \abovedisplayskip=7.5\p@ \@plus 4\p@ \@minus 1\p@
        \belowdisplayskip=\abovedisplayskip
        \abovedisplayshortskip=\abovedisplayskip
        \belowdisplayshortskip=\abovedisplayskip
        }
    \renewcommand\footnotesize{%
        \@setfontsize\footnotesize\@viiipt{10\p@ \@plus .1\p@ \@minus .1\p@}%
        \abovedisplayskip=6\p@ \@plus 4\p@ \@minus 1\p@
        \belowdisplayskip=\abovedisplayskip
        \abovedisplayshortskip=\abovedisplayskip
        \belowdisplayshortskip=\abovedisplayskip
        }
    \renewcommand\Large{\@setfontsize\Large\@xivpt{16}}
    \renewcommand\LARGE{\@setfontsize\LARGE\@xvipt{18}}
    \renewcommand\huge{\@setfontsize\huge\@xviiipt{20}}
    \renewcommand\Huge{\@setfontsize\Huge\@xxpt{24}}
    %
    \RequirePackage[T1]{fontenc}
    \RequirePackage{times}
    \RequirePackage[scaled=.9]{helvet}
    \RequirePackage{textcomp}
    %
    % FRONT MATTER SKIPS
    \setpkgattr{title}{skip}{64\p@}
    \setpkgattr{authors}{skip}{14\p@}
    \setpkgattr{address}{skip}{12\p@\def\address@skip{0pt}}
    \setpkgattr{abstractname}{skip}{.\enskip}
    \setpkgattr{history}{skip}{4\p@}
    \setpkgattr{abstract}{skip}{16\p@}
    %
    \setpkgattr{fline}{cmd}{\vskip22\p@ \hrule}
    \setpkgattr{lline}{cmd}{\vskip10\p@ \hrule}
    %
    % FRONT MATTER DIMENSIONS
    \setpkgattr{abstract}{width}{\textwidth}
    \setpkgattr{abstract}{indent}{\z@}
    \setpkgattr{keyword}{width}{\textwidth}
    \setpkgattr{keyword}{indent}{\z@}
    %
    % FRONT MATTER FONTS
    \setpkgattr{title}{size}{\huge}
    \setpkgattr{author}{size}{\Large}
    \setpkgattr{abstract}{size}{\small\upshape}
    \setpkgattr{ead}{size}{}
    \setpkgattr{keywordname}{size}{\itshape}
    \setpkgattr{thebibliography}{size}{\footnotesize}
    \let\inits@size\@gobble
    \setcounter{tocdepth}{6}
    %
    \def\put@fmt@data{%
        \copyright@fmt
        \@thanks
        \history@fmt
        \fline@cmd
        \abstract@fmt
        \keyword@fmt
        \lline@cmd
        \tableofcontents@fmt
        }
    %
    \setpkgattr{keyword}{KWD}{Keywords:}
    \setpkgattr{keyword}{MSC2010}{MSC:}
    \setpkgattr{keyword}{postfix}{\unskip}
    \setpkgattr{email}{text}{}
    \setpkgattr{url}{text}{}
    \setpkgattr{fullurl}{text}{}
    %
    \def\labelitemii{\textendash}
    \def\labelitemiv{{\footnotesize +}}
    %
    \arraycolsep=1.2\p@
    \setlength\tabbingsep{6\p@}
    \jot=6\p@
    \@ifundefined{mathindent}%
        {\newskip\mathindent}%
        {}
    \mathindent=2pc
    \AtBeginDocument{%
        \mathindent=2pc
        \@ifundefined{@mathmargin}%
            {}%
            {\@mathmargin=\mathindent}%
        }
    \setlength\medmuskip{3.5mu plus 1.5mu minus 2mu}
    \setlength\thickmuskip{3.75mu plus 1.5mu}
    \setlength\thinmuskip{2.5mu}
    \setlength\mathsurround{0.1\p@}
    \columnsep=12\p@
    \setlength\footnotesep{7\p@}
    \setlength{\skip\footins}{18\p@ \@plus 4\p@ \@minus 2\p@}
    \skip\@mpfootins = \skip\footins
    \setlength{\parskip}{\z@}
    \setlength\marginparsep{25\p@}
    \setlength\marginparwidth{120\p@}
    %
    % PAGE-BREAKING PENALTIES
    \clubpenalty=10000
    \widowpenalty=10000
    \emergencystretch=3\p@
    \hbadness=800
    \tolerance=800
    \AtBeginDocument{%
        \interdisplaylinepenalty=100\relax
        }
    %
    \set@amsgen@frenchspacing
    %
    \ims@common@float@settings
\fi
%
% Set up parameters for the BJPS journal layout:
%
\if@bjpslayout
    \def\@xipt{11}
    \def\@xivpt{14}
    \def\@xvipt{16}
    \def\@xviiipt{18}
    \def\@xxpt{20}
    \def\@xxivpt{24}
    \declaremathsizes@as@in@mathtime
    \renewcommand\normalsize{%
        \@setfontsize\normalsize\@xipt{13\p@ plus .5\p@ minus .5\p@}%
        \abovedisplayskip=7\p@ \@plus3\p@ \@minus3\p@
        \belowdisplayskip=\abovedisplayskip
        \abovedisplayshortskip=\abovedisplayskip
        \belowdisplayshortskip=\abovedisplayskip
        }
    \renewcommand\small{%
        \@setfontsize\small\@xpt{12pt plus .3pt minus .3pt}%
        \abovedisplayskip=6\p@ \@plus2\p@ \@minus2\p@
        \belowdisplayskip=\abovedisplayskip
        \abovedisplayshortskip=\abovedisplayskip
        \belowdisplayshortskip=\abovedisplayskip
        }
    \renewcommand\footnotesize{%
        \@setfontsize\footnotesize\@ixpt{11pt plus .2\p@ minus .2\p@}%
        \abovedisplayskip=6\p@ \@plus2\p@ \@minus2\p@
        \belowdisplayskip=\abovedisplayskip
        \abovedisplayshortskip=\abovedisplayskip
        \belowdisplayshortskip=\abovedisplayskip
        }
    \renewcommand\scriptsize{\@setfontsize\scriptsize\@viiipt\@xpt}
    \renewcommand\Large{\@setfontsize\Large\@xivpt{16}}
    \renewcommand\LARGE{\@setfontsize\LARGE\@xvipt{18}}
    \renewcommand\huge{\@setfontsize\huge\@xviiipt{20}}
    \renewcommand\Huge{\@setfontsize\Huge\@xxpt{24}}
    %
    \RequirePackage[T1]{fontenc}
    \RequirePackage{times}
    \RequirePackage[scaled=.9]{helvet}
    \RequirePackage{textcomp}
    \normalfont\normalsize
    %
    \setlength\topskip{10\p@}
    \setlength\footnotesep{7\p@}
    \setlength{\skip\footins}{18\p@ \@plus 4\p@ \@minus 2\p@}
    \skip\@mpfootins = \skip\footins
    %
    \marginparpush=5pt
    \marginparwidth=120pt
    \marginparsep=25pt
    %
    \setlength\smallskipamount{6.5\p@ \@plus 1\p@ \@minus 1\p@}
    \setlength\medskipamount{13\p@ \@plus 3\p@ \@minus 3\p@}
    \setlength\bigskipamount{19.5\p@ \@plus 3\p@ \@minus 3\p@}
    %
    \clubpenalty=10000
    \widowpenalty=10000
    \tolerance=800
    \hbadness=800
    \AtBeginDocument{\interdisplaylinepenalty=100}
    %
    \jot=6\p@
    \@ifundefined{mathindent}%
        {\newskip\mathindent}%
        {}
    \mathindent=2pc
    \AtBeginDocument{%
        \@ifundefined{@mathmargin}%
            {}%
            {\@mathmargin=\mathindent}%
        }
    \setlength\mathsurround{0.1\p@}
    \setlength\thinmuskip{2.5mu}
    \setlength\medmuskip{3.5mu plus 1.5mu minus 2mu}
    \setlength\thickmuskip{3.75mu plus 1.5mu}
    %
    \setpkgattr{keyword}{AMS}{AMS 2000 subject classifications.}
    \setpkgattr{keyword}{KWD}{Keywords and phrases.}
    \setpkgattr{keyword}{MSC}{\ims@href{\msc@url}{MSC2020 subject classifications}.}
    \setpkgattr{keyword}{MSC2020}{\ims@href{\msc@url}{MSC2020 subject classifications}.}
    %
    \setpkgattr{abstractname}{skip}{.\enskip}
    %
    \setpkgattr{title}{size}{\Large\bfseries\mathversion{bold}}
    \setpkgattr{keywordname}{size}{\itshape}
    \setpkgattr{runninghead}{size}{\footnotesize}
    \setpkgattr{pagenumber}{size}{\small}
    \setpkgattr{thebibliography}{size}{\footnotesize}
    \setpkgattr{keyword}{postfix}{\unskip.}
    \let\inits@size\@gobble
    %
    \if@imsart@preprint
        \setpkgattr{copyright}{text}{}%
    \else
        \setpkgattr{copyright}{text}{\url@fmt{}{\itshape}{\journal@name}{\journal@url}\break
            \@ifnonempty{\@volume\@pubyear\@pagerange\break}%
            \@ifnonempty{\journal@issn\break}\doi@text
            }%
    \fi
    \setpkgattr{address}{style}{\centering\normalfont}
    \setpkgattr{address}{size}{\scriptsize\itshape}
    \setpkgattr{ead}{size}{}
    \setpkgattr{ead}{sep}{; }
    \setpkgattr{email}{text}{}
    \setpkgattr{url}{text}{}
    \setpkgattr{fullurl}{text}{}
    \setcounter{tocdepth}{6}
    \def\thethanks{\@arabic\c@thanks}
    %
    \arraycolsep=1.2\p@
    \setlength\tabbingsep{6\p@}
    %
    \def\labelenumi{\theenumi.}
    \def\labelenumii{\theenumii)}
    \def\labelenumiii{\theenumiii.}
    \def\labelenumiv{\theenumiv.}
    \def\labelitemi{\textbullet}
    \def\labelitemii{\textendash}
    \def\labelitemiii{\textasteriskcentered}
    \def\labelitemiv{{\footnotesize +}}
    %
    \topsep=\smallskipamount
    %
    \def\@listi{\leftmargin=\leftmargini}
    %
    \def\@listii{%
        \leftmargin=\leftmarginii
        \labelwidth=\leftmarginii
        \advance\labelwidth by -\labelsep
        \topsep=\z@
        }%
    %
    \set@amsgen@frenchspacing
    %
    \ims@common@float@settings
\fi
%
% smart \MR
% code suggested by Vilmos Prokaj <prokaj@cs.elte.hu>
% solves the problem when MR is in a format:
% \MR{MR1037262 (91i:60148)}
% Without MR this macro removes the MR prefix if it
% is present unchange the argument otherwise
\def\woMR#1{\w@MR#1MR#1MR\relax}
\def\w@MR#1MR#2MR#3\relax{#2}
%
% this splits MR... (...)
\def\@MR#1 #2\relax#3{%
    \href{https://mathscinet.ams.org/mathscinet-getitem?mr=#1}%
    {\MRfixed{#3}}%
    }%
%
\def\MRfixed{MR\woMR}
%
\let\MR\MRfixed
%
% interaction with hyperref
%
\def\test@hyperref{\@ifundefined{Hy@SetCatcodes}{}{\imsart@hyperref@settings}}
%
\AtBeginDocument{\test@hyperref}
%
\def\imsart@hyperref@settings{%
    % hooks for the \thanksref, \thankstext:
    \def\thankref@hyperlink##1{%
        \edef\@tempx{##1thanks}%
        \hbox{\hyperlink{##1}{\saferef{\@tempx}}}%
        }%
    \def\thanks@hypertarget##1{\smash{\raise\baselineskip\hbox{\protect\hypertarget{##1}{}}}}%
    % redefine pagenumbering
    \let\pagenumbering\ims@pagenumbering
    % activate href
    \let\ims@href\href
    \let\safe@phantomsection\phantomsection
    % put document info
    \def\write@pdfinfo##1##2{\protected@write\@auxout{\no@harm}{\string\gdef\string##1{##2}}}%
    \@ifundefined{hy@title}{}{\pdfstringdef\@pdftitle{\hy@title}}%
    \@ifundefined{hy@author}{}{\pdfstringdef\@pdfauthor{\hy@author}}%
    \@ifundefined{hy@subject}{}{\pdfstringdef\@pdfsubject{\hy@subject}}%
    \@ifundefined{hy@keywords}{}{\pdfstringdef\@pdfkeywords{\hy@keywords}}%
    %
    \@ifundefined{user@hy@title}{}{\global\let\@pdftitle\user@hy@title}%
    \@ifundefined{user@hy@author}{}{\global\let\@pdfauthor\user@hy@author}%
    \@ifundefined{user@hy@subject}{}{\global\let\@pdfsubject\user@hy@subject}%
    \@ifundefined{user@hy@keywords}{}{\global\let\@pdfkeywords\user@hy@keywords}%
    %
    % MR with hyperef
    \def\MR##1{\@MR##1 \relax{##1}}%
    %
    \if@print@bid@doi
        \urlstyle{rm}%
        \let\ims@nolinkurl\nolinkurl
    \fi
    }
%
\def\write@pdfinfo#1#2{}
%
\newtoks\authors@list
\def\addto@authors@list#1{%
    \begingroup
        \no@harm
        \xdef\@act{\global\noexpand\authors@list{\the\authors@list#1}}%
        \@act
    \endgroup
    }
%
\newtoks\keywords@list
\def\addto@keywords@list#1{%
    \begingroup
        \no@harm
        \xdef\@act{\global\noexpand\keywords@list{\the\keywords@list#1}}\@act
    \endgroup
    }
%
% SECTION, SUBSECTION ETC.
% we do not like article appearance:
%
\renewcommand\section{%
    \@startsection
        {section}%
        {1}%
        {\z@}%
        {-\bigskipamount}%
        {\medskipamount}%
        {\raggedright\bfseries\mathversion{bold}}%
    }
\renewcommand\subsection{%
    \@startsection
        {subsection}%
        {2}%
        {\z@}%
        {-\bigskipamount}%
        {\medskipamount}%
        {\raggedright\bfseries\itshape\mathversion{bold}}%
    }
\renewcommand\subsubsection{%
    \@startsection
        {subsubsection}%
        {3}%
        {\z@}%
        {-\bigskipamount}%
        {\medskipamount}%
        {\raggedright\itshape}%
    }
\renewcommand\paragraph{%
    \@startsection
        {paragraph}%
        {4}%
        {\z@}%
        {\medskipamount}%
        {-1em}%
        {\bfseries}%
    }
\renewcommand\subparagraph{%
    \@startsection
        {subparagraph}%
        {5}%
        {\z@}%
        {\medskipamount}%
        {-1em}%
        {\itshape}%
    }
% Format for the counter:
\def\section@numbersep{.}
\def\subsection@numbersep{.}
\def\subsubsection@numbersep{.}
\def\paragraph@numbersep{.}
\def\subparagraph@numbersep{.}
%
\def\@seccntformat#1{{%
    \csname #1@prefix\endcsname
    \csname the#1\endcsname
    \csname#1@numbersep\endcsname\enspace
    }}
%
\let\specialsection\section
%
\@namedef{specialsection*}{\section*}
%
% sections: bjpslayout
%
\if@bjpslayout
    \renewcommand\section{%
        \@startsection
            {section}%
            {1}%
            {\z@}%
            {-\bigskipamount}%
            {\medskipamount}%
            {\large\bfseries\mathversion{bold}\raggedright}%
        }
    \renewcommand\subsection{%
        \@startsection
            {subsection}%
            {2}%
            {\z@}%
            {-\medskipamount}%
            {\smallskipamount}%
            {\bfseries\mathversion{bold}\raggedright}%
        }
    \renewcommand\subsubsection{%
        \@startsection
            {subsubsection}%
            {3}%
            {\z@}%
            {\medskipamount}%
            {-10pt}%
            {\normalsize\itshape}%
        }
    %
    \def\subsubsection@prefix{\upshape}
    %
    \def\section@numbersep{}
    \def\subsection@numbersep{}
    \def\subsubsection@numbersep{}
    \def\paragraph@numbersep{}
    \def\subparagraph@numbersep{}
\fi
%
% sections: IMS layout
%
\if@imslayout
    \renewcommand\section{%
        \@startsection
            {section}%
            {1}%
            {\parindent}%
            {\medskipamount}%
            {-10pt}%
            {\normalsize\upshape\bfseries\mathversion{bold}}%
        }
    \renewcommand\subsection{%
        \@startsection
            {subsection}%
            {2}%
            {\parindent}%
            {\medskipamount}%
            {-10pt}%
            {\subsection@shape}%
        }
    \def\subsection@shape{\normalsize\itshape}
    \def\subsection@prefix{\upshape}
    \renewcommand\subsubsection{%
        \@startsection
            {subsubsection}%
            {3}%
            {\parindent}%
            {\medskipamount}%
            {-10pt}%
            {\normalsize\itshape}%
        }
    \def\subsubsection@prefix{\upshape}
    \renewcommand\paragraph{%
        \@startsection
            {paragraph}%
            {4}%
            {\z@}%
            {\smallskipamount}%
            {-10pt}%
            {\normalsize\itshape}%
        }
    \renewcommand\subparagraph{%
        \@startsection
            {subparagraph}%
            {5}%
            {\z@}%
            {0.1pt}%
            {-1em}%
            {\normalsize\itshape}%
        }
    % must be used for the appendix \section and \thebibliography
    \renewcommand\specialsection{%
        \@startsection
            {section}%
            {1}%
            {\z@}%
            {\medskipamount}%
            {\smallskipamount}%
            {\let\@hangfrom\noindent\normalsize\centering\MakeTextUppercase}%
        }
\fi
%
% sections: STS layout
%
\if@stslayout
    \def\sec@raggedright{%
        \def\\{\hfill\break}%
        \@rightskip=\@flushglue
        \rightskip=\@rightskip
        \leftskip=\z@skip
        \parindent=\z@
        }
    % last line will centered to page width
    \def\fl@hangfrom#1{\noindent {#1}}
    \def\TO@fl{\let\@hangfrom\fl@hangfrom}
    %
    \renewcommand\section{%
        \@startsection
            {section}%
            {1}%
            {\z@}%
            {\medskipamount}%
            {\smallskipamount}%
            {\centering\TO@fl\normalsize\sffamily\bfseries\mathversion{bold}\MakeTextUppercase}%
        }
    \renewcommand\subsection{%
        \@startsection
            {subsection}%
            {2}%
            {\z@}%
            {\smallskipamount}%
            {\smallskipamount}%
            {\normalsize\sffamily\bfseries\mathversion{bold}\sec@raggedright}%
        }
    \renewcommand\subsubsection{%
        \@startsection
            {subsubsection}%
            {3}%
            {\parindent}%
            {\smallskipamount}%
            {-.5em}%
            {\normalsize\itshape}%
        }
    \renewcommand\paragraph{%
        \@startsection
            {paragraph}%
            {4}%
            {\parindent}%
            {\z@}%
            {-4pt}%
            {\normalsize\itshape}%
        }
    \renewcommand\subparagraph{%
        \@startsection
            {subparagraph}%
            {5}%
            {\z@}%
            {0.1pt}%
            {-1em}%
            {\normalsize\itshape}%
        }
    % must be used for the \thebibliography
    \renewcommand\specialsection{%
        \@startsection
            {section}%
            {1}%
            {\z@}%
            {\bigskipamount}%
            {\smallskipamount}%
            {\normalsize\centering\MakeTextUppercase}%
        }
    % Format for the counter:
    \def\section@numbersep{.}
    \def\subsection@numbersep{}
    \def\subsubsection@numbersep{}
    \def\paragraph@numbersep{}
    \def\subparagraph@numbersep{}
\fi
%
% sections: BJ layout
%
\if@bjlayout
    \renewcommand\section{%
        \@startsection
            {section}%
            {1}%
            {\z@}%
            {-\bigskipamount}%
            {\medskipamount}%
            {\Large\bfseries\mathversion{bold}\raggedright}%
        }
    \renewcommand\subsection{%
        \@startsection
            {subsection}%
            {2}%
            {\z@}%
            {-\bigskipamount}%
            {\medskipamount}%
            {\large\bfseries\mathversion{bold}\raggedright}%
        }
    \renewcommand\subsubsection{%
        \@startsection
            {subsubsection}%
            {3}%
            {\z@}%
            {-\medskipamount}%
            {\smallskipamount}%
            {\itshape\raggedright}%
        }
    \renewcommand\paragraph{%
        \@startsection
            {paragraph}%
            {4}%
            {\z@}%
            {\medskipamount}%
            {-10pt}%
            {\xishape}%
        }
    \renewcommand\subparagraph{%
        \@startsection
            {subparagraph}%
            {5}%
            {\parindent}%
            {0.1pt}%
            {-1em}%
            {\xishape}%
        }
\fi
%
% sections: AIHP layout
%
\if@aihplayout
    \renewcommand\section{%
        \@startsection
            {section}%
            {1}%
            {\z@}%
            {-\bigskipamount}%
            {\medskipamount}%
            {\bfseries\mathversion{bold}\raggedright}%
        }
    \renewcommand\subsection{%
        \@startsection
            {subsection}%
            {2}%
            {\z@}%
            {-\medskipamount}%
            {\medskipamount}%
            {\itshape\raggedright}%
        }
    \renewcommand\subsubsection{%
        \@startsection
            {subsubsection}%
            {3}%
            {\z@}%
            {-\medskipamount}%
            {.01\p@}%
            {\itshape\raggedright}%
        }
    \renewcommand\paragraph{%
        \@startsection
            {paragraph}%
            {4}%
            {\z@}%
            {\medskipamount}%
            {-10pt}%
            {\itshape}%
        }
    \renewcommand\subparagraph{%
        \@startsection
            {subparagraph}%
            {5}%
            {\parindent}%
            {0.1pt}%
            {-1em}%
            {\itshape}%
        }
\fi
%
% \thanksref will not print "??" if label is undefined
%
\if@noundefthanksref
    %
    \AtBeginDocument{\let\sv@thankref@hyperlink\thankref@hyperlink}%
    %
    \def\thanksref@hook{%
        \@ifundefined{r@\@tempb thanks}%
            {%
                \let\thankref@hyperlink\@gobble
                \let\@tempa\@empty
            }%
            {\let\thankref@hyperlink\sv@thankref@hyperlink}%
        }
    %
\fi
%
% loading of amsmath
%
\def\set@amsthm{%
    \def\ims@thmshape{0}%
    \if@imslayout \def\ims@thmshape{1}\fi
    \if@stslayout \def\ims@thmshape{1}\fi
    \if@bjlayout \def\ims@thmshape{2}\fi
    \if@aihplayout \def\ims@thmshape{3}\fi
    \if@bjpslayout \def\ims@thmshape{3}\fi
    \ifcase\ims@thmshape
    \or %1
        \thm@notefont{\upshape}%
        \newtheoremstyle{plain}%
            {\medskipamount}%
            {\medskipamount}%
            {\itshape}%
            {\parindent}%
            {\scshape}%
            {.}%
            {1em}%
            {}%
        \newtheoremstyle{definition}%
            {\medskipamount}%
            {\medskipamount}%
            {\normalfont}%
            {\parindent}%
            {\scshape}%
            {.}%
            {1em}%
            {}%
        \newtheoremstyle{remark}%
            {\medskipamount}%
            {\medskipamount}%
            {\normalfont}%
            {\parindent}%
            {\scshape}%
            {.}%
            {1em}%
            {}%
        %
        \renewenvironment{proof}[1][\proofname]%
            {%
                \par
                \pushQED{\qed}%
                \normalfont
                \topsep=\medskipamount
                \trivlist
                    \labelsep.5em%
                    \item[\hskip\labelsep\hskip\parindent \scshape ##1\@addpunct{.}]\ignorespaces
            }{%
                    \popQED
                \endtrivlist
                \@endpefalse
            }%
    \or %2
        \newtheoremstyle{plain}%
            {\medskipamount}%
            {\medskipamount}%
            {\itshape}%
            {\z@}%
            {\bfseries}%
            {.}%
            {0.5em}%
            {\thmname{##1}\thmnumber{ ##2}\thmnote{ (##3)}}%
        \newtheoremstyle{definition}%
            {\medskipamount}%
            {\medskipamount}%
            {\itshape}%
            {\z@}%
            {\bfseries}%
            {.}%
            {0.5em}%
            {}%
        \newtheoremstyle{remark}%
            {\medskipamount}%
            {\medskipamount}%
            {\normalfont}%
            {\z@}%
            {\bfseries}%
            {.}%
            {0.5em}%
            {}%
        %
        \renewenvironment{proof}[1][\proofname]%
            {%
                \par
                \pushQED{\qed}%
                \normalfont
                \topsep=\medskipamount\relax
                \trivlist
                    \item[\hskip\labelsep \bfseries ##1\@addpunct{.}]\ignorespaces
            }{%
                    \popQED
                \endtrivlist
                \@endpefalse
            }%
    \or %3
        \renewenvironment{proof}[1][\proofname]%
            {%
                \par
                \pushQED{\qed}%
                \normalfont
                \topsep=\medskipamount\relax
                \trivlist
                    \item[\hskip\labelsep \bfseries ##1\@addpunct{.}]\ignorespaces
            }{%
                    \popQED
                \endtrivlist
                \@endpefalse
            }%
        \if@bjpslayout
            \newtheoremstyle{remark}%
                {\smallskipamount}%
                {\smallskipamount}%
                {\normalfont}%
                {\z@}%
                {\bfseries}%
                {.}%
                {.5em}%
                {}%
        \fi
    \else
    \fi
    }
%
\if@load@amsmath
    \if@amsmath@leqno
        \PassOptionsToPackage{leqno}{amsmath}
    \fi
    \let\Bbbk\undefined 
    \RequirePackage[cmex10]{amsmath}
    \if@bjlayout
        \RequirePackage{amssymb,mathrsfs}
        \newcommand\hmmax{0}
        \newcommand\bmmax{1}
        \RequirePackage{bm}
        \def\env@cases{%
            \let\@ifnextchar\new@ifnextchar
            \left\lbrace
            \everymath={\displaystyle}%
            \def\arraystretch{1.2}%
            \array{@{}l@{\qquad}l@{}}%
            }%
        \def\matrix@array@colsep{.5em}
        \preto\smallmatrix{\ex@=1.4\p@}
        \preto\env@matrix{%
            \arraycolsep=\matrix@array@colsep\relax
            \csname pre@matrix@hook\endcsname
            }
        \def\binom#1#2{\begin{pmatrix} #1 \cr #2\end{pmatrix}}
        \def\set@pre@matrix@hook{\def\pre@matrix@hook{\everymath={\displaystyle}}}
        \everydisplay=\expandafter{\the\everydisplay\set@pre@matrix@hook}%
    \fi
\fi
%
\if@imsart@seceqn
    \renewcommand{\theequation}{\thesection.\arabic{equation}}
    \ifdefined\HCode\else
        \if@load@amsmath
            \numberwithin{equation}{section}
        \else
            \@addtoreset{equation}{section}
        \fi
    \fi
\fi
%
% loading of amsthm
%
\if@load@amsthm
    \RequirePackage{amsthm}
    \set@amsthm
\else
    \AtBeginDocument{\@ifpackageloaded{amsthm}{\set@amsthm}{}}
\fi
%
% Acknowledgements
%
\def\acknowledgementsname{Acknowledgments}
\newenvironment{acks}[1][\acknowledgementsname]{\section*{#1}}{\par}
\let\ack\undefined \let\endack\undefined
\if@balayout
    \renewenvironment{acks}[1][\acknowledgementsname]%
        {%
            \vskip0.5\baselineskip
            \small
            {\noindent\normalfont\sffamily\bfseries\acknowledgementsname}\par
            \begingroup\parindent 0pt\parskip 0.5\baselineskip
        }%
        {\endgroup}
\fi
%
% Funding
% 
\def\fundingname{Funding}
\newenvironment{funding}[1][\fundingname]{\begin{acks}[\fundingname]}{\end{acks}}
%
% thebibliography, loading natbib
%
% \citefix -- fixes \NAT@citex (to make a hyperlink from year component in cite command).
\def\citefix{%
    \def\NAT@citex[##1][##2]##3{%
        \NAT@sort@cites{##3}%
        \let\@citea\@empty
        \@cite{%
            \let\NAT@nm\@empty
            \let\NAT@year\@empty
            \@for\@citeb:=\NAT@cite@list\do{%
                \edef\@citeb{\expandafter\@firstofone\@citeb}%
                \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi
                \@ifundefined{b@\@citeb\@extra@b@citeb}%
                    {%
                        \@citea
                        {\reset@font\bfseries ?}%
                        \NAT@citeundefined
                        \PackageWarning{natbib}{Citation `\@citeb' on page 
                            \thepage \space undefined}%
                        \def\NAT@date{}%
                    }%
                    {%
                        \let\NAT@last@nm=\NAT@nm
                        \let\NAT@last@yr=\NAT@year
                        \NAT@parse{\@citeb}%
                        \ifNAT@longnames
                            \@ifundefined{bv@\@citeb\@extra@b@citeb}%
                                {%
                                    \let\NAT@name=\NAT@all@names
                                    \global\@namedef{bv@\@citeb\@extra@b@citeb}{}%
                                }%
                                {}%
                        \fi
                        \ifNAT@full
                            \let\NAT@nm\NAT@all@names
                        \else
                            \let\NAT@nm\NAT@name
                        \fi
                        \ifNAT@swa
                            \ifcase\NAT@ctype
                                \if\relax\NAT@date\relax
                                    \@citea\NAT@nmfmt{\NAT@nm}%
                                    \hyper@natlinkstart{\@citeb\@extra@b@citeb}%
                                    \NAT@date\hyper@natlinkend
                                \else
                                    \ifx\NAT@last@nm\NAT@nm\NAT@yrsep
                                        \ifx\NAT@last@yr\NAT@year
                                            \hyper@natlinkstart{\@citeb\@extra@b@citeb}\NAT@exlab
                                            \hyper@natlinkend
                                        \else
                                            \unskip\
                                            \hyper@natlinkstart{\@citeb\@extra@b@citeb}\NAT@date
                                            \hyper@natlinkend
                                        \fi
                                    \else
                                        \@citea\NAT@nmfmt{\NAT@nm}%
                                        \NAT@aysep\ 
                                        \hyper@natlinkstart{\@citeb\@extra@b@citeb}%
                                        \NAT@date\hyper@natlinkend
                                    \fi
                                \fi
                            \or
                                \@citea\hyper@natlinkstart{\@citeb\@extra@b@citeb}%
                                \NAT@nmfmt{\NAT@nm}\hyper@natlinkend
                            \or
                                \@citea\hyper@natlinkstart{\@citeb\@extra@b@citeb}%
                                \NAT@date\hyper@natlinkend
                            \or
                                \@citea\hyper@natlinkstart{\@citeb\@extra@b@citeb}%
                                \NAT@alias\hyper@natlinkend
                            \fi
                            \def\@citea{\NAT@sep\ }%
                        \else
                            \ifcase\NAT@ctype
                                \if\relax\NAT@date\relax
                                    \@citea\hyper@natlinkstart{\@citeb\@extra@b@citeb}%
                                    \NAT@nmfmt{\NAT@nm}\hyper@natlinkend
                                \else
                                    \ifx\NAT@last@nm\NAT@nm\NAT@yrsep
                                        \ifx\NAT@last@yr\NAT@year
                                            \hyper@natlinkstart{\@citeb\@extra@b@citeb}\NAT@exlab
                                            \hyper@natlinkend
                                        \else
                                            \unskip\
                                            \hyper@natlinkstart{\@citeb\@extra@b@citeb}\NAT@date
                                            \hyper@natlinkend
                                        \fi
                                    \else
                                        \@citea\NAT@nmfmt{\NAT@nm}%
                                        \ \NAT@@open\if*##1*\else##1\ \fi
                                        \hyper@natlinkstart{\@citeb\@extra@b@citeb}%
                                        \NAT@date\hyper@natlinkend
                                    \fi
                                \fi
                            \or
                                \@citea\hyper@natlinkstart{\@citeb\@extra@b@citeb}%
                                \NAT@nmfmt{\NAT@nm}\hyper@natlinkend
                            \or
                                \@citea\hyper@natlinkstart{\@citeb\@extra@b@citeb}%
                                \NAT@date\hyper@natlinkend
                            \or
                                \@citea\hyper@natlinkstart{\@citeb\@extra@b@citeb}%
                                \NAT@alias\hyper@natlinkend
                            \fi
                            \if\relax\NAT@date\relax
                                \def\@citea{\NAT@sep\ }%
                            \else
                                \def\@citea{\NAT@@close\NAT@sep\ }%
                            \fi
                        \fi
                    }%
                }%
            \ifNAT@swa
            \else
                \if*##2*\else\NAT@cmt##2\fi
                \if\relax\NAT@date\relax\else\NAT@@close\fi
            \fi
            }{##1}{##2}%
        }%
    \let\@citex\NAT@citex
    }
%
\def\set@natbib{%
    \if@linksfromyear \citefix \fi
    \let\bibfont\thebibliography@size
    \setlength\bibsep{0pt}%
    }
%
\if@load@natbib
    \RequirePackage{natbib}
\else
    \let\xxx@thebibliography\thebibliography
    \def\thebibliography{\thebibliography@size\xxx@thebibliography}
    \g@addto@macro\@openbib@code{\itemsep\z@}
\fi
\AtBeginDocument{\@ifpackageloaded{natbib}{\set@natbib}{}}
%
% thebibliography - structured
%
% Common macros:
%
% Setting a "style" for a command:
% \set@bibl@cmd{bvolume} == \def\bvolume#1{{\bvolume@style #1}}
%
\def\set@bibl@cmd#1{\expandafter\def\csname #1\endcsname##1{{\csname #1@style\endcsname##1}}}
%
\let\endbibitem\relax
%
% bauthor, beditor
%
\def\bbl@bauthor#1{%
    \csname bauthor@hook\endcsname
    {%
        \let\binits\@firstofone
        \let\bsnm\@firstofone
        \let\bfnm\@gobble
        \let\bparticle\@firstofone
        \let\bsuffix\@firstofone
        \bauthor@style
        #1%
    }}
%
\def\bbl@beditor#1{{%
    \let\binits\@firstofone
    \let\bsnm\@firstofone
    \let\bfnm\@gobble
    \let\bparticle\@firstofone
    \let\bsuffix\@firstofone
    \beditor@style
    #1%
    }}
%
% bid
% \bid{MR={},doi={},...}
%
\if@print@bid@doi
    \let\bid@mr@arg\@empty
    \let\bid@doi@arg\@empty
    \define@key{bid}{mr}{\edef\bid@mr@arg{#1}}
    \define@key{bid}{doi}{\edef\bid@doi@arg{#1}}
    \def\bid@MR#1{\ \MR{#1}\ignorespaces}
    \def\check@doiurl@prefix#1#2#3#4#5\end{%
        \edef\@doiurlfull{0}%
        \def\@doiurlhttp{http}%
        \def\@doiurlstart{#1#2#3#4}%
        \ifx\@doiurlstart\@doiurlhttp
            \edef\@doiurlfull{1}%
        \fi
        }
    \def\bid@doiurl#1{\ 
        \check@doiurl@prefix#1\end
        \ifnum\@doiurlfull>\z@
            \ims@href{#1}{\ims@nolinkurl{#1}}%
        \else
            \ims@href{\doi@base#1}{\ims@nolinkurl{\doi@base#1}}%
        \fi
        \ignorespaces
        }
\else
    \define@key{bid}{mr}{\MR{#1}}
    \define@key{bid}{doi}{}
\fi
\define@key{bid}{pubmed}{}
\define@key{bid}{pmcid}{}
\define@key{bid}{pmid}{}
\define@key{bid}{mid}{}
\define@key{bid}{issn}{}
\define@key{bid}{pii}{}
%
\def\bbl@bid#1{%
    \setkeys{bid}{#1}%
    \if@print@bid@doi
        \ifx\bid@mr@arg\@empty
        \else
            \expandafter\bid@MR\expandafter{\bid@mr@arg}%
        \fi
        \ifx\bid@doi@arg\@empty
        \else
            \expandafter\bid@doiurl\expandafter{\bid@doi@arg}%
        \fi
    \fi
    }
%
% for compatibility with old bibtex style
\if@print@bid@doi
    \let\bdoi\bid@doiurl
\else
    \def\bdoi#1{\ignorespaces}
\fi
%
% common@pub@types
%
\def\common@pub@types{%
    \def\AND{and }%
    \let\betal\@firstofone
    \set@bibl@cmd{btitle}%
    \let\byear\@firstofone
    \let\bpages\@firstofone
    \let\bmisc\@firstofone
    \let\bnote\@firstofone
    \let\banumber\@firstofone
    \if@print@bid@doi
        \let\bmrnumber\bid@MR
    \else
        \let\bmrnumber\MR
    \fi
    \let\bid\bbl@bid
    \set@bibl@cmd{bvolume}%
    \csname common@pub@types@hook\endcsname
    }
%
% default styles
%
\setpkgattr{bauthor}{style}{\scshape}
\setpkgattr{beditor}{style}{\scshape}
%
\setpkgattr{bjournal}{style}{\itshape}
\setpkgattr{bbooktitle}{style}{\itshape}
\setpkgattr{bseries}{style}{\itshape}
%
\setpkgattr{bvolume}{style}{\bfseries}
%
% barticle
%
\def\barticle{\@ifnextchar[{\@barticle}{\@barticle[]}}
%
\def\@barticle[#1]{%
    \common@pub@types
    \let\bauthor\bbl@bauthor
    \set@bibl@cmd{bjournal}%
    }
%
% bbook
%
\def\bbook{\@ifnextchar[{\@bbook}{\@bbook[]}}
%
\def\@bbook[#1]{%
    \common@pub@types
    \let\bauthor\bbl@bauthor
    \let\beditor\bbl@beditor
    \let\bedition\@firstofone
    \set@bibl@cmd{bseries}%
    \let\bpublisher\@firstofone
    \let\baddress\@firstofone
    \let\blocation\@firstofone
    \let\bisbn\@gobble
    %
    \let\btitle@style\itshape
    }
%
% bincollection
%
\def\bincollection{\@ifnextchar[{\@bincollection}{\@bincollection[]}}
%
\def\@bincollection[#1]{%
    \common@pub@types
    \let\bauthor\bbl@bauthor
    \let\beditor\bbl@beditor
    \set@bibl@cmd{bbooktitle}%
    \let\bchapter\@firstofone
    \let\bedition\@firstofone
    \set@bibl@cmd{bseries}%
    \let\bpublisher\@firstofone
    \let\baddress\@firstofone
    \let\blocation\@firstofone
    \let\bisbn\@gobble
    \def\bauthor@hook{\let\beditor@style\relax}%
    }
%
% binproceedings
%
\def\binproceedings{\@ifnextchar[{\@binproceedings}{\@binproceedings[]}}
%
\def\@binproceedings[#1]{%
    \common@pub@types
    \let\bauthor\bbl@bauthor
    \let\beditor\bbl@beditor
    \set@bibl@cmd{bbooktitle}%
    \set@bibl@cmd{bseries}%
    \let\borganization\@firstofone
    \let\bpublisher\@firstofone
    \let\baddress\@firstofone
    \let\blocation\@firstofone
    \let\bisbn\@gobble
    }
%
% binbook
%
\def\binbook{\@ifnextchar[{\@binbook}{\@binbook[]}}
%
\def\@binbook[#1]{%
    \common@pub@types
    \let\bauthor\bbl@bauthor
    \let\beditor\bbl@beditor
    \set@bibl@cmd{bbooktitle}%
    \let\bchapter\@firstofone
    \let\bedition\@firstofone
    \set@bibl@cmd{bseries}%
    \let\bpublisher\@firstofone
    \let\baddress\@firstofone
    \let\blocation\@firstofone
    \let\bisbn\@gobble
    %
    \let\btitle@style\itshape
    }
%
% bproceedings
%
\def\bproceedings{\@ifnextchar[{\@bproceedings}{\@bproceedings[]}}
%
\def\@bproceedings[#1]{%
    \common@pub@types
    \let\bauthor\bbl@bauthor
    \let\beditor\bbl@beditor
    \let\bedition\@firstofone
    \set@bibl@cmd{bseries}%
    \let\bpublisher\@firstofone
    \let\borganization\@firstofone
    \let\baddress\@firstofone
    \let\blocation\@firstofone
    \let\bisbn\@gobble
    %
    \let\btitle@style\itshape
    }
%
% btechreport
%
\def\btechreport{\@ifnextchar[{\@btechreport}{\@btechreport[]}}
%
\def\@btechreport[#1]{%
    \common@pub@types
    \let\bauthor\bbl@bauthor
    \let\btype\@firstofone
    \let\bnumber\@firstofone
    \let\binstitution\@firstofone
    \let\bpublisher\@firstofone
    \let\baddress\@firstofone
    \let\blocation\@firstofone
    }
%
% bmanual
%
\def\bmanual{\@ifnextchar[{\@bmanual}{\@bmanual[]}}
%
\def\@bmanual[#1]{%
    \common@pub@types
    \let\bauthor\bbl@bauthor
    \let\bedition\@firstofone
    \let\borganization\@firstofone
    \let\bpublisher\@firstofone
    \let\baddress\@firstofone
    \let\blocation\@firstofone
    \let\bisbn\@gobble
    }
%
% mastersthesis
%
\def\bmastersthesis{\@ifnextchar[{\@bmastersthesis}{\@bmastersthesis[]}}
%
\def\@bmastersthesis[#1]{%
    \common@pub@types
    \let\bauthor\bbl@bauthor
    \let\bschool\@firstofone
    \let\bpublisher\@firstofone
    \let\btype\@firstofone
    \let\baddress\@firstofone
    \let\blocation\@firstofone
    }
%
% phdthesis
%
\def\bphdthesis{\@ifnextchar[{\@bphdthesis}{\@bphdthesis[]}}
%
\def\@bphdthesis[#1]{%
    \common@pub@types
    \let\bauthor\bbl@bauthor
    \let\bpublisher\@firstofone
    \let\bschool\@firstofone
    \let\btype\@firstofone
    \let\baddress\@firstofone
    \let\blocation\@firstofone
    }
%
% bbooklet
%
\def\bbooklet{\@ifnextchar[{\@bbooklet}{\@bbooklet[]}}
%
\def\@bbooklet[#1]{%
    \common@pub@types
    \let\bauthor\bbl@bauthor
    \let\bhowpublished\@firstofone
    \let\baddress\@firstofone
    \let\blocation\@firstofone
    }
%
% bunpublished
%
\def\bunpublished{\@ifnextchar[{\@bunpublished}{\@bunpublished[]}}
%
\def\@bunpublished[#1]{%
    \common@pub@types
    \let\bauthor\bbl@bauthor
    }
%
% bmisc
%
\def\bmisc{\@ifnextchar[{\@bmisc}{\@bmisc[]}}
%
\def\@bmisc[#1]{%
    \common@pub@types
    \let\bauthor\bbl@bauthor
    \let\bhowpublished\@firstofone
    }
%
% \bptok
%
\def\bptok#1{\ignorespaces}
%
\ifx\OrigBibText\undefined \long\def\OrigBibText#1\endOrigBibText{}\fi
%
% appendix
%
\if@imslayout
    %
    % appendix mess up everything in this layout:
    %
    \renewcommand\appendix{%
        \par
        \def\subsection@shape{\normalsize\upshape\bfseries\mathversion{bold}}%
        \let\section\specialsection
        \def\section{\@ifnextchar*{\@appsectionstar}{\@appsectionnostar}}%
        \def\section@prefix{\appendixname\ }%
        \def\section@numbersep{:}%
        \setcounter{section}{0}%
        \setcounter{subsection}{0}%
        \gdef\thesection{\@Alph\c@section}%
        }
    %
    % \section*{Appendix} -> APPENDIX
    \def\@appsectionstar*#1{%
        \ifx.#1.%
            \specialsection*{\appendixname}%
        \else
            \specialsection*{\appendixname: #1}%
        \fi
        \setcounter{section}{1}%
        }
    %
    % \section{} -> APPENDIX A
    % \section{proof} -> APPENDIX A: PROOF
    \def\@appsectionnostar#1{%
        \ifx.#1.%
            \def\section@numbersep{}\specialsection[\appendixname\ \thesection]{}%
        \else
            \def\section@numbersep{:}\specialsection{#1}%
        \fi
        }
    %
    % dirty trick with \thebibliography
    \let\old@thebibliography\thebibliography
    \def\thebibliography{\let\section\specialsection\old@thebibliography}
    %
\else
    %
    \renewcommand\appendix{%
        \par
        \let\old@section\section
        \def\section{\@ifnextchar*{\@appsectionstar}{\@appsectionnostar}}%
        \def\section@prefix{\appendixname\ }%
        \def\section@numbersep{:}%
        \setcounter{section}{0}%
        \setcounter{subsection}{0}%
        \gdef\thesection{\@Alph\c@section}%
        }
    %
    \def\@appsectionstar*#1{%
        \old@section*{#1}%
        \setcounter{section}{1}%
        }
    %
    \def\@appsectionnostar#1{%
        \ifx.#1.%
            \def\section@numbersep{}\old@section[\appendixname\ \thesection]{}%
        \else
            \def\section@numbersep{:}\old@section{#1}%
        \fi
        }
\fi
%
% supplement
%
%\begin{supplement}[id=suppA]
% \sname{Supplement A}
% \stitle{}
% \slink[doi]{}
% \slink[url]{https://lib.stat.cmu.edu/aoas/???/???}
% \sdatatype{.zip}
% \sfilename{foo.zip}
% \sdescription{}
%\end{supplement}
% \thesuppdoi{suppA}
% \ref{suppA}
% \hyperlink{suppA}{text}
%
\def\slink@data@exists{0}
\def\supplement@name{Supplementary Material}
%
\def\sname#1{\def\@sname{#1}\def\@currentlabel{#1}}
\def\stitle#1{\def\@stitle{#1}}
\def\sdatatype#1{\def\@sdatatype{#1}\xdef\slink@data@exists{1}}
\def\sfilename#1{}
%
\define@key{slink}{text}{\@namedef{slink@\slink@type @text}{#1}}
\define@key{slink}{doi}[true]{\edef\slink@type{doi}}
\define@key{slink}{url}[true]{\edef\slink@type{url}}
%
\def\slink[#1]#2{%
    \setkeys{slink}{#1}%
    \@namedef{slink@\slink@type}{#2}%
    \xdef\slink@data@exists{1}%
    }
\def\sdescription#1{\def\@sdescription{#1}}
%
\def\suppsection@fmt{\specialsection*{\supplement@name}}
%
\def\slink@doi@prefix{doi: }
\def\slink@doi@text@fmt#1{#1}
\def\slink@doi@notext@fmt#1{#1}
\def\slink@doi@fmt{%
    \slink@doi@prefix
    \@ifundefined{slink@doi@text}%
        {\ims@href{\doi@base\slink@doi}{\slink@doi@notext@fmt{\slink@doi}}}%
        {\ims@href{\doi@base\slink@doi}{\slink@doi@text@fmt{\slink@doi@text}}}%
    \@ifundefined{supp@label}%
        {}%
        {%
            \expandafter\xdef\csname\supp@label @doi\endcsname{\slink@doi}%
            \expandafter\xdef\csname\supp@label @url\endcsname{\doi@base\slink@doi}%
        }%
    }
%
\def\slink@url@text@fmt#1{#1}
\def\slink@url@notext@fmt#1{#1}
\def\slink@url@fmt{%
    \@ifundefined{slink@url@text}%
        {\ims@href{\slink@url}{\slink@url@notext@fmt{\slink@url}}}%
        {\ims@href{\slink@url}{\slink@url@text@fmt{\slink@url@text}}}%
    \@ifundefined{supp@label}%
        {}%
        {\expandafter\xdef\csname\supp@label @url\endcsname{\slink@url}}%
    }
%
\def\thesuppdoi@prefix{DOI: }
\def\thesuppdoi#1{%
    \@ifundefined{#1@doi}%
        {\@latex@error{Undefined supplement id=#1}{??}}%
        {%
            \def\@tempx{\csname #1@doi\endcsname}%
            \@ifundefined{#1@url}%
                {\def\@tempy{\doi@base\csname #1@url\endcsname}}%
                {\def\@tempy{\csname #1@url\endcsname}}%
            \url@fmt{\thesuppdoi@prefix}{}{\@tempx}{\@tempy}%
        }%
    }
%
\define@key{supplement}{id}{\def\supp@label{#1}}
%
\long\def\supplement{\@ifnextchar[{\@supplement}{\@supplement[]}}
%
\long\def\@supplement[#1]{%
    \suppsection@fmt
    \global\let\suppsection@fmt\smallskip
    \setkeys{supplement}{#1}%
    }
%
\def\stitle@fmt#1{\textbf{#1\ }}
\def\stitle@sep{\\}
%
\def\endsupplement{%
    \@ifundefined{@sname}%
        {}%
        {%
            \@ifundefined{supp@label}%
                {}%
                {\hypertarget{\supp@label}{}\label{\supp@label}}\textbf{\@sname: }%
        }%
    \@ifundefined{@stitle}%
        {}%
        {\stitle@fmt{\@stitle}}%
    %
    \stitle@sep
    \ifnum\slink@data@exists>\z@(\fi
    \@ifundefined{slink@doi}{}{\slink@doi@fmt}%
    \@ifundefined{slink@url}{}{\slink@url@fmt}%
    \@ifundefined{@sdatatype}{}{; \@sdatatype}%
    \@ifundefined{@sfilename}{}{\@sfilename}%
    \ifnum\slink@data@exists>\z@). \fi
    \@ifundefined{@sdescription}{}{\@sdescription}%
    \par
    }
%
% TOC in "article" class is a mess:
%
% for hyperref
\def\toclevel@title{0}
%
\newcommand*\l@title[2]{}
\newcommand*\l@author[2]{}
\newcommand*\l@doi[2]{}
\newcommand*\l@arxiv[2]{}
\newcommand*\l@jobname[2]{}
\newcommand*\l@begintocitem[2]{}
\newcommand*\l@endtocitem[2]{}
%
\@ifclassloaded{article}{\@changetoctrue}{}
%
\def\toc@size{}
\if@changetoc
    %
    \@ifundefined{contentsname@cmd}{\def\contentsname@cmd{\section*{\contentsname}}}{}
    %
    \renewcommand\tableofcontents{%
        \nocontentsline
        \contentsname@cmd
        \bgroup
            \toc@size
            \@starttoc{toc}%
        \egroup
        }
    %
    \renewcommand*\l@section{\@dottedtocline{1}{\z@}{1.5em}}
    %
\fi
% 
\if@bjlayout
    \def\toc@size{\footnotesize}
\fi
%
% number lines
%
\ifnumberlines@
    %
    \setpkgattr{numberlines}{size}{\scriptsize\ttfamily}
    \setpkgattr{numberlines}{skip}{24\p@}
    %
    \def\numberlines@hook{%
        \appto\@evenhead\put@numberlines@box
        \appto\@oddhead\put@numberlines@box
        }
    %
    \gappto\ps@imsheadings\numberlines@hook
    \gappto\ps@copyright\numberlines@hook
    %
    \newbox\numberlines@box
    \newskip\numberlines@box@skip
    %
    \def\set@numberlines@box{%
        \setlength\numberlines@box@skip\headsep
        \addtolength\numberlines@box@skip{5\p@}%
        %
        \setbox\numberlines@box\vtop to\textheight{%
            \parindent=\z@
            \vskip\z@
            \@tempcnta=0%
            \@tempdima=\z@
            \loop
                \advance\@tempcnta by 1%
                \advance\@tempdima by \baselineskip
                \hbox to\textwidth{%
                    \llap{\numberlines@size\the\@tempcnta\kern\numberlines@skip}%
                    \hfill
                    \rlap{\numberlines@size\kern\numberlines@skip\the\@tempcnta}%
                    }%
            \ifdim\@tempdima<\textheight\repeat
            \vss
            }%
        %
        \ht\numberlines@box=\z@
        \dp\numberlines@box=\z@
        }
    %
    \def\put@numberlines@box{\lower\numberlines@box@skip\hbox to\z@{\hss\copy\numberlines@box}}
    %
    \AtBeginDocument{\set@numberlines@box}
    %
\fi
%
% page layout frame
%
\if@imsart@showframe
    %
    \AtBeginDocument{%
        \ifcsundef{definecolor}%
            {\RequirePackage{color}}%
            {}%
        \definecolor{imsgray}{gray}{0.5}%
        }%
    %
    \overfullrule5\p@
    \setpkgattr{showframe}{rulecolor}{imsgray}
    \setpkgattr{showframe}{rulewidth}{.05pt}
    %
    \def\showframe@hook{%
        \appto\@evenhead\put@showframe@box
        \appto\@oddhead\put@showframe@box
        }
    %
    \gappto\ps@imsheadings\showframe@hook
    \gappto\ps@copyright\showframe@hook
    %
    \newbox\showframe@box
    %
    \def\set@showframe@box{%
        \global\setbox\showframe@box\vbox to\z@{{%
            \offinterlineskip
            \normalcolor
            \vbox to \z@{\vss\textcolor{\showframe@rulecolor}{\hrule height\showframe@rulewidth width\textwidth}}%
            \vskip \headheight
            \vbox to \z@{\vss\textcolor{\showframe@rulecolor}{\hrule height\showframe@rulewidth width\textwidth}}%
            \vskip \headsep
            \vbox to \z@{\vss\textcolor{\showframe@rulecolor}{\hrule height\showframe@rulewidth width\textwidth}}%
            \hbox to \textwidth%
            {%
                \llap{\textcolor{\showframe@rulecolor}{\vrule height\textheight width\showframe@rulewidth}}%
                \hfil\textcolor{\showframe@rulecolor}{\vrule height\textheight width\showframe@rulewidth}%
            }%
            \vbox to \z@{\vss\textcolor{\showframe@rulecolor}{\hrule height\showframe@rulewidth width\textwidth}}%
            \vskip \footskip
            \vbox to \z@{\vss\textcolor{\showframe@rulecolor}{\hrule height\showframe@rulewidth width\textwidth}}%
            \vss
            }}%
        }
    %
    \def\put@showframe@box{\raise\headheight\hbox to\z@{\hss\copy\showframe@box}}
    %
    \AtBeginDocument{\set@showframe@box}
    %
\fi
%
% INITIALIZATION
%
% Read local configuration file (if exist):
% imsart.cnf imsart-ps.cnf
%
\@input{\imsfmt@name\journal@id.cnf}
\@input{\imsfmt@name-vtex.cnf}
%
\@twosidetrue
\pagenumbering{arabic}
\frenchspacing
\init@settings
\pagestyle{imsheadings}
%
\endinput
%%
%% End of file `imsart.sty'.
