From c6520e689bbb0ff17aed2e897aa32d20915a6415 Mon Sep 17 00:00:00 2001 From: Michael Mathioudakis <mmathioudakis@gmail.com> Date: Tue, 2 Apr 2019 17:11:05 +0300 Subject: [PATCH] Add paper to repository --- paper/acmart.cls | 2561 +++++++++++++++++++++++++++++++++++++ paper/biblio.bib | 8 + paper/chato-notes.sty | 38 + paper/img/causalmodel.png | Bin 0 -> 58535 bytes paper/macros.tex | 53 + paper/sl.tex | 191 +++ 6 files changed, 2851 insertions(+) create mode 100755 paper/acmart.cls create mode 100755 paper/biblio.bib create mode 100755 paper/chato-notes.sty create mode 100755 paper/img/causalmodel.png create mode 100755 paper/macros.tex create mode 100755 paper/sl.tex diff --git a/paper/acmart.cls b/paper/acmart.cls new file mode 100755 index 0000000..027dd18 --- /dev/null +++ b/paper/acmart.cls @@ -0,0 +1,2561 @@ +%% +%% This is file `acmart.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% acmart.dtx (with options: `class') +%% +%% IMPORTANT NOTICE: +%% +%% For the copyright see the source file. +%% +%% Any modified versions of this file must be renamed +%% with new filenames distinct from acmart.cls. +%% +%% For distribution of the original source see the terms +%% for copying and modification in the file acmart.dtx. +%% +%% This generated file may be distributed as long as the +%% original source files, as listed above, are part of the +%% same distribution. (The sources need not necessarily be +%% in the same archive or directory.) +%% \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 \~} +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{acmart} +[2018/02/07 v1.50 Typesetting articles for the Association for +Computing Machinery] +\def\@classname{acmart} +\InputIfFileExists{acmart-preload-hook.tex}{% + \ClassWarning{\@classname}{% + I am loading acmart-preload-hook.tex. You are fully responsible + for any problems from now on.}}{} +\RequirePackage{xkeyval} +\RequirePackage{xstring} +\define@choicekey*+{acmart.cls}{format}[\ACM@format\ACM@format@nr]{% + manuscript, acmsmall, acmlarge, acmtog, sigconf, siggraph, + sigplan, sigchi, sigchi-a}[manuscript]{}{% + \ClassError{\@classname}{The option format must be manuscript, + acmsmall, acmlarge, acmtog, sigconf, siggraph, + sigplan, sigchi or sigchi-a}} +\def\@DeclareACMFormat#1{\DeclareOptionX{#1}{\setkeys{acmart.cls}{format=#1}}} +\@DeclareACMFormat{manuscript} +\@DeclareACMFormat{acmsmall} +\@DeclareACMFormat{acmlarge} +\@DeclareACMFormat{acmtog} +\@DeclareACMFormat{sigconf} +\@DeclareACMFormat{siggraph} +\@DeclareACMFormat{sigplan} +\@DeclareACMFormat{sigchi} +\@DeclareACMFormat{sigchi-a} +\ExecuteOptionsX{format} +\define@boolkey+{acmart.cls}[@ACM@]{screen}[true]{% + \if@ACM@screen + \PackageInfo{\@classname}{Using screen mode}% + \else + \PackageInfo{\@classname}{Not using screen mode}% + \fi}{\PackageError{\@classname}{The option screen can be either true or + false}} +\ExecuteOptionsX{screen=false} +\define@boolkey+{acmart.cls}[@ACM@]{acmthm}[true]{% + \if@ACM@acmthm + \PackageInfo{\@classname}{Requiring acmthm}% + \else + \PackageInfo{\@classname}{Suppressing acmthm}% + \fi}{\PackageError{\@classname}{The option acmthm can be either true or + false}} +\ExecuteOptionsX{acmthm=true} +\define@boolkey+{acmart.cls}[@ACM@]{review}[true]{% + \if@ACM@review + \PackageInfo{\@classname}{Using review mode}% + \AtBeginDocument{\@ACM@printfoliostrue}% + \else + \PackageInfo{\@classname}{Not using review mode}% + \fi}{\PackageError{\@classname}{The option review can be either true or + false}} +\ExecuteOptionsX{review=false} +\define@boolkey+{acmart.cls}[@ACM@]{authorversion}[true]{% + \if@ACM@authorversion + \PackageInfo{\@classname}{Using authorversion mode}% + \else + \PackageInfo{\@classname}{Not using authorversion mode}% + \fi}{\PackageError{\@classname}{The option authorversion can be either true or + false}} +\ExecuteOptionsX{authorversion=false} +\define@boolkey+{acmart.cls}[@ACM@]{natbib}[true]{% + \if@ACM@natbib + \PackageInfo{\@classname}{Explicitly selecting natbib mode}% + \else + \PackageInfo{\@classname}{Explicitly deselecting natbib mode}% + \fi}{\PackageError{\@classname}{The option natbib can be either true or + false}} +\ExecuteOptionsX{natbib=true} +\define@boolkey+{acmart.cls}[@ACM@]{anonymous}[true]{% + \if@ACM@anonymous + \PackageInfo{\@classname}{Using anonymous mode}% + \else + \PackageInfo{\@classname}{Not using anonymous mode}% + \fi}{\PackageError{\@classname}{The option anonymous can be either true or + false}} +\ExecuteOptionsX{anonymous=false} +\define@boolkey+{acmart.cls}[@ACM@]{timestamp}[true]{% + \if@ACM@timestamp + \PackageInfo{\@classname}{Using timestamp mode}% + \else + \PackageInfo{\@classname}{Not using timestamp mode}% + \fi}{\PackageError{\@classname}{The option timestamp can be either true or + false}} +\ExecuteOptionsX{timestamp=false} +\define@boolkey+{acmart.cls}[@ACM@]{authordraft}[true]{% + \if@ACM@authordraft + \PackageInfo{\@classname}{Using authordraft mode}% + \@ACM@timestamptrue + \@ACM@reviewtrue + \else + \PackageInfo{\@classname}{Not using authordraft mode}% + \fi}{\PackageError{\@classname}{The option authordraft can be either true or + false}} +\ExecuteOptionsX{authordraft=false} +\def\ACM@fontsize{} +\DeclareOptionX{9pt}{\edef\ACM@fontsize{\CurrentOption}} +\DeclareOptionX{10pt}{\edef\ACM@fontsize{\CurrentOption}} +\DeclareOptionX{11pt}{\edef\ACM@fontsize{\CurrentOption}} +\DeclareOptionX{12pt}{\edef\ACM@fontsize{\CurrentOption}} +\DeclareOptionX{draft}{\PassOptionsToClass{\CurrentOption}{amsart}} +\DeclareOptionX{*}{\PassOptionsToClass{\CurrentOption}{amsart}} +\ProcessOptionsX +\ClassInfo{\@classname}{Using format \ACM@format, number \ACM@format@nr} +\newif\if@ACM@manuscript +\newif\if@ACM@journal +\newif\if@ACM@sigchiamode +\ifnum\ACM@format@nr=5\relax % siggraph + \ClassWarning{\@classname}{The format siggraph is now obsolete. + I am switching to sigconf.} + \setkeys{acmart.cls}{format=sigconf} +\fi +\ifnum\ACM@format@nr=0\relax + \@ACM@manuscripttrue +\else + \@ACM@manuscriptfalse +\fi +\@ACM@sigchiamodefalse +\ifcase\ACM@format@nr +\relax % manuscript + \@ACM@journaltrue +\or % acmsmall + \@ACM@journaltrue +\or % acmlarge + \@ACM@journaltrue +\or % acmtog + \@ACM@journaltrue +\or % sigconf + \@ACM@journalfalse +\or % siggraph + \@ACM@journalfalse + \or % sigplan + \@ACM@journalfalse + \or % sigchi + \@ACM@journalfalse +\or % sigchi-a + \@ACM@journalfalse + \@ACM@sigchiamodetrue +\fi +\ifx\ACM@fontsize\@empty + \ifcase\ACM@format@nr + \relax % manuscript + \def\ACM@fontsize{9pt}% + \or % acmsmall + \def\ACM@fontsize{10pt}% + \or % acmlarge + \def\ACM@fontsize{10pt}% + \or % acmtog + \def\ACM@fontsize{9pt}% + \or % sigconf + \def\ACM@fontsize{9pt}% + \or % siggraph + \def\ACM@fontsize{9pt}% + \or % sigplan + \def\ACM@fontsize{10pt}% + \or % sigchi + \def\ACM@fontsize{10pt}% + \or % sigchi-a + \def\ACM@fontsize{10pt}% + \fi +\fi +\ClassInfo{\@classname}{Using fontsize \ACM@fontsize} +\LoadClass[\ACM@fontsize, reqno]{amsart} +\RequirePackage{microtype} +\RequirePackage{etoolbox} +\RequirePackage{refcount} +\RequirePackage{totpages} +\RequirePackage{environ} +\if@ACM@manuscript +\RequirePackage{setspace} +\onehalfspacing +\fi +\RequirePackage{textcase} +\if@ACM@natbib + \RequirePackage{natbib} + \renewcommand{\bibsection}{% + \section*{\refname}% + \phantomsection\addcontentsline{toc}{section}{\refname}% + } + \renewcommand{\bibfont}{\bibliofont} + \renewcommand\setcitestyle[1]{ + \@for\@tempa:=#1\do + {\def\@tempb{round}\ifx\@tempa\@tempb + \renewcommand\NAT@open{(}\renewcommand\NAT@close{)}\fi + \def\@tempb{square}\ifx\@tempa\@tempb + \renewcommand\NAT@open{[}\renewcommand\NAT@close{]}\fi + \def\@tempb{angle}\ifx\@tempa\@tempb + \renewcommand\NAT@open{$<$}\renewcommand\NAT@close{$>$}\fi + \def\@tempb{curly}\ifx\@tempa\@tempb + \renewcommand\NAT@open{\{}\renewcommand\NAT@close{\}}\fi + \def\@tempb{semicolon}\ifx\@tempa\@tempb + \renewcommand\NAT@sep{;}\fi + \def\@tempb{colon}\ifx\@tempa\@tempb + \renewcommand\NAT@sep{;}\fi + \def\@tempb{comma}\ifx\@tempa\@tempb + \renewcommand\NAT@sep{,}\fi + \def\@tempb{authoryear}\ifx\@tempa\@tempb + \NAT@numbersfalse\fi + \def\@tempb{numbers}\ifx\@tempa\@tempb + \NAT@numberstrue\NAT@superfalse\fi + \def\@tempb{super}\ifx\@tempa\@tempb + \NAT@numberstrue\NAT@supertrue\fi + \def\@tempb{nobibstyle}\ifx\@tempa\@tempb + \let\bibstyle=\@gobble\fi + \def\@tempb{bibstyle}\ifx\@tempa\@tempb + \let\bibstyle=\@citestyle\fi + \def\@tempb{sort}\ifx\@tempa\@tempb + \def\NAT@sort{\@ne}\fi + \def\@tempb{nosort}\ifx\@tempa\@tempb + \def\NAT@sort{\z@}\fi + \def\@tempb{compress}\ifx\@tempa\@tempb + \def\NAT@cmprs{\@ne}\fi + \def\@tempb{nocompress}\ifx\@tempa\@tempb + \def\NAT@cmprs{\@z}\fi + \def\@tempb{sort&compress}\ifx\@tempa\@tempb + \def\NAT@sort{\@ne}\def\NAT@cmprs{\@ne}\fi + \def\@tempb{mcite}\ifx\@tempa\@tempb + \let\NAT@merge\@ne\fi + \def\@tempb{merge}\ifx\@tempa\@tempb + \@ifnum{\NAT@merge<\tw@}{\let\NAT@merge\tw@}{}\fi + \def\@tempb{elide}\ifx\@tempa\@tempb + \@ifnum{\NAT@merge<\thr@@}{\let\NAT@merge\thr@@}{}\fi + \def\@tempb{longnamesfirst}\ifx\@tempa\@tempb + \NAT@longnamestrue\fi + \def\@tempb{nonamebreak}\ifx\@tempa\@tempb + \def\NAT@nmfmt#1{\mbox{\NAT@up#1}}\fi + \expandafter\NAT@find@eq\@tempa=\relax\@nil + \if\@tempc\relax\else + \expandafter\NAT@rem@eq\@tempc + \def\@tempb{open}\ifx\@tempa\@tempb + \xdef\NAT@open{\@tempc}\fi + \def\@tempb{close}\ifx\@tempa\@tempb + \xdef\NAT@close{\@tempc}\fi + \def\@tempb{aysep}\ifx\@tempa\@tempb + \xdef\NAT@aysep{\@tempc}\fi + \def\@tempb{yysep}\ifx\@tempa\@tempb + \xdef\NAT@yrsep{\@tempc}\fi + \def\@tempb{notesep}\ifx\@tempa\@tempb + \xdef\NAT@cmt{\@tempc}\fi + \def\@tempb{citesep}\ifx\@tempa\@tempb + \xdef\NAT@sep{\@tempc}\fi + \fi + }% + \NAT@@setcites + } + \renewcommand\citestyle[1]{% + \ifcsname bibstyle@#1\endcsname% + \csname bibstyle@#1\endcsname\let\bibstyle\@gobble% + \else% + \@latex@error{Undefined `#1' citestyle}% + \fi + }% +\fi +\newcommand{\bibstyle@acmauthoryear}{% + \setcitestyle{% + authoryear,% + open={[},close={]},citesep={;},% + aysep={},yysep={,},% + notesep={, }}} +\newcommand{\bibstyle@acmnumeric}{% + \setcitestyle{% + numbers,sort&compress,% + open={[},close={]},citesep={,},% + notesep={, }}} +\if@ACM@natbib +\citestyle{acmnumeric} +\fi +\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 + {\@ssect{#3}{#4}{#5}{#6}}% + {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}} +\def\@sect#1#2#3#4#5#6[#7]#8{% + \edef\@toclevel{\ifnum#2=\@m 0\else\number#2\fi}% + \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}% + \ifnum #2>\c@secnumdepth \else + \@tochangmeasure{\csname the#1\endcsname}% + \fi + \addcontentsline{toc}{#1}{% + \ifnum #2>\c@secnumdepth \else + \protect\numberline{\csname the#1\endcsname}% + \fi + #7}% + \else + \def\@svsechd{% + #6{\hskip #3\relax + \@svsec #8}% + \csname #1mark\endcsname{#7}% + \ifnum #2>\c@secnumdepth \else + \@tochangmeasure{\csname the#1\endcsname\space}% + \fi + \addcontentsline{toc}{#1}{% + \ifnum #2>\c@secnumdepth \else + \protect\numberline{\csname the#1\endcsname}% + \fi + #7}}% + \fi + \@xsect{#5}} +\def\@xsect#1{% + \@tempskipa #1\relax + \ifdim \@tempskipa>\z@ + \par \nobreak + \vskip \@tempskipa + \@afterheading + \else + \@nobreakfalse + \global\@noskipsectrue + \everypar{% + \if@noskipsec + \global\@noskipsecfalse + {\setbox\z@\lastbox}% + \clubpenalty\@M + \begingroup \@svsechd \endgroup + \unskip + \@tempskipa #1\relax + \hskip -\@tempskipa + \else + \clubpenalty \@clubpenalty + \everypar{}% + \fi}% + \fi + \ignorespaces} +\def\@seccntformat#1{\csname the#1\endcsname\quad} +\def\@ssect#1#2#3#4#5{% + \@tempskipa #3\relax + \ifdim \@tempskipa>\z@ + \begingroup + #4{% + \@hangfrom{\hskip #1}% + \interlinepenalty \@M #5\@@par}% + \endgroup + \else + \def\@svsechd{#4{\hskip #1\relax #5}}% + \fi + \@xsect{#3}} +\def\@starttoc#1#2{\begingroup\makeatletter + \setTrue{#1}% + \par\removelastskip\vskip\z@skip + \@startsection{section}\@M\z@{\linespacing\@plus\linespacing}% + {.5\linespacing}{\centering\contentsnamefont}{#2}% + \@input{\jobname.#1}% + \if@filesw + \@xp\newwrite\csname tf@#1\endcsname + \immediate\@xp\openout\csname tf@#1\endcsname \jobname.#1\relax + \fi + \global\@nobreakfalse \endgroup + \addvspace{32\p@\@plus14\p@}% +} +\def\l@section{\@tocline{1}{0pt}{1pc}{2pc}{}} +\def\l@subsection{\@tocline{2}{0pt}{1pc}{3pc}{}} +\def\l@subsubsection{\@tocline{2}{0pt}{1pc}{5pc}{}} +\let\@footnotemark@nolink\@footnotemark +\let\@footnotetext@nolink\@footnotetext +\RequirePackage[bookmarksnumbered,unicode]{hyperref} +\pdfstringdefDisableCommands{% + \def\unskip{}% + \def\textbullet{- }% + \def\textrightarrow{ -> }% + \def\footnotemark{}% +} +\urlstyle{rm} +\ifcase\ACM@format@nr +\relax % manuscript +\or % acmsmall +\or % acmlarge +\or % acmtog +\or % sigconf +\or % siggraph +\or % sigplan + \urlstyle{sf} +\or % sigchi +\or % sigchi-a + \urlstyle{sf} +\fi +\AtEndPreamble{% + \if@ACM@screen + \hypersetup{colorlinks, + linkcolor=ACMRed, + citecolor=ACMPurple, + urlcolor=ACMDarkBlue, + filecolor=ACMDarkBlue} + \else + \hypersetup{hidelinks} + \fi} +\if@ACM@natbib + \let\citeN\cite + \let\cite\citep + \let\citeANP\citeauthor + \let\citeNN\citeyearpar + \let\citeyearNP\citeyear + \let\citeNP\citealt + \DeclareRobustCommand\citeA + {\begingroup\NAT@swafalse + \let\NAT@ctype\@ne\NAT@partrue\NAT@fullfalse\NAT@open\NAT@citetp}% + \providecommand\newblock{}% +\else + \AtBeginDocument{% + \let\shortcite\cite% + \providecommand\citename[1]{#1}} +\fi +\newcommand\shortcite[2][]{% + \ifNAT@numbers\cite[#1]{#2}\else\citeyearpar[#1]{#2}\fi} +\def\bibliographystyle#1{% + \ifx\@begindocumenthook\@undefined\else + \expandafter\AtBeginDocument + \fi + {\if@filesw + \immediate\write\@auxout{\string\bibstyle{#1}}% + \fi}} +\RequirePackage{graphicx} +\RequirePackage[prologue]{xcolor} +\definecolor[named]{ACMBlue}{cmyk}{1,0.1,0,0.1} +\definecolor[named]{ACMYellow}{cmyk}{0,0.16,1,0} +\definecolor[named]{ACMOrange}{cmyk}{0,0.42,1,0.01} +\definecolor[named]{ACMRed}{cmyk}{0,0.90,0.86,0} +\definecolor[named]{ACMLightBlue}{cmyk}{0.49,0.01,0,0} +\definecolor[named]{ACMGreen}{cmyk}{0.20,0,1,0.19} +\definecolor[named]{ACMPurple}{cmyk}{0.55,1,0,0.15} +\definecolor[named]{ACMDarkBlue}{cmyk}{1,0.58,0,0.21} +\if@ACM@authordraft + \RequirePackage{draftwatermark} + \SetWatermarkFontSize{0.5in} + \SetWatermarkColor[gray]{.9} + \SetWatermarkText{\parbox{12em}{\centering + Unpublished working draft.\\ + Not for distribution.}} +\fi +\RequirePackage{geometry} +\ifcase\ACM@format@nr +\relax % manuscript + \geometry{letterpaper,head=13pt, + marginparwidth=6pc,heightrounded}% +\or % acmsmall + \geometry{twoside=true, + includeheadfoot, head=13pt, foot=2pc, + paperwidth=6.75in, paperheight=10in, + top=58pt, bottom=44pt, inner=46pt, outer=46pt, + marginparwidth=2pc,heightrounded + }% +\or % acmlarge + \geometry{twoside=true, head=13pt, foot=2pc, + paperwidth=8.5in, paperheight=11in, + includeheadfoot, + top=78pt, bottom=114pt, inner=81pt, outer=81pt, + marginparwidth=4pc,heightrounded + }% +\or % acmtog + \geometry{twoside=true, head=13pt, foot=2pc, + paperwidth=8.5in, paperheight=11in, + includeheadfoot, columnsep=24pt, + top=52pt, bottom=75pt, inner=52pt, outer=52pt, + marginparwidth=2pc,heightrounded + }% +\or % sigconf + \geometry{twoside=true, head=13pt, + paperwidth=8.5in, paperheight=11in, + includeheadfoot, columnsep=2pc, + top=57pt, bottom=73pt, inner=54pt, outer=54pt, + marginparwidth=2pc,heightrounded + }% +\or % siggraph + \geometry{twoside=true, head=13pt, + paperwidth=8.5in, paperheight=11in, + includeheadfoot, columnsep=2pc, + top=57pt, bottom=73pt, inner=54pt, outer=54pt, + marginparwidth=2pc,heightrounded + }% +\or % sigplan + \geometry{twoside=true, head=13pt, + paperwidth=8.5in, paperheight=11in, + includeheadfoot=false, columnsep=2pc, + top=1in, bottom=1in, inner=0.75in, outer=0.75in, + marginparwidth=2pc,heightrounded + }% +\or % sigchi + \geometry{twoside=true, head=13pt, + paperwidth=8.5in, paperheight=11in, + includeheadfoot, columnsep=2pc, + top=66pt, bottom=73pt, inner=54pt, outer=54pt, + marginparwidth=2pc,heightrounded + }% +\or % sigchi-a + \geometry{twoside=false, head=13pt, + paperwidth=11in, paperheight=8.5in, + includeheadfoot, marginparsep=72pt, + marginparwidth=170pt, columnsep=20pt, + top=72pt, bottom=72pt, left=314pt, right=72pt + }% + \@mparswitchfalse + \reversemarginpar +\fi +\setlength\parindent{10\p@} +\setlength\parskip{\z@} +\ifcase\ACM@format@nr +\relax % manuscript +\or % acmsmall +\or % acmlarge +\or % acmtog + \setlength\parindent{9\p@}% +\or % sigconf +\or % siggraph +\or % sigplan +\or % sigchi +\or % sigchi-a +\fi +\setlength\normalparindent{\parindent} +\def\copyrightpermissionfootnoterule{\kern-3\p@ + \hrule \@width \columnwidth \kern 2.6\p@} +\RequirePackage{manyfoot} +\SelectFootnoteRule[2]{copyrightpermission} +\DeclareNewFootnote{authorsaddresses} +\SelectFootnoteRule[2]{copyrightpermission} +\DeclareNewFootnote{copyrightpermission} +\def\footnoterule{\kern-3\p@ + \hrule \@width 4pc \kern 2.6\p@} +\def\endminipage{% + \par + \unskip + \ifvoid\@mpfootins\else + \vskip\skip\@mpfootins + \normalcolor + \unvbox\@mpfootins + \fi + \@minipagefalse + \color@endgroup + \egroup + \expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}} +\def\@makefntext{\noindent\@makefnmark} +\if@ACM@sigchiamode +\long\def\@footnotetext#1{\marginpar{% + \reset@font\small + \interlinepenalty\interfootnotelinepenalty + \protected@edef\@currentlabel{% + \csname p@footnote\endcsname\@thefnmark + }% + \color@begingroup + \@makefntext{% + \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}% + \color@endgroup}}% +\fi +\long\def\@mpfootnotetext#1{% + \global\setbox\@mpfootins\vbox{% + \unvbox\@mpfootins + \reset@font\footnotesize + \hsize\columnwidth + \@parboxrestore + \protected@edef\@currentlabel + {\csname p@mpfootnote\endcsname\@thefnmark}% + \color@begingroup\centering + \@makefntext{% + \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}% + \color@endgroup}} +\def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}} +\def\@textbottom{\vskip \z@ \@plus 1pt} +\let\@texttop\relax +\RequirePackage{iftex} +\ifPDFTeX +\input{glyphtounicode} +\pdfglyphtounicode{f_f}{FB00} +\pdfglyphtounicode{f_f_i}{FB03} +\pdfglyphtounicode{f_f_l}{FB04} +\pdfglyphtounicode{f_i}{FB01} +\pdfglyphtounicode{t_t}{00740074} +\pdfglyphtounicode{f_t}{00660074} +\pdfglyphtounicode{T_h}{00540068} +\pdfgentounicode=1 +\fi +\RequirePackage{cmap} +\newif\if@ACM@newfonts +\@ACM@newfontstrue +\IfFileExists{libertine.sty}{}{\ClassWarning{\@classname}{You do not + have the libertine package installed. Please upgrade your + TeX}\@ACM@newfontsfalse} +\IfFileExists{zi4.sty}{}{\ClassWarning{\@classname}{You do not + have the zi4 package installed. Please upgrade your + TeX}\@ACM@newfontsfalse} +\IfFileExists{newtxmath.sty}{}{\ClassWarning{\@classname}{You do not + have the newtxmath package installed. Please upgrade your + TeX}\@ACM@newfontsfalse} +\if@ACM@newfonts +\RequirePackage[tt=false, type1=true]{libertine} +\RequirePackage[varqu]{zi4} +\RequirePackage[libertine]{newtxmath} +\RequirePackage[T1]{fontenc} +\fi +\let\liningnums\@undefined +\AtEndPreamble{% + \DeclareTextFontCommand{\liningnums}{\libertineLF}} +\if@ACM@sigchiamode + \renewcommand{\familydefault}{\sfdefault} +\fi +\RequirePackage{caption, float} +\captionsetup[table]{position=top} +\if@ACM@journal + \captionsetup{labelfont={sf, small}, + textfont={sf, small}, margin=\z@} + \captionsetup[figure]{name={Fig.}} +\else + \captionsetup{labelfont={bf}, + textfont={bf}, labelsep=colon, margin=\z@} + \ifcase\ACM@format@nr + \relax % manuscript + \or % acmsmall + \or % acmlarge + \or % acmtog + \or % sigconf + \or % siggraph + \captionsetup{textfont={it}} + \or % sigplan + \captionsetup{labelfont={bf}, + textfont={normalfont}, labelsep=period, margin=\z@} + \or % sigchi + \captionsetup[figure]{labelfont={bf, small}, + textfont={bf, small}} + \or % sigchi-a + \captionsetup[figure]{labelfont={bf, small}, + textfont={bf, small}} + \fi +\fi +\newfloat{sidebar}{}{sbar} +\floatname{sidebar}{Sidebar} +\renewenvironment{sidebar}{\Collect@Body\@sidebar}{} +\long\def\@sidebar#1{\bgroup\captionsetup{type=sidebar}% + \marginpar{\small#1}\egroup} +\newenvironment{marginfigure}{\Collect@Body\@marginfigure}{} +\long\def\@marginfigure#1{\bgroup\captionsetup{type=figure}% + \marginpar{\centering\small#1}\egroup} +\newenvironment{margintable}{\Collect@Body\@margintable}{} +\long\def\@margintable#1{\bgroup\captionsetup{type=table}% + \marginpar{\centering\small#1}\egroup} +\newdimen\fulltextwidth +\fulltextwidth=\dimexpr(\textwidth+\marginparwidth+\marginparsep) +\if@ACM@sigchiamode +\def\@dblfloat{\bgroup\columnwidth=\fulltextwidth + \let\@endfloatbox\@endwidefloatbox + \def\@fpsadddefault{\def\@fps{tp}}% + \@float} +\fi +\if@ACM@sigchiamode +\def\end@dblfloat{% + \end@float\egroup} +\fi +\def\@endwidefloatbox{% + \par\vskip\z@skip + \@minipagefalse + \outer@nobreak + \egroup + \color@endbox + \global\setbox\@currbox=\vbox{\moveleft + \dimexpr(\fulltextwidth-\textwidth)\box\@currbox}% + \wd\@currbox=\textwidth +} +\ifcase\ACM@format@nr +\relax % manuscript +\or % acmsmall +\or % acmlarge +\or % acmtog +\or % sigconf +\or % siggraph +\or % sigplan +\def\labelenumi{\theenumi.} +\def\labelenumii{\theenumii.} +\def\labelenumiii{\theenumiii.} +\def\labelenumiv{\theenumiv.} +\or % sigchi +\or % sigchi-a +\fi +\newdimen\@ACM@labelwidth +\AtBeginDocument{% + \setlength\labelsep{4pt} + \setlength{\@ACM@labelwidth}{6.5pt} + + %% First-level list: when beginning after the first line of an + %% indented paragraph or ending before an indented paragraph, labels + %% should not hang to the left of the preceding/following text. + \setlength\leftmargini{\z@} + \addtolength\leftmargini{\parindent} + \addtolength\leftmargini{2\labelsep} + \addtolength\leftmargini{\@ACM@labelwidth} + + %% Second-level and higher lists. + \setlength\leftmarginii{\z@} + \addtolength\leftmarginii{0.5\labelsep} + \addtolength\leftmarginii{\@ACM@labelwidth} + \setlength\leftmarginiii{\leftmarginii} + \setlength\leftmarginiv{\leftmarginiii} + \setlength\leftmarginv{\leftmarginiv} + \setlength\leftmarginvi{\leftmarginv} + \@listi} +\newskip\listisep +\listisep\smallskipamount +\def\@listI{\leftmargin\leftmargini + \labelwidth\leftmargini \advance\labelwidth-\labelsep + \listparindent\z@ + \topsep\listisep} +\let\@listi\@listI +\def\@listii{\leftmargin\leftmarginii + \labelwidth\leftmarginii \advance\labelwidth-\labelsep + \topsep\z@skip} +\def\@listiii{\leftmargin\leftmarginiii + \labelwidth\leftmarginiii \advance\labelwidth-\labelsep} +\def\@listiv{\leftmargin\leftmarginiv + \labelwidth\leftmarginiv \advance\labelwidth-\labelsep} +\def\@listv{\leftmargin\leftmarginv + \labelwidth\leftmarginv \advance\labelwidth-\labelsep} +\def\@listvi{\leftmargin\leftmarginvi + \labelwidth\leftmarginvi \advance\labelwidth-\labelsep} +\renewcommand{\descriptionlabel}[1]{\upshape\bfseries #1} +\renewenvironment{description}{\list{}{% + \labelwidth\@ACM@labelwidth + \let\makelabel\descriptionlabel}% +}{ + \endlist +} +\let\enddescription=\endlist % for efficiency +\define@choicekey*+{ACM}{acmJournal}[\@journalCode\@journalCode@nr]{% + CIE,% + CSUR,% + DTRAP,% + IMWUT,% + JACM,% + JDIQ,% + JEA,% + JERIC,% + JETC,% + JOCCH,% + PACMHCI,% + PACMPL,% + POMACS,% + TAAS,% + TACCESS,% + TACO,% + TALG,% + TALLIP,% + TAP,% + TCPS,% + TEAC,% + TECS,% + THRI,% + TIIS,% + TISSEC,% + TIST,% + TKDD,% + TMIS,% + TOCE,% + TOCHI,% + TOCL,% + TOCS,% + TOCT,% + TODAES,% + TODS,% + TOG,% + TOIS,% + TOIT,% + TOMACS,% + TOMM,% + TOMPECS,% + TOMS,% + TOPC,% + TOPS,% + TOPLAS,% + TOS,% + TOSEM,% + TOSN,% + TRETS,% + TSAS,% + TSC,% + TSLP,% + TWEB% +}{% +\ifcase\@journalCode@nr +\relax % CIE + \def\@journalName{ACM Computers in Entertainment}% + \def\@journalNameShort{ACM Comput. Entertain.}% + \def\@permissionCodeOne{1544-3574}% +\or % CSUR + \def\@journalName{ACM Computing Surveys}% + \def\@journalNameShort{ACM Comput. Surv.}% + \def\@permissionCodeOne{0360-0300}% +\or % DTRAP + \def\@journalName{Digital Threats: Research and Practice}% + \def\@journalNameShort{Digit. Threat. Res. Pract.}% + \def\@permissionCodeOne{2576-5337}% +\or % IMWUT + \def\@journalName{Proceedings of the ACM on Interactive, Mobile, + Wearable and Ubiquitous Technologies}% + \def\@journalNameShort{Proc. ACM Interact. Mob. Wearable Ubiquitous Technol.}% + \def\@permissionCodeOne{2474-9567}% + \@ACM@screentrue + \PackageInfo{\@classname}{Using screen mode due to \@journalCode}% +\or % JACM + \def\@journalName{Journal of the ACM}% + \def\@journalNameShort{J. ACM}% + \def\@permissionCodeOne{0004-5411}% +\or % JDIQ + \def\@journalName{ACM Journal of Data and Information Quality}% + \def\@journalNameShort{ACM J. Data Inform. Quality}% + \def\@permissionCodeOne{1936-1955}% +\or % JEA + \def\@journalName{ACM Journal of Experimental Algorithmics}% + \def\@journalNameShort{ACM J. Exp. Algor.}% + \def\@permissionCodeOne{1084-6654}% +\or % JERIC + \def\@journalName{ACM Journal of Educational Resources in Computing}% + \def\@journalNameShort{ACM J. Edu. Resources in Comput.}% + \def\@permissionCodeOne{1073-0516}% +\or % JETC + \def\@journalName{ACM Journal on Emerging Technologies in Computing Systems}% + \def\@journalNameShort{ACM J. Emerg. Technol. Comput. Syst.}% + \def\@permissionCodeOne{1550-4832}% +\or % JOCCH + \def\@journalName{ACM Journal on Computing and Cultural Heritage}% + \def\@journalNameShort{ACM J. Comput. Cult. Herit.}% +\or % PACMHCI + \def\@journalName{Proceedings of the ACM on Human-Computer Interaction}% + \def\@journalNameShort{Proc. ACM Hum.-Comput. Interact.}% + \def\@permissionCodeOne{2573-0142}% + \@ACM@screentrue + \PackageInfo{\@classname}{Using screen mode due to \@journalCode}% +\or % PACMPL + \def\@journalName{Proceedings of the ACM on Programming Languages}% + \def\@journalNameShort{Proc. ACM Program. Lang.}% + \def\@permissionCodeOne{2475-1421}% + \@ACM@screentrue + \PackageInfo{\@classname}{Using screen mode due to \@journalCode}% +\or % POMACS + \def\@journalName{Proceedings of the ACM on Measurement and Analysis of Computing Systems}% + \def\@journalNameShort{Proc. ACM Meas. Anal. Comput. Syst.}% + \def\@permissionCodeOne{2476-1249}% + \@ACM@screentrue + \PackageInfo{\@classname}{Using screen mode due to \@journalCode}% +\or % TAAS + \def\@journalName{ACM Transactions on Autonomous and Adaptive Systems}% + \def\@journalNameShort{ACM Trans. Autonom. Adapt. Syst.}% + \def\@permissionCodeOne{1556-4665}% +\or % TACCESS + \def\@journalName{ACM Transactions on Accessible Computing}% + \def\@journalNameShort{ACM Trans. Access. Comput.}% + \def\@permissionCodeOne{1936-7228}% +\or % TACO + \def\@journalName{ACM Transactions on Architecture and Code Optimization}% + \def\@journalNameShort{ACM Trans. Arch. Code Optim.}% +\or % TALG + \def\@journalName{ACM Transactions on Algorithms}% + \def\@journalNameShort{ACM Trans. Algor.}% + \def\@permissionCodeOne{1549-6325}% +\or % TALLIP + \def\@journalName{ACM Transactions on Asian and Low-Resource Language Information Processing}% + \def\@journalNameShort{ACM Trans. Asian Low-Resour. Lang. Inf. Process.}% + \def\@permissionCodeOne{2375-4699}% +\or % TAP + \def\@journalName{ACM Transactions on Applied Perception}% +\or % TCPS + \def\@journalName{ACM Transactions on Cyber-Physical Systems}% +\or % TEAC + \def\@journalName{ACM Transactions on Economics and Computation}% +\or % TECS + \def\@journalName{ACM Transactions on Embedded Computing Systems}% + \def\@journalNameShort{ACM Trans. Embedd. Comput. Syst.}% + \def\@permissionCodeOne{1539-9087}% +\or % THRI + \def\@journalName{ACM Transactions on Human-Robot Interaction}% + \def\@journalNameShort{ACM Trans. Hum.-Robot Interact.}% + \def\@permissionCodeOne{2573-9522}% +\or % TIIS + \def\@journalName{ACM Transactions on Interactive Intelligent Systems}% + \def\@journalNameShort{ACM Trans. Interact. Intell. Syst.}% + \def\@permissionCodeOne{2160-6455}% +\or % TISSEC + \def\@journalName{ACM Transactions on Information and System Security}% + \def\@journalNameShort{ACM Trans. Info. Syst. Sec.}% + \def\@permissionCodeOne{1094-9224}% +\or % TIST + \def\@journalName{ACM Transactions on Intelligent Systems and Technology}% + \def\@journalNameShort{ACM Trans. Intell. Syst. Technol.}% + \def\@permissionCodeOne{2157-6904}% +\or % TKDD + \def\@journalName{ACM Transactions on Knowledge Discovery from Data}% + \def\@journalNameShort{ACM Trans. Knowl. Discov. Data.}% + \def\@permissionCodeOne{1556-4681}% +\or % TMIS + \def\@journalName{ACM Transactions on Management Information Systems}% + \def\@journalNameShort{ACM Trans. Manag. Inform. Syst.}% + \def\@permissionCodeOne{2158-656X}% +\or % TOCE + \def\@journalName{ACM Transactions on Computing Education}% + \def\@journalNameShort{ACM Trans. Comput. Educ.}% + \def\@permissionCodeOne{1946-6226}% +\or % TOCHI + \def\@journalName{ACM Transactions on Computer-Human Interaction}% + \def\@journalNameShort{ACM Trans. Comput.-Hum. Interact.}% + \def\@permissionCodeOne{1073-0516}% +\or % TOCL + \def\@journalName{ACM Transactions on Computational Logic}% + \def\@journalNameShort{ACM Trans. Comput. Logic}% + \def\@permissionCodeOne{1529-3785}% +\or % TOCS + \def\@journalName{ACM Transactions on Computer Systems}% + \def\@journalNameShort{ACM Trans. Comput. Syst.}% + \def\@permissionCodeOne{0734-2071}% +\or % TOCT + \def\@journalName{ACM Transactions on Computation Theory}% + \def\@journalNameShort{ACM Trans. Comput. Theory}% + \def\@permissionCodeOne{1942-3454}% +\or % TODAES + \def\@journalName{ACM Transactions on Design Automation of Electronic Systems}% + \def\@journalNameShort{ACM Trans. Des. Autom. Electron. Syst.}% + \def\@permissionCodeOne{1084-4309}% +\or % TODS + \def\@journalName{ACM Transactions on Database Systems}% + \def\@journalNameShort{ACM Trans. Datab. Syst.}% + \def\@permissionCodeOne{0362-5915}% +\or % TOG + \def\@journalName{ACM Transactions on Graphics}% + \def\@journalNameShort{ACM Trans. Graph.}% + \def\@permissionCodeOne{0730-0301} +\or % TOIS + \def\@journalName{ACM Transactions on Information Systems}% + \def\@permissionCodeOne{1046-8188}% +\or % TOIT + \def\@journalName{ACM Transactions on Internet Technology}% + \def\@journalNameShort{ACM Trans. Internet Technol.}% + \def\@permissionCodeOne{1533-5399}% +\or % TOMACS + \def\@journalName{ACM Transactions on Modeling and Computer Simulation}% + \def\@journalNameShort{ACM Trans. Model. Comput. Simul.}% +\or % TOMM + \def\@journalName{ACM Transactions on Multimedia Computing, Communications and Applications}% + \def\@journalNameShort{ACM Trans. Multimedia Comput. Commun. Appl.}% + \def\@permissionCodeOne{1551-6857}% + \def\@permissionCodeTwo{0100}% +\or % TOMPECS + \def\@journalName{ACM Transactions on Modeling and Performance Evaluation of Computing Systems}% + \def\@journalNameShort{ACM Trans. Model. Perform. Eval. Comput. Syst.}% + \def\@permissionCodeOne{2376-3639}% +\or % TOMS + \def\@journalName{ACM Transactions on Mathematical Software}% + \def\@journalNameShort{ACM Trans. Math. Softw.}% + \def\@permissionCodeOne{0098-3500}% +\or % TOPC + \def\@journalName{ACM Transactions on Parallel Computing}% + \def\@journalNameShort{ACM Trans. Parallel Comput.}% + \def\@permissionCodeOne{1539-9087}% +\or % TOPS + \def\@journalName{ACM Transactions on Privacy and Security}% + \def\@journalNameShort{ACM Trans. Priv. Sec.}% + \def\@permissionCodeOne{2471-2566}% +\or % TOPLAS + \def\@journalName{ACM Transactions on Programming Languages and Systems}% + \def\@journalNameShort{ACM Trans. Program. Lang. Syst.}% + \def\@permissionCodeOne{0164-0925}% +\or % TOS + \def\@journalName{ACM Transactions on Storage}% + \def\@journalNameShort{ACM Trans. Storage}% + \def\@permissionCodeOne{1553-3077}% +\or % TOSEM + \def\@journalName{ACM Transactions on Software Engineering and Methodology}% + \def\@journalNameShort{ACM Trans. Softw. Eng. Methodol.}% + \def\@permissionCodeOne{1049-331X}% +\or % TOSN + \def\@journalName{ACM Transactions on Sensor Networks}% + \def\@journalNameShort{ACM Trans. Sensor Netw.}% + \def\@permissionCodeOne{1550-4859}% +\or % TRETS + \def\@journalName{ACM Transactions on Reconfigurable Technology and Systems}% + \def\@journalNameShort{ACM Trans. Reconfig. Technol. Syst.}% + \def\@permissionCodeOne{1936-7406}% +\or % TSAS + \def\@journalName{ACM Transactions on Spatial Algorithms and Systems}% + \def\@journalNameShort{ACM Trans. Spatial Algorithms Syst.}% + \def\@permissionCodeOne{2374-0353}% +\or % TSC + \def\@journalName{ACM Transactions on Social Computing}% + \def\@journalNameShort{ACM Trans. Soc. Comput.}% + \def\@permissionCodeOne{2469-7818}% +\or % TSLP + \def\@journalName{ACM Transactions on Speech and Language Processing}% + \def\@journalNameShort{ACM Trans. Speech Lang. Process.}% + \def\@permissionCodeOne{1550-4875}% +\or % TWEB + \def\@journalName{ACM Transactions on the Web}% + \def\@journalNameShort{ACM Trans. Web}% + \def\@permissionCodeOne{1559-1131}% +\fi +\ClassInfo{\@classname}{Using journal code \@journalCode}% +}{% + \ClassError{\@classname}{Incorrect journal #1}% +}% +\def\acmJournal#1{\setkeys{ACM}{acmJournal=#1}} +\def\@journalCode@nr{0} +\def\@journalName{}% +\def\@journalNameShort{\@journalName}% +\def\@permissionCodeOne{XXXX-XXXX}% +\def\@permissionCodeTwo{}% +\newcommand\acmConference[4][]{% + \gdef\acmConference@shortname{#1}% + \gdef\acmConference@name{#2}% + \gdef\acmConference@date{#3}% + \gdef\acmConference@venue{#4}% + \ifx\acmConference@shortname\@empty + \gdef\acmConference@shortname{#2}% + \fi} +\acmConference[Conference'17]{ACM Conference}{July 2017}{Washington, + DC, USA} +\def\acmBooktitle#1{\gdef\@acmBooktitle{#1}} +\acmBooktitle{Proceedings of \acmConference@name + \ifx\acmConference@name\acmConference@shortname\else + \ (\acmConference@shortname)\fi} +\def\@editorsAbbrev{(Ed.)} +\def\@acmEditors{} +\def\editor#1{\ifx\@acmEditors\@empty + \gdef\@acmEditors{#1}% + \else + \gdef\@editorsAbbrev{(Eds.)}% + \g@addto@macro\@acmEditors{\and#1}% +\fi} +\def\subtitle#1{\def\@subtitle{#1}} +\subtitle{} +\newcount\num@authorgroups +\num@authorgroups=0\relax +\newcount\num@authors +\num@authors=0\relax +\newif\if@insideauthorgroup +\@insideauthorgroupfalse +\renewcommand\author[2][]{% + \global\advance\num@authors by 1\relax + \if@insideauthorgroup\else + \global\advance\num@authorgroups by 1\relax + \global\@insideauthorgrouptrue + \fi + \ifx\addresses\@empty + \if@ACM@anonymous + \gdef\addresses{\@author{Anonymous Author(s)}}% + \gdef\authors{Anonymous Author(s)}% + \else + \gdef\addresses{\@author{#2}}% + \gdef\authors{#2}% + \fi + \else + \if@ACM@anonymous\else + \g@addto@macro\addresses{\and\@author{#2}}% + \g@addto@macro\authors{\and#2}% + \fi + \fi + \if@ACM@anonymous + \ifx\shortauthors\@empty + \gdef\shortauthors{Anon.}% + \fi + \else + \def\@tempa{#1}% + \ifx\@tempa\@empty + \ifx\shortauthors\@empty + \gdef\shortauthors{#2}% + \else + \g@addto@macro\shortauthors{\and#2}% + \fi + \else + \ifx\shortauthors\@empty + \gdef\shortauthors{#1}% + \else + \g@addto@macro\shortauthors{\and#1}% + \fi + \fi + \fi} +\newcommand{\affiliation}[2][]{% + \global\@insideauthorgroupfalse + \if@ACM@anonymous\else + \g@addto@macro\addresses{\affiliation{#1}{#2}}% + \fi} +\define@boolkey+{@ACM@affiliation@}[@ACM@affiliation@]{obeypunctuation}% +[true]{}{\ClassError{\@classname}{The option obeypunctuation can be either true or false}} +\def\additionalaffiliation#1{\authornote{\@additionalaffiliation{#1}}} +\def\@additionalaffiliation#1{\bgroup + \def\position##1{\ignorespaces}% + \def\institution##1{##1\ignorespaces}% + \def\department{\@ifnextchar[{\@department}{\@department[]}}% + \def\@department[##1]##2{\unskip, ##2\ignorespaces}% + \let\streetaddress\position + \let\city\position + \let\state\position + \let\postcode\position + \let\country\position + Also with #1\unskip.\egroup} +\renewcommand{\email}[2][]{% + \if@ACM@anonymous\else + \g@addto@macro\addresses{\email{#1}{#2}}% + \fi} +\def\orcid#1{\unskip\ignorespaces} +\def\authorsaddresses#1{\def\@authorsaddresses{#1}} +\authorsaddresses{\@mkauthorsaddresses} +\def\@titlenotes{} +\def\titlenote#1{% + \g@addto@macro\@title{\footnotemark}% + \if@ACM@anonymous + \g@addto@macro\@titlenotes{% + \stepcounter{footnote}\footnotetext{Title note}}% + \else + \g@addto@macro\@titlenotes{\stepcounter{footnote}\footnotetext{#1}}% + \fi} +\def\@subtitlenotes{} +\def\subtitlenote#1{% + \g@addto@macro\@subtitle{\footnotemark}% + \if@ACM@anonymous + \g@addto@macro\@subtitlenotes{% + \stepcounter{footnote}\footnotetext{Subtitle note}}% + \else + \g@addto@macro\@subtitlenotes{% + \stepcounter{footnote}\footnotetext{#1}}% + \fi} +\def\@authornotes{} +\def\authornote#1{% + \if@ACM@anonymous\else + \g@addto@macro\addresses{\@authornotemark}% + \g@addto@macro\@authornotes{% + \stepcounter{footnote}\footnotetext{#1}}% + \fi} +\newcommand\authornotemark[1][\relax]{% + \ifx#1\relax\relax\relax + \g@addto@macro\addresses{\@authornotemark}% + \else + \g@addto@macro\addresses{\@@authornotemark{#1}}% + \fi} +\def\acmVolume#1{\def\@acmVolume{#1}} +\acmVolume{1} +\def\acmNumber#1{\def\@acmNumber{#1}} +\acmNumber{1} +\def\acmArticle#1{\def\@acmArticle{#1}} +\acmArticle{} +\def\acmArticleSeq#1{\def\@acmArticleSeq{#1}} +\acmArticleSeq{\@acmArticle} +\def\acmYear#1{\def\@acmYear{#1}} +\acmYear{\the\year} +\def\acmMonth#1{\def\@acmMonth{#1}} +\acmMonth{\the\month} +\def\@acmPubDate{\ifcase\@acmMonth\or + January\or February\or March\or April\or May\or June\or + July\or August\or September\or October\or November\or + December\fi~\@acmYear} +\def\acmPrice#1{\def\@acmPrice{#1}} +\acmPrice{15.00} +\def\acmSubmissionID#1{\def\@acmSubmissionID{#1}} +\acmSubmissionID{} +\def\acmISBN#1{\def\@acmISBN{#1}} +\acmISBN{978-x-xxxx-xxxx-x/YY/MM} +\def\acmDOI#1{\def\@acmDOI{#1}} +\acmDOI{10.1145/nnnnnnn.nnnnnnn} +\newif\if@ACM@badge +\@ACM@badgefalse +\newlength\@ACM@badge@width +\setlength\@ACM@badge@width{5pc} +\newlength\@ACM@title@width +\newlength\@ACM@badge@skip +\setlength\@ACM@badge@skip{1pc} +\newcommand\acmBadgeR[2][]{\@ACM@badgetrue + \def\@acmBadgeR@url{#1}% + \def\@acmBadgeR@image{#2}} +\def\@acmBadgeR@url{} +\def\@acmBadgeR@image{} +\newcommand\acmBadgeL[2][]{\@ACM@badgetrue + \def\@acmBadgeL@url{#1}% + \def\@acmBadgeL@image{#2}} +\def\@acmBadgeL@url{} +\def\@acmBadgeL@image{} +\def\startPage#1{\def\@startPage{#1}} +\startPage{} +\def\terms#1{\ClassWarning{\@classname}{The command \string\terms{} is + obsolete. I am going to ignore it}} +\def\keywords#1{\def\@keywords{#1}} +\keywords{} +\renewenvironment{abstract}{\Collect@Body\@saveabstract}{} +\long\def\@saveabstract#1{\long\gdef\@abstract{#1}} +\@saveabstract{} +\long\def\@lempty{} +\define@boolkey+{@ACM@topmatter@}[@ACM@]{printccs}[true]{% + \if@ACM@printccs + \ClassInfo{\@classname}{Printing CCS}% + \else + \ClassInfo{\@classname}{Suppressing CCS}% + \fi}{\ClassError{\@classname}{The option printccs can be either true or false}} +\define@boolkey+{@ACM@topmatter@}[@ACM@]{printacmref}[true]{% + \if@ACM@printacmref + \ClassInfo{\@classname}{Printing bibformat}% + \else + \ClassInfo{\@classname}{Suppressing bibformat}% + \fi}{\ClassError{\@classname}{The option printacmref can be either true or false}} +\define@boolkey+{@ACM@topmatter@}[@ACM@]{printfolios}[true]{% + \if@ACM@printfolios + \ClassInfo{\@classname}{Printing folios}% + \else + \ClassInfo{\@classname}{Suppressing folios}% + \fi}{\ClassError{\@classname}{The option printfolios can be either true or false}} +\define@cmdkey{@ACM@topmatter@}[@ACM@]{authorsperrow}[0]{% + \IfInteger{#1}{\ClassInfo{\@classname}{Setting authorsperrow to + #1}}{\ClassWarning{\@classname}{The parameter authorsperrow must be + numerical. Ignoring the input #1}\gdef\@ACM@authorsperrow{0}}} +\def\settopmatter#1{\setkeys{@ACM@topmatter@}{#1}} +\settopmatter{printccs=true, printacmref=true} +\if@ACM@manuscript + \settopmatter{printfolios=true} +\else + \if@ACM@journal + \settopmatter{printfolios=true} + \else + \settopmatter{printfolios=false} + \fi +\fi +\settopmatter{authorsperrow=0} +\def\@received{} +\newcommand\received[2][]{\def\@tempa{#1}% + \ifx\@tempa\@empty + \ifx\@received\@empty + \gdef\@received{Received #2}% + \else + \g@addto@macro{\@received}{; revised #2}% + \fi + \else + \ifx\@received\@empty + \gdef\@received{#1 #2}% + \else + \g@addto@macro{\@received}{; #1 #2}% + \fi + \fi} +\AtEndDocument{% + \ifx\@received\@empty\else + \par\bigskip\noindent\small\normalfont\@received\par + \fi} +\RequirePackage{comment} +\excludecomment{CCSXML} +\let\@concepts\@empty +\newcommand\ccsdesc[2][100]{% + \ccsdesc@parse#1~#2~~\ccsdesc@parse@end} +\RequirePackage{textcomp} +\def\ccsdesc@parse#1~#2~#3~{% + \expandafter\ifx\csname CCS@General@#2\endcsname\relax + \expandafter\gdef\csname CCS@General@#2\endcsname{\textbullet\ + \textbf{#2}}% + \expandafter\gdef\csname CCS@Punctuation@#2\endcsname{; }% + \expandafter\gdef\csname CCS@Specific@#2\endcsname{}% + \g@addto@macro{\@concepts}{\csname CCS@General@#2\endcsname + \csname CCS@Punctuation@#2\endcsname + \csname CCS@Specific@#2\endcsname}% + \fi + \ifx#3\relax\relax\else + \expandafter\gdef\csname CCS@Punctuation@#2\endcsname{ + \textrightarrow\ }% + \expandafter\g@addto@macro\expandafter{\csname CCS@Specific@#2\endcsname}{% + \ifnum#1>499\textbf{#3}; \else + \ifnum#1>299\textit{#3}; \else + #3; \fi\fi}% + \fi +\ccsdesc@parse@finish} +\def\ccsdesc@parse@finish#1\ccsdesc@parse@end{} +\newif\if@printcopyright +\@printcopyrighttrue +\newif\if@printpermission +\@printpermissiontrue +\newif\if@acmowned +\@acmownedtrue +\define@choicekey*{ACM@}{acmcopyrightmode}[% + \acm@copyrightinput\acm@copyrightmode]{none,% + acmcopyright,acmlicensed,rightsretained,% + usgov,usgovmixed,cagov,cagovmixed,licensedusgovmixed,% + licensedcagov,licensedcagovmixed,othergov,licensedothergov,% + iw3c2w3,iw3c2w3g}{% + \@printpermissiontrue + \@printcopyrighttrue + \@acmownedtrue + \ifnum\acm@copyrightmode=0\relax % none + \@printpermissionfalse + \@printcopyrightfalse + \@acmownedfalse + \fi + \ifnum\acm@copyrightmode=2\relax % acmlicensed + \@acmownedfalse + \fi + \ifnum\acm@copyrightmode=3\relax % rightsretained + \@acmownedfalse + \acmPrice{}% + \fi + \ifnum\acm@copyrightmode=4\relax % usgov + \@printpermissiontrue + \@printcopyrightfalse + \@acmownedfalse + \acmPrice{}% + \fi + \ifnum\acm@copyrightmode=6\relax % cagov + \@acmownedfalse + \fi + \ifnum\acm@copyrightmode=8\relax % licensedusgovmixed + \@acmownedfalse + \fi + \ifnum\acm@copyrightmode=9\relax % licensedcagov + \@acmownedfalse + \fi + \ifnum\acm@copyrightmode=10\relax % licensedcagovmixed + \@acmownedfalse + \fi + \ifnum\acm@copyrightmode=11\relax % othergov + \@acmownedtrue + \fi + \ifnum\acm@copyrightmode=12\relax % licensedothergov + \@acmownedfalse + \fi + \ifnum\acm@copyrightmode=13\relax % iw3c2w3 + \@acmownedfalse + \fi + \ifnum\acm@copyrightmode=14\relax % iw3c2w3g + \@acmownedfalse + \fi} +\def\setcopyright#1{\setkeys{ACM@}{acmcopyrightmode=#1}} +\setcopyright{acmcopyright} +\def\@copyrightowner{% + \ifcase\acm@copyrightmode\relax % none + \or % acmcopyright + Association for Computing Machinery. + \or % acmlicensed + Copyright held by the owner/author(s). Publication rights licensed to + the Association for Computing Machinery. + \or % rightsretained + Copyright held by the owner/author(s). + \or % usgov + \or % usgovmixed + Association for Computing Machinery. + \or % cagov + Crown in Right of Canada. + \or %cagovmixed + Association for Computing Machinery. + \or %licensedusgovmixed + Copyright held by the owner/author(s). Publication rights licensed to + the Association for Computing Machinery. + \or % licensedcagov + Crown in Right of Canada. Publication rights licensed to + the Association for Computing Machinery. + \or %licensedcagovmixed + Copyright held by the owner/author(s). Publication rights licensed to + the Association for Computing Machinery. + \or % othergov + Association for Computing Machinery. + \or % licensedothergov + Copyright held by the owner/author(s). Publication rights licensed to + the Association for Computing Machinery. + \or % ic2w3www + IW3C2 (International World Wide Web Conference Committee), published + under Creative Commons CC~BY~4.0 License. + \or % ic2w3wwwgoogle + IW3C2 (International World Wide Web Conference Committee), published + under Creative Commons CC~BY-NC-ND~4.0 License. + \fi} +\def\@formatdoi#1{\url{https://doi.org/#1}} +\def\@copyrightpermission{% + \ifcase\acm@copyrightmode\relax % none + \or % acmcopyright + Permission to make digital or hard copies of all or part of this + work for personal or classroom use is granted without fee provided + that copies are not made or distributed for profit or commercial + advantage and that copies bear this notice and the full citation on + the first page. Copyrights for components of this work owned by + others than ACM must be honored. Abstracting with credit is + permitted. To copy otherwise, or republish, to post on servers or to + redistribute to lists, requires prior specific permission + and\hspace*{.5pt}/or a fee. Request permissions from + permissions@acm.org. + \or % acmlicensed + Permission to make digital or hard copies of all or part of this + work for personal or classroom use is granted without fee provided + that copies are not made or distributed for profit or commercial + advantage and that copies bear this notice and the full citation on + the first page. Copyrights for components of this work owned by + others than the author(s) must be honored. Abstracting with credit + is permitted. To copy otherwise, or republish, to post on servers + or to redistribute to lists, requires prior specific permission + and\hspace*{.5pt}/or a fee. Request permissions from + permissions@acm.org. + \or % rightsretained + Permission to make digital or hard copies of part or all of this work + for personal or classroom use is granted without fee provided that + copies are not made or distributed for profit or commercial advantage + and that copies bear this notice and the full citation on the first + page. Copyrights for third-party components of this work must be + honored. For all other uses, contact the + owner\hspace*{.5pt}/author(s). + \or % usgov + This paper is authored by an employee(s) of the United States + Government and is in the public domain. Non-exclusive copying or + redistribution is allowed, provided that the article citation is + given and the authors and agency are clearly identified as its + source. + \or % usgovmixed + ACM acknowledges that this contribution was authored or co-authored + by an employee, contractor, or affiliate of the United States government. As such, + the United States government retains a nonexclusive, royalty-free right to + publish or reproduce this article, or to allow others to do so, for + government purposes only. + \or % cagov + This article was authored by employees of the Government of Canada. + As such, the Canadian government retains all interest in the + copyright to this work and grants to ACM a nonexclusive, + royalty-free right to publish or reproduce this article, or to allow + others to do so, provided that clear attribution is given both to + the authors and the Canadian government agency employing them. + Permission to make digital or hard copies for personal or classroom + use is granted. Copies must bear this notice and the full citation + on the first page. Copyrights for components of this work owned by + others than the Canadian Government must be honored. To copy + otherwise, distribute, republish, or post, requires prior specific + permission and\hspace*{.5pt}/or a fee. Request permissions from + permissions@acm.org. + \or % cagovmixed + ACM acknowledges that this contribution was co-authored by an + affiliate of the national government of Canada. As such, the Crown + in Right of Canada retains an equal interest in the copyright. + Reprints must include clear attribution to ACM and the author's + government agency affiliation. Permission to make digital or hard + copies for personal or classroom use is granted. Copies must bear + this notice and the full citation on the first page. Copyrights for + components of this work owned by others than ACM must be honored. + To copy otherwise, distribute, republish, or post, requires prior + specific permission and\hspace*{.5pt}/or a fee. Request permissions + from permissions@acm.org. + \or % licensedusgovmixed + Publication rights licensed to ACM\@. ACM acknowledges that this + contribution was authored or co-authored by an employee, contractor + or affiliate of the United States government. As such, the + Government retains a nonexclusive, royalty-free right to publish or + reproduce this article, or to allow others to do so, for Government + purposes only. + \or % licensedcagov + This article was authored by employees of the Government of Canada. + As such, the Canadian government retains all interest in the + copyright to this work and grants to ACM a nonexclusive, + royalty-free right to publish or reproduce this article, or to allow + others to do so, provided that clear attribution is given both to + the authors and the Canadian government agency employing them. + Permission to make digital or hard copies for personal or classroom + use is granted. Copies must bear this notice and the full citation + on the first page. Copyrights for components of this work owned by + others than the Canadian Government must be honored. To copy + otherwise, distribute, republish, or post, requires prior specific + permission and\hspace*{.5pt}/or a fee. Request permissions from + permissions@acm.org. + \or % licensedcagovmixed + Publication rights licensed to ACM\@. ACM acknowledges that this + contribution was authored or co-authored by an employee, contractor + or affiliate of the national government of Canada. As such, the + Government retains a nonexclusive, royalty-free right to publish or + reproduce this article, or to allow others to do so, for Government + purposes only. + \or % othergov + ACM acknowledges that this contribution was authored or co-authored + by an employee, contractor or affiliate of a national government. As + such, the Government retains a nonexclusive, royalty-free right to + publish or reproduce this article, or to allow others to do so, for + Government purposes only. + \or % licensedothergov + Publication rights licensed to ACM\@. ACM acknowledges that this + contribution was authored or co-authored by an employee, contractor + or affiliate of a national government. As such, the Government + retains a nonexclusive, royalty-free right to publish or reproduce + this article, or to allow others to do so, for Government purposes + only. + \or % iw3c2w3 + This paper is published under the Creative Commons Attribution~4.0 + International (CC~BY~4.0) license. Authors reserve their rights to + disseminate the work on their personal and corporate Web sites with + the appropriate attribution. + \or % iw3c2w3g + This paper is published under the Creative Commons + Attribution-NonCommercial-NoDerivs~4.0 International + (CC~BY-NC-ND~4.0) license. Authors reserve their rights to + disseminate the work on their personal and corporate Web sites with + the appropriate attribution. + \fi} +\def\copyrightyear#1{\def\@copyrightyear{#1}} +\copyrightyear{\@acmYear} +\def\@teaserfigures{} +\newenvironment{teaserfigure}{\Collect@Body\@saveteaser}{} +\long\def\@saveteaser#1{\g@addto@macro\@teaserfigures{\@teaser{#1}}} +\renewcommand{\thanks}[1]{% + \@ifnotempty{#1}{% + \if@ACM@anonymous + \g@addto@macro\thankses{\thanks{A note}}% + \else + \g@addto@macro\thankses{\thanks{#1}}% + \fi}} +\newbox\mktitle@bx +\def\maketitle{% + \if@ACM@anonymous + % Anonymize omission of \author-s + \ifnum\num@authorgroups=0\author{}\fi + \fi + \begingroup + \let\@footnotemark\@footnotemark@nolink + \let\@footnotetext\@footnotetext@nolink + \renewcommand\thefootnote{\@fnsymbol\c@footnote}% + \global\@topnum\z@ % this prevents floats from falling + % at the top of page 1 + \global\@botnum\z@ % we do not want them to be on the bottom either + \hsize=\textwidth + \def\@makefnmark{\hbox{\@textsuperscript{\@thefnmark}}}% + \@mktitle\if@ACM@sigchiamode\else\@mkauthors\fi\@mkteasers + \@printtopmatter + \if@ACM@sigchiamode\@mkauthors\fi + \setcounter{footnote}{0}% + \def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}% + \@titlenotes + \@subtitlenotes + \@authornotes + \let\@makefnmark\relax + \let\@thefnmark\relax + \let\@makefntext\noindent + \ifx\@empty\thankses\else + \footnotetextauthorsaddresses{% + \def\par{\let\par\@par}\parindent\z@\@setthanks}% + \fi + \ifx\@empty\@authorsaddresses\else + \if@ACM@anonymous\else + \if@ACM@journal + \footnotetextauthorsaddresses{% + \def\par{\let\par\@par}\parindent\z@\@setauthorsaddresses}% + \fi + \fi + \fi + \footnotetextcopyrightpermission{% + \if@ACM@authordraft + \raisebox{-2ex}[\z@][\z@]{\makebox[0pt][l]{\large\bfseries + Unpublished working draft. Not for distribution.}}% + \color[gray]{0.9}% + \fi + \parindent\z@\parskip0.1\baselineskip + \if@ACM@authorversion\else + \if@printpermission\@copyrightpermission\par\fi + \fi + \if@ACM@manuscript\else + \if@ACM@journal\else % Print the conference information + {\itshape \acmConference@shortname, \acmConference@date, \acmConference@venue}\par + \fi + \fi + \if@printcopyright + \copyright\ \@copyrightyear\ \@copyrightowner\\ + \else + \@copyrightyear.\ + \fi + \if@ACM@manuscript + Manuscript submitted to ACM\\ + \else + \if@ACM@authorversion + This is the author's version of the work. It is posted here for + your personal use. Not for redistribution. The definitive Version + of Record was published in + \if@ACM@journal + \emph{\@journalName}% + \else + \emph{\@acmBooktitle}% + \fi + \ifx\@acmDOI\@empty + . + \else + , \@formatdoi{\@acmDOI}. + \fi\\ + \else + \if@ACM@journal + \@permissionCodeOne/\@acmYear/\@acmMonth-ART\@acmArticle + \ifx\@acmPrice\@empty\else\ \$\@acmPrice\fi\\ + \@formatdoi{\@acmDOI}% + \else % Conference + \ifx\@acmISBN\@empty\else ACM~ISBN~\@acmISBN + \ifx\@acmPrice\@empty.\else\dots\$\@acmPrice\fi\\\fi + \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi% + \fi + \fi + \fi} + \endgroup + \setcounter{footnote}{0}% + \@mkabstract + \if@ACM@printccs + \ifx\@concepts\@empty\else\bgroup + {\@specialsection{CCS Concepts}% + \@concepts\par}\egroup + \fi + \fi + \ifx\@keywords\@empty\else\bgroup + {\if@ACM@journal + \@specialsection{Additional Key Words and Phrases}% + \else + \@specialsection{Keywords}% + \fi + \@keywords}\par\egroup + \fi + \andify\authors + \andify\shortauthors + \global\let\authors=\authors + \global\let\shortauthors=\shortauthors + \if@ACM@printacmref + \@mkbibcitation + \fi + \hypersetup{% + pdflang={English}, + pdfdisplaydoctitle, + pdfauthor={\authors}, + pdftitle={\@title}, + pdfsubject={\@concepts}, + pdfkeywords={\@keywords}, + pdfcreator={LaTeX with acmart + \csname ver@acmart.cls\endcsname\space + and hyperref + \csname ver@hyperref.sty\endcsname}}% + \@printendtopmatter + \@afterindentfalse + \@afterheading +} +\def\@specialsection#1{% + \ifcase\ACM@format@nr + \relax % manuscript + \par\medskip\small\noindent#1: % + \or % acmsmall + \par\medskip\small\noindent#1: % + \or % acmlarge + \par\medskip\small\noindent#1: % + \or % acmtog + \par\medskip\small\noindent#1: % + \or % sigconf + \section*{#1}% + \or % siggraph + \section*{#1}% + \or % sigplan + \paragraph*{#1}% + \or % sigchi + \section*{#1}% + \or % sigchi-a + \section*{#1}% + \fi} +\def\@printtopmatter{% + \ifx\@startPage\@empty + \gdef\@startPage{1}% + \else + \setcounter{page}{\@startPage}% + \fi + \thispagestyle{firstpagestyle}% + \noindent + \ifcase\ACM@format@nr + \relax % manuscript + \box\mktitle@bx\par + \or % acmsmall + \box\mktitle@bx\par + \or % acmlarge + \box\mktitle@bx\par + \or % acmtog + \twocolumn[\box\mktitle@bx]% + \or % sigconf + \twocolumn[\box\mktitle@bx]% + \or % siggraph + \twocolumn[\box\mktitle@bx]% + \or % sigplan + \twocolumn[\box\mktitle@bx]% + \or % sigchi + \twocolumn[\box\mktitle@bx]% + \or % sigchi-a + \par\box\mktitle@bx\par\bigskip + \if@ACM@badge + \marginpar{\noindent + \ifx\@acmBadgeL@image\@empty\else + \href{\@acmBadgeL@url}{% + \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}% + \hskip\@ACM@badge@skip + \fi + \ifx\@acmBadgeR@image\@empty\else + \href{\@acmBadgeR@url}{% + \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}% + \fi}% + \fi + \fi +} +\def\@mktitle{% + \ifcase\ACM@format@nr + \relax % manuscript + \@mktitle@i + \or % acmsmall + \@mktitle@i + \or % acmlarge + \@mktitle@i + \or % acmtog + \@mktitle@i + \or % sigconf + \@mktitle@iii + \or % siggraph + \@mktitle@iii + \or % sigplan + \@mktitle@iii + \or % sigchi + \@mktitle@iii + \or % sigchi-a + \@mktitle@iv + \fi +} +\def\@titlefont{% + \ifcase\ACM@format@nr + \relax % manuscript + \LARGE\sffamily\bfseries + \or % acmsmall + \LARGE\sffamily\bfseries + \or % acmlarge + \LARGE\sffamily\bfseries + \or % acmtog + \Huge\sffamily + \or % sigconf + \Huge\sffamily\bfseries + \or % siggraph + \Huge\sffamily\bfseries + \or % sigplan + \Huge\bfseries + \or % sigchi + \Huge\sffamily\bfseries + \or % sigchi-a + \Huge\bfseries + \fi} +\def\@subtitlefont{\normalsize + \ifcase\ACM@format@nr + \relax % manuscript + \mdseries + \or % acmsmall + \mdseries + \or % acmlarge + \mdseries + \or % acmtog + \LARGE + \or % sigconf + \LARGE\mdseries + \or % siggraph + \LARGE\mdseries + \or % sigplan + \LARGE\mdseries + \or % sigchi + \LARGE\mdseries + \or % sigchi-a + \mdseries + \fi} +\def\@mktitle@i{\hsize=\textwidth + \@ACM@title@width=\hsize + \ifx\@acmBadgeL@image\@empty\else + \advance\@ACM@title@width by -\@ACM@badge@width + \advance\@ACM@title@width by -\@ACM@badge@skip + \fi + \ifx\@acmBadgeR@image\@empty\else + \advance\@ACM@title@width by -\@ACM@badge@width + \advance\@ACM@title@width by -\@ACM@badge@skip + \fi + \setbox\mktitle@bx=\vbox{\noindent\@titlefont + \ifx\@acmBadgeL@image\@empty\else + \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeL@url}{% + \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}}% + \hskip\@ACM@badge@skip + \fi + \parbox[t]{\@ACM@title@width}{\raggedright + \@titlefont\noindent + \@title + \ifx\@subtitle\@empty\else + \par\noindent{\@subtitlefont\@subtitle} + \fi}% + \ifx\@acmBadgeR@image\@empty\else + \hskip\@ACM@badge@skip + \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeR@url}{% + \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}}% + \fi + \par\bigskip}}% +\def\@mktitle@iii{\hsize=\textwidth + \setbox\mktitle@bx=\vbox{\@titlefont\centering + \@ACM@title@width=\hsize + \if@ACM@badge + \advance\@ACM@title@width by -2\@ACM@badge@width + \advance\@ACM@title@width by -2\@ACM@badge@skip + \parbox[b]{\@ACM@badge@width}{\strut + \ifx\@acmBadgeL@image\@empty\else + \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeL@url}{% + \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}}% + \fi}% + \hskip\@ACM@badge@skip + \fi + \parbox[t]{\@ACM@title@width}{\centering\@titlefont + \@title + \ifx\@subtitle\@empty\else + \par\noindent{\@subtitlefont\@subtitle} + \fi + }% + \if@ACM@badge + \hskip\@ACM@badge@skip + \parbox[b]{\@ACM@badge@width}{\strut + \ifx\@acmBadgeR@image\@empty\else + \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeR@url}{% + \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}}% + \fi}% + \fi + \par\bigskip}}% +\def\@mktitle@iv{\hsize=\textwidth + \setbox\mktitle@bx=\vbox{\raggedright\leftskip5pc\@titlefont + \noindent\leavevmode\leaders\hrule height 2pt\hfill\kern0pt\par + \noindent\@title + \ifx\@subtitle\@empty\else + \par\noindent\@subtitlefont\@subtitle + \fi + \par\bigskip}}% +\newbox\@ACM@commabox +\def\@ACM@addtoaddress#1{% + \ifvmode\else + \if@ACM@affiliation@obeypunctuation\else + \setbox\@ACM@commabox=\hbox{, }% + \unskip\cleaders\copy\@ACM@commabox\hskip\wd\@ACM@commabox + \fi\fi + #1} +\def\streetaddress#1{\unskip\ignorespaces} +\def\postcode#1{\unskip\ignorespaces} +\if@ACM@journal + \def\position#1{\unskip\ignorespaces} + \def\institution#1{\unskip~#1\ignorespaces} + \def\city#1{\unskip\ignorespaces} + \def\state#1{\unskip\ignorespaces} + \newcommand\department[2][0]{\unskip\ignorespaces} + \def\country#1{\if@ACM@affiliation@obeypunctuation\else, \fi#1\ignorespaces} +\else + \def\position#1{\if@ACM@affiliation@obeypunctuation#1\else#1\par\fi}% + \def\institution#1{\if@ACM@affiliation@obeypunctuation#1\else#1\par\fi}% + \newcommand\department[2][0]{\if@ACM@affiliation@obeypunctuation + #2\else#2\par\fi}% + \let\city\@ACM@addtoaddress + \let\state\@ACM@addtoaddress + \let\country\@ACM@addtoaddress +\fi +\def\@mkauthors{\begingroup + \hsize=\textwidth + \ifcase\ACM@format@nr + \relax % manuscript + \@mkauthors@i + \or % acmsmall + \@mkauthors@i + \or % acmlarge + \@mkauthors@i + \or % acmtog + \@mkauthors@i + \or % sigconf + \@mkauthors@iii + \or % siggraph + \@mkauthors@iii + \or % sigplan + \@mkauthors@iii + \or % sigchi + \@mkauthors@iii + \or % sigchi-a + \@mkauthors@iv + \fi + \endgroup +} +\def\@authorfont{\Large\sffamily} +\def\@affiliationfont{\normalsize\normalfont} +\ifcase\ACM@format@nr +\relax % manuscript +\or % acmsmall + \def\@authorfont{\large\sffamily} + \def\@affiliationfont{\small\normalfont} +\or % acmlarge +\or % acmtog + \def\@authorfont{\LARGE\sffamily} + \def\@affiliationfont{\large} +\or % sigconf + \def\@authorfont{\LARGE} + \def\@affiliationfont{\large} +\or % siggraph + \def\@authorfont{\normalsize\normalfont} + \def\@affiliationfont{\normalsize\normalfont} +\or % sigplan + \def\@authorfont{\Large\normalfont} + \def\@affiliationfont{\normalsize\normalfont} +\or % sigchi + \def\@authorfont{\bfseries} + \def\@affiliationfont{\mdseries} +\or % sigchi-a + \def\@authorfont{\bfseries} + \def\@affiliationfont{\mdseries} +\fi +\def\@typeset@author@line{% + \andify\@currentauthors\par\noindent + \@currentauthors\def\@currentauthors{}% + \ifx\@currentaffiliations\@empty\else + \andify\@currentaffiliations + \unskip, {\@currentaffiliations}\par + \fi + \def\@currentaffiliations{}} +\def\@mkauthors@i{% + \def\@currentauthors{}% + \def\@currentaffiliations{}% + \global\let\and\@typeset@author@line + \def\@author##1{% + \ifx\@currentauthors\@empty + \gdef\@currentauthors{\@authorfont\MakeTextUppercase{##1}}% + \else + \g@addto@macro{\@currentauthors}{\and\MakeTextUppercase{##1}}% + \fi + \gdef\and{}}% + \def\email##1##2{}% + \def\affiliation##1##2{% + \def\@tempa{##2}\ifx\@tempa\@empty\else + \ifx\@currentaffiliations\@empty + \gdef\@currentaffiliations{% + \setkeys{@ACM@affiliation@}{obeypunctuation=false}% + \setkeys{@ACM@affiliation@}{##1}% + \@affiliationfont##2}% + \else + \g@addto@macro{\@currentaffiliations}{\and + \setkeys{@ACM@affiliation@}{obeypunctuation=false}% + \setkeys{@ACM@affiliation@}{##1}##2}% + \fi + \fi + \global\let\and\@typeset@author@line}% + \global\setbox\mktitle@bx=\vbox{\noindent\box\mktitle@bx\par\medskip + \noindent\addresses\@typeset@author@line + \par\medskip}% +} +\newbox\author@bx +\newdimen\author@bx@wd +\newskip\author@bx@sep +\author@bx@sep=1pc\relax +\def\@typeset@author@bx{\bgroup\hsize=\author@bx@wd\def\and{\par}% + \global\setbox\author@bx=\vtop{\if@ACM@sigchiamode\else\centering\fi + \@authorfont\@currentauthors\par\@affiliationfont + \@currentaffiliation}\egroup + \box\author@bx\hspace{\author@bx@sep}% + \gdef\@currentauthors{}% + \gdef\@currentaffiliation{}} +\def\@mkauthors@iii{% + \author@bx@wd=\textwidth\relax + \advance\author@bx@wd by -\author@bx@sep\relax + \ifnum\@ACM@authorsperrow>0\relax + \divide\author@bx@wd by \@ACM@authorsperrow\relax + \else + \ifcase\num@authorgroups + \relax % 0? + \or % 1=one author per row + \or % 2=two authors per row + \divide\author@bx@wd by \num@authorgroups\relax + \or % 3=three authors per row + \divide\author@bx@wd by \num@authorgroups\relax + \or % 4=two authors per row (!) + \divide\author@bx@wd by 2\relax + \else % three authors per row + \divide\author@bx@wd by 3\relax + \fi + \fi + \advance\author@bx@wd by -\author@bx@sep\relax + \gdef\@currentauthors{}% + \gdef\@currentaffiliation{}% + \def\@author##1{\ifx\@currentauthors\@empty + \gdef\@currentauthors{\par##1}% + \else + \g@addto@macro\@currentauthors{\par##1}% + \fi + \gdef\and{}}% + \def\email##1##2{\ifx\@currentaffiliation\@empty + \gdef\@currentaffiliation{\nolinkurl{##2}}% + \else + \g@addto@macro\@currentaffiliation{\par\nolinkurl{##2}}% + \fi}% + \def\affiliation##1##2{\ifx\@currentaffiliation\@empty + \gdef\@currentaffiliation{% + \setkeys{@ACM@affiliation@}{obeypunctuation=false}% + \setkeys{@ACM@affiliation@}{##1}##2}% + \else + \g@addto@macro\@currentaffiliation{\par + \setkeys{@ACM@affiliation@}{obeypunctuation=false}% + \setkeys{@ACM@affiliation@}{##1}##2}% + \fi + \global\let\and\@typeset@author@bx +}% + \hsize=\textwidth + \global\setbox\mktitle@bx=\vbox{\noindent + \box\mktitle@bx\par\medskip\leavevmode + \lineskip=1pc\relax\centering\hspace*{-1em}% + \addresses\let\and\@typeset@author@bx\and\par\bigskip}} +\def\@mkauthors@iv{% + \author@bx@wd=\columnwidth\relax + \advance\author@bx@wd by -\author@bx@sep\relax + \ifnum\@ACM@authorsperrow>0\relax + \divide\author@bx@wd by \@ACM@authorsperrow\relax + \else + \ifcase\num@authorgroups + \relax % 0? + \or % 1=one author per row + \else % 2=two authors per row + \divide\author@bx@wd by 2\relax + \fi + \fi + \advance\author@bx@wd by -\author@bx@sep\relax + \gdef\@currentauthors{}% + \gdef\@currentaffiliation{}% + \def\@author##1{\ifx\@currentauthors\@empty + \gdef\@currentauthors{\par##1}% + \else + \g@addto@macro\@currentauthors{\par##1}% + \fi + \gdef\and{}}% + \def\email##1##2{\ifx\@currentaffiliation\@empty + \gdef\@currentaffiliation{\nolinkurl{##2}}% + \else + \g@addto@macro\@currentaffiliation{\par\nolinkurl{##2}}% + \fi}% + \def\affiliation##1##2{\ifx\@currentaffiliation\@empty + \gdef\@currentaffiliation{% + \setkeys{@ACM@affiliation@}{obeypunctuation=false}% + \setkeys{@ACM@affiliation@}{##1}##2}% + \else + \g@addto@macro\@currentaffiliation{\par + \setkeys{@ACM@affiliation@}{obeypunctuation=false}% + \setkeys{@ACM@affiliation@}{##1}##2}% + \fi + \global\let\and\@typeset@author@bx}% + \bgroup\hsize=\columnwidth + \par\raggedright\leftskip=\z@ + \lineskip=1pc\noindent + \addresses\let\and\@typeset@author@bx\and\par\bigskip\egroup} +\def\@mkauthorsaddresses{% + \ifnum\num@authors>1\relax + Authors' \else Author's \fi + \ifnum\num@authorgroups>1\relax + addresses: \else address: \fi + \bgroup + \def\streetaddress##1{\unskip\@addpunct, ##1}% + \def\postcode##1{\unskip\@addpunct, ##1}% + \def\position##1{\unskip\ignorespaces}% + \def\institution##1{\unskip\@addpunct, ##1}% + \def\city##1{\unskip\@addpunct, ##1}% + \def\state##1{\unskip\@addpunct, ##1}% + \renewcommand\department[2][0]{\unskip\@addpunct, ##2}% + \def\country##1{\unskip\@addpunct, ##1}% + \def\and{\unskip\@addpunct; }% + \def\@author##1{##1}% + \def\email##1##2{\unskip\@addpunct, \nolinkurl{##2}}% + \addresses + \egroup} +\def\@setaddresses{} +\def\@authornotemark{\g@addto@macro\@currentauthors{\footnotemark\relax}} +\def\@@authornotemark#1{\g@addto@macro\@currentauthors{\footnotemark[#1]}} +\def\@mkteasers{% + \ifx\@teaserfigures\@empty\else + \def\@teaser##1{\par\bigskip\bgroup + \captionsetup{type=figure}##1\egroup\par} + \global\setbox\mktitle@bx=\vbox{\noindent\box\mktitle@bx\par + \noindent\@teaserfigures\par\medskip}% + \fi} +\def\@mkabstract{\bgroup + \ifx\@abstract\@lempty\else + {\phantomsection\addcontentsline{toc}{section}{Abstract}% + \if@ACM@journal + \everypar{\setbox\z@\lastbox\everypar{}}\small + \else + \section*{Abstract}% + \fi + \ignorespaces\@abstract\par}% + \fi\egroup} +\def\@mkbibcitation{\bgroup + \def\@pages@word{\ifnum\getrefnumber{TotPages}=1\relax page\else pages\fi}% + \def\footnotemark{}% + \def\\{\unskip{} \ignorespaces}% + \def\footnote{\ClassError{\@classname}{Please do note use footnotes + inside a \string\title{} or \string\author{} command! Use + \string\titlenote{} or \string\authornote{} instead!}}% + \def\@article@string{\ifx\@acmArticle\@empty{\ }\else, + Article~\@acmArticle\ \fi}% + \par\medskip\small\noindent{\bfseries ACM Reference Format:}\par\nobreak + \noindent\authors. \@acmYear. \@title + \ifx\@subtitle\@empty. \else: \@subtitle. \fi + \if@ACM@journal + \textit{\@journalNameShort} + \@acmVolume, \@acmNumber \@article@string (\@acmPubDate), + \ref{TotPages}~\@pages@word. + \else + In \textit{\@acmBooktitle}% + \ifx\@acmEditors\@empty\textit{.}\else + \andify\@acmEditors\textit{, }\@acmEditors~\@editorsAbbrev.% + \fi\ + ACM, New York, NY, USA% + \@article@string\unskip, \ref{TotPages}~\@pages@word. + \fi + \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi +\par\egroup} +\def\@printendtopmatter{\par\bigskip} +\def\@setthanks{\long\def\thanks##1{\par##1\@addpunct.}\thankses} +\def\@setauthorsaddresses{\@authorsaddresses\unskip\@addpunct.} +\RequirePackage{fancyhdr} +\if@ACM@review + \newsavebox{\ACM@linecount@bx} + \newlength\ACM@linecount@bxht + \newcount\ACM@linecount + \ACM@linecount\@ne\relax + \def\ACM@mk@linecount{% + \savebox{\ACM@linecount@bx}[4em][t]{\parbox[t]{4em}{% + \setlength{\ACM@linecount@bxht}{0pt}% + \loop{\color{red}\scriptsize\the\ACM@linecount}\\ + \global\advance\ACM@linecount by \@ne + \addtolength{\ACM@linecount@bxht}{\baselineskip}% + \ifdim\ACM@linecount@bxht<\textheight\repeat + {\color{red}\scriptsize\the\ACM@linecount}\hfill + \global\advance\ACM@linecount by \@ne}}} +\fi +\def\ACM@linecountL{% + \if@ACM@review + \ACM@mk@linecount + \begin{picture}(0,0)% + \put(-26,-22){\usebox{\ACM@linecount@bx}}% + \end{picture}% + \fi} +\def\ACM@linecountR{% + \if@ACM@review + \ACM@mk@linecount + \begin{picture}(0,0)% + \put(20,-22){\usebox{\ACM@linecount@bx}}% + \end{picture}% + \fi} +\if@ACM@timestamp + % Subtracting 30 from \time gives us the effect of rounding down despite + % \numexpr rounding to nearest + \newcounter{ACM@time@hours} + \setcounter{ACM@time@hours}{\numexpr (\time - 30) / 60 \relax} + \newcounter{ACM@time@minutes} + \setcounter{ACM@time@minutes}{\numexpr \time - \theACM@time@hours * 60 \relax} + \newcommand\ACM@timestamp{% + \footnotesize% + \ifx\@acmSubmissionID\@empty\relax\else + Submission ID: \@acmSubmissionID.{ }% + \fi + \the\year-\two@digits{\the\month}-\two@digits{\the\day}{ }% + \two@digits{\theACM@time@hours}:\two@digits{\theACM@time@minutes}{. }% + Page \thepage\ of \@startPage--\pageref*{TotPages}.% + } +\fi +\def\@shortauthors{\if@ACM@anonymous Anon.\else\shortauthors\fi} +\def\@headfootfont{\sffamily} +\fancypagestyle{standardpagestyle}{% + \fancyhf{}% + \renewcommand{\headrulewidth}{\z@}% + \renewcommand{\footrulewidth}{\z@}% + \ifcase\ACM@format@nr + \relax % manuscript + \fancyhead[LE]{\ACM@linecountL\if@ACM@printfolios\thepage\fi}% + \fancyhead[RO]{\if@ACM@printfolios\thepage\fi}% + \fancyhead[RE]{\@shortauthors}% + \fancyhead[LO]{\ACM@linecountL\shorttitle}% + \fancyfoot[RO,LE]{\footnotesize Manuscript submitted to ACM}% + \or % acmsmall + \fancyhead[LE]{\ACM@linecountL\@headfootfont\@acmArticle\if@ACM@printfolios:\thepage\fi}% + \fancyhead[RO]{\@headfootfont\@acmArticle\if@ACM@printfolios:\thepage\fi}% + \fancyhead[RE]{\@headfootfont\@shortauthors}% + \fancyhead[LO]{\ACM@linecountL\@headfootfont\shorttitle}% + \fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No. + \@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}% + \or % acmlarge + \fancyhead[LE]{\ACM@linecountL\@headfootfont + \@acmArticle\if@ACM@printfolios:\thepage\fi\quad\textbullet\quad\@shortauthors}% + \fancyhead[LO]{\ACM@linecountL}% + \fancyhead[RO]{\@headfootfont + \shorttitle\quad\textbullet\quad\@acmArticle\if@ACM@printfolios:\thepage\fi}% + \fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No. + \@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}% + \or % acmtog + \fancyhead[LE]{\ACM@linecountL\@headfootfont + \@acmArticle\if@ACM@printfolios:\thepage\fi\quad\textbullet\quad\@shortauthors}% + \fancyhead[LO]{\ACM@linecountL}% + \fancyhead[RE]{\ACM@linecountR}% + \fancyhead[RO]{\@headfootfont + \shorttitle\quad\textbullet\quad\@acmArticle\if@ACM@printfolios:\thepage\fi\ACM@linecountR}% + \fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No. + \@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}% + \else % Proceedings + \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}% + \fancyhead[LO]{\ACM@linecountL\@headfootfont\shorttitle}% + \fancyhead[RE]{\@headfootfont\@shortauthors\ACM@linecountR}% + \fancyhead[LE]{\ACM@linecountL\@headfootfont\acmConference@shortname, + \acmConference@date, \acmConference@venue}% + \fancyhead[RO]{\@headfootfont\acmConference@shortname, + \acmConference@date, \acmConference@venue\ACM@linecountR}% + \fi + \if@ACM@sigchiamode + \fancyheadoffset[L]{\dimexpr(\marginparsep+\marginparwidth)}% + \fi + \if@ACM@timestamp + \fancyfoot[LO,RE]{\ACM@timestamp} + \fi +} +\pagestyle{standardpagestyle} +\newdimen\@folio@wd +\@folio@wd=\z@ +\newdimen\@folio@ht +\@folio@ht=\z@ +\newdimen\@folio@voffset +\@folio@voffset=\z@ +\def\@folio@max{1} +\ifcase\ACM@format@nr +\relax % manuscript +\or % acmsmall + \@folio@wd=45.75pt\relax + \@folio@ht=1.25in\relax + \@folio@voffset=.2in\relax + \def\@folio@max{8} +\or % acmlarge + \@folio@wd=43.25pt\relax + \@folio@ht=79pt\relax + \@folio@voffset=.55in\relax + \def\@folio@max{10} +\fi +\def\@folioblob{\@tempcnta=0\@acmArticleSeq\relax + \ifnum\@tempcnta=0\relax\else + \loop + \ifnum\@tempcnta>\@folio@max\relax + \advance\@tempcnta by - \@folio@max + \repeat + \advance\@tempcnta by -1\relax + \@tempdima=\@folio@ht\relax + \multiply\@tempdima by \the\@tempcnta\relax + \advance\@tempdima by -\@folio@voffset\relax + \begin{picture}(0,0) + \makebox[\z@]{\raisebox{-\@tempdima}{% + \rlap{% + \raisebox{-0.45\@folio@ht}[\z@][\z@]{% + \rule{\@folio@wd}{\@folio@ht}}}% + \parbox{\@folio@wd}{% + \centering + \textcolor{white}{\LARGE\sffamily\bfseries\@acmArticle}}}} + \end{picture}\fi} + +\fancypagestyle{firstpagestyle}{% + \fancyhf{}% + \renewcommand{\headrulewidth}{\z@}% + \renewcommand{\footrulewidth}{\z@}% + \ifcase\ACM@format@nr + \relax % manuscript + \fancyhead[L]{\ACM@linecountL}% + \fancyfoot[RO,LE]{\if@ACM@printfolios\small\thepage\fi}% + \fancyfoot[RE,LO]{\footnotesize Manuscript submitted to ACM}% + \or % acmsmall + \fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No. + \@acmNumber, Article \@acmArticle. Publication date: + \@acmPubDate.}% + \fancyhead[LE]{\ACM@linecountL\@folioblob}% + \fancyhead[LO]{\ACM@linecountL}% + \fancyhead[RO]{\@folioblob}% + \fancyheadoffset[RO,LE]{0.6\@folio@wd}% + \or % acmlarge + \fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No. + \@acmNumber, Article \@acmArticle. Publication date: + \@acmPubDate.}% + \fancyhead[RO]{\@folioblob}% + \fancyhead[LE]{\ACM@linecountL\@folioblob}% + \fancyhead[LO]{\ACM@linecountL}% + \fancyheadoffset[RO,LE]{1.4\@folio@wd}% + \or % acmtog + \fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No. + \@acmNumber, Article \@acmArticle. Publication date: + \@acmPubDate.}% + \fancyhead[L]{\ACM@linecountL}% + \fancyhead[R]{\ACM@linecountR}% + \else % Conference proceedings + \fancyhead[L]{\ACM@linecountL}% + \fancyhead[R]{\ACM@linecountR}% + \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}% + \fi + \if@ACM@timestamp + \ifnum\ACM@format@nr=0\relax % Manuscript + \fancyfoot[LO,RE]{\ACM@timestamp\quad + \footnotesize Manuscript submitted to ACM} + \else + \fancyfoot[LO,RE]{\ACM@timestamp} + \fi + \fi +} +\let\ACM@ps@plain\ps@plain +\let\ACM@ps@myheadings\ps@myheadings +\let\ACM@ps@headings\ps@headings +\def\ACM@restore@pagestyle{% + \let\ps@plain\ACM@ps@plain + \let\ps@myheadings\ACM@ps@myheadings + \let\ps@headings\ACM@ps@headings} +\AtBeginDocument{\ACM@restore@pagestyle} +\renewcommand\section{\@startsection{section}{1}{\z@}% + {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}% + {.25\baselineskip}% + {\@secfont}} +\renewcommand\subsection{\@startsection{subsection}{2}{\z@}% + {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}% + {.25\baselineskip}% + {\@subsecfont}} +\renewcommand\subsubsection{\@startsection{subsubsection}{3}{10pt}% + {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}% + {-3.5\p@}% + {\@subsubsecfont\@adddotafter}} +\renewcommand\paragraph{\@startsection{paragraph}{4}{\parindent}% + {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}% + {-3.5\p@}% + {\@parfont\@adddotafter}} +\renewcommand\part{\@startsection{part}{9}{\z@}% + {-10\p@ \@plus -4\p@ \@minus -2\p@}% + {4\p@}% + {\@parfont}} +\def\section@raggedright{\@rightskip\@flushglue + \rightskip\@rightskip + \leftskip\z@skip + \parindent\z@} +\def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase} +\def\@subsecfont{\sffamily\bfseries\section@raggedright} +\def\@subsubsecfont{\sffamily\itshape} +\def\@parfont{\itshape} +\setcounter{secnumdepth}{3} +\ifcase\ACM@format@nr +\relax % manuscript +\or % acmsmall +\or % acmlarge + \def\@secfont{\sffamily\large\section@raggedright\MakeTextUppercase} + \def\@subsecfont{\sffamily\large\section@raggedright} +\or % acmtog + \def\@secfont{\sffamily\large\section@raggedright\MakeTextUppercase} + \def\@subsecfont{\sffamily\large\section@raggedright} +\or % sigconf + \def\@secfont{\bfseries\Large\section@raggedright\MakeTextUppercase} + \def\@subsecfont{\bfseries\Large\section@raggedright} +\or % siggraph + \def\@secfont{\sffamily\bfseries\Large\section@raggedright\MakeTextUppercase} + \def\@subsecfont{\sffamily\bfseries\Large\section@raggedright} +\or % sigplan + \def\@secfont{\bfseries\Large\section@raggedright} + \def\@subsecfont{\bfseries\section@raggedright} + \renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}% + {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}% + {.25\baselineskip}% + {\@subsubsecfont}} + \def\@subsubsecfont{\bfseries\section@raggedright} + \renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}% + {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}% + {-3.5\p@}% + {\@parfont\@addspaceafter}} + \def\@parfont{\bfseries\itshape} + \renewcommand\subparagraph{\@startsection{subparagraph}{5}{\z@}% + {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}% + {-3.5\p@}% + {\@subparfont\@addspaceafter}} + \def\@subparfont{\itshape} +\or % sigchi + \setcounter{secnumdepth}{1} + \def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase} + \def\@subsecfont{\sffamily\bfseries\section@raggedright} +\or % sigchi-a + \setcounter{secnumdepth}{0} + \def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase} + \def\@subsecfont{\sffamily\bfseries\section@raggedright} +\fi +\def\@adddotafter#1{#1\@addpunct{.}} +\def\@addspaceafter#1{#1\@addpunct{\enspace}} +\providecommand*\@dotsep{4.5} +\def\@acmplainbodyfont{\itshape} +\def\@acmplainindent{\parindent} +\def\@acmplainheadfont{\scshape} +\def\@acmplainnotefont{\@empty} +\ifcase\ACM@format@nr +\relax % manuscript +\or % acmsmall +\or % acmlarge +\or % acmtog +\or % sigconf +\or % siggraph +\or % sigplan + \def\@acmplainbodyfont{\itshape} + \def\@acmplainindent{\z@} + \def\@acmplainheadfont{\bfseries} + \def\@acmplainnotefont{\normalfont} +\or % sigchi +\or % sigchi-a +\fi +\newtheoremstyle{acmplain}% + {.5\baselineskip\@plus.2\baselineskip + \@minus.2\baselineskip}% space above + {.5\baselineskip\@plus.2\baselineskip + \@minus.2\baselineskip}% space below + {\@acmplainbodyfont}% body font + {\@acmplainindent}% indent amount + {\@acmplainheadfont}% head font + {.}% punctuation after head + {.5em}% spacing after head + {\thmname{#1}\thmnumber{ #2}\thmnote{ {\@acmplainnotefont(#3)}}}% head spec +\def\@acmdefinitionbodyfont{\normalfont} +\def\@acmdefinitionindent{\parindent} +\def\@acmdefinitionheadfont{\itshape} +\def\@acmdefinitionnotefont{\@empty} +\ifcase\ACM@format@nr +\relax % manuscript +\or % acmsmall +\or % acmlarge +\or % acmtog +\or % sigconf +\or % siggraph +\or % sigplan + \def\@acmdefinitionbodyfont{\normalfont} + \def\@acmdefinitionindent{\z@} + \def\@acmdefinitionheadfont{\bfseries} + \def\@acmdefinitionnotefont{\normalfont} +\or % sigchi +\or % sigchi-a +\fi +\newtheoremstyle{acmdefinition}% + {.5\baselineskip\@plus.2\baselineskip + \@minus.2\baselineskip}% space above + {.5\baselineskip\@plus.2\baselineskip + \@minus.2\baselineskip}% space below + {\@acmdefinitionbodyfont}% body font + {\@acmdefinitionindent}% indent amount + {\@acmdefinitionheadfont}% head font + {.}% punctuation after head + {.5em}% spacing after head + {\thmname{#1}\thmnumber{ #2}\thmnote{ {\@acmdefinitionnotefont(#3)}}}% head spec +\theoremstyle{acmplain} +\AtEndPreamble{% + \if@ACM@acmthm + \theoremstyle{acmplain} + \@ifundefined{theorem}{% + \newtheorem{theorem}{Theorem}[section] + }{} + \@ifundefined{conjecture}{% + \newtheorem{conjecture}[theorem]{Conjecture} + }{} + \@ifundefined{proposition}{% + \newtheorem{proposition}[theorem]{Proposition} + }{} + \@ifundefined{lemma}{% + \newtheorem{lemma}[theorem]{Lemma} + }{} + \@ifundefined{corollary}{% + \newtheorem{corollary}[theorem]{Corollary} + }{} + \theoremstyle{acmdefinition} + \@ifundefined{example}{% + \newtheorem{example}[theorem]{Example} + }{} + \@ifundefined{definition}{% + \newtheorem{definition}[theorem]{Definition} + }{} + \fi + \theoremstyle{acmplain} +} +\def\@proofnamefont{\scshape} +\def\@proofindent{\indent} +\ifcase\ACM@format@nr +\relax % manuscript +\or % acmsmall +\or % acmlarge +\or % acmtog +\or % sigconf +\or % siggraph +\or % sigplan + \def\@proofnamefont{\itshape} + \def\@proofindent{\noindent} +\or % sigchi +\or % sigchi-a +\fi +\renewenvironment{proof}[1][\proofname]{\par + \pushQED{\qed}% + \normalfont \topsep6\p@\@plus6\p@\relax + \trivlist + \item[\@proofindent\hskip\labelsep + {\@proofnamefont #1\@addpunct{.}}]\ignorespaces +}{% + \popQED\endtrivlist\@endpefalse +} +\specialcomment{acks}{% + \begingroup + \section*{Acknowledgments} + \phantomsection\addcontentsline{toc}{section}{Acknowledgments} +}{% + \endgroup +} +\def\grantsponsor#1#2#3{#2} +\newcommand\grantnum[3][]{#3% + \def\@tempa{#1}\ifx\@tempa\@empty\else\space(\url{#1})\fi} +\AtEndPreamble{% +\if@ACM@screen + \includecomment{screenonly} + \excludecomment{printonly} +\else + \excludecomment{screenonly} + \includecomment{printonly} +\fi +\if@ACM@anonymous + \excludecomment{anonsuppress} + \excludecomment{acks} +\else + \includecomment{anonsuppress} +\fi} +\newcommand\showeprint[2][arxiv]{% + \def\@tempa{#1}% + \ifx\@tempa\@empty\def\@tempa{arxiv}\fi + \def\@tempb{arxiv}% + \ifx\@tempa\@tempb + arXiv:\href{http://arxiv.org/abs/#2}{#2}\else arXiv:#2% + \fi} +\normalsize\normalfont\frenchspacing +\endinput +%% +%% End of file `acmart.cls'. diff --git a/paper/biblio.bib b/paper/biblio.bib new file mode 100755 index 0000000..2f14a55 --- /dev/null +++ b/paper/biblio.bib @@ -0,0 +1,8 @@ +@inproceedings{lakkaraju2017selective, + title={The selective labels problem: Evaluating algorithmic predictions in the presence of unobservables}, + author={Lakkaraju, Himabindu and Kleinberg, Jon and Leskovec, Jure and Ludwig, Jens and Mullainathan, Sendhil}, + booktitle={Proceedings of the 23rd ACM SIGKDD International Conference on Knowledge Discovery and Data Mining}, + pages={275--284}, + year={2017}, + organization={ACM} +} diff --git a/paper/chato-notes.sty b/paper/chato-notes.sty new file mode 100755 index 0000000..4673224 --- /dev/null +++ b/paper/chato-notes.sty @@ -0,0 +1,38 @@ +% Simple package for inserting notes +% ChaTo - http://www.chato.cl/ +% Mon Jun 11 10:31:53 CEST 2007 + +\ProvidesPackage{chato-notes}[2007/06/11 ChaTo notes] +\RequirePackage{color,marvosym} + +% Colors +\definecolor{MyRed}{rgb}{0.6,0.0,0.0} +\definecolor{MyBlack}{rgb}{0.1,0.1,0.1} +\newcommand{\inred}[1]{{\color{MyRed}\sf\textbf{\textsc{#1}}}} + +% Frame +\newcommand{\frameit}[2]{ + \begin{center} + {\color{MyRed} + \framebox[.9\columnwidth][l]{ + \begin{minipage}{.85\columnwidth} + \inred{#1}: {\sf\color{MyBlack}#2} + \end{minipage} + }\\ + } + \end{center} +} + +\DeclareOption{show}{ + \newcommand{\note}[2][]{\frameit{{\Large } Note}{#2 \mbox{--\em #1}}} + \newcommand{\todo}[2][]{\frameit{{\Large } To-do}{#2 \mbox{--\em #1}}} + \newcommand{\inote}[1]{\inred{$\lceil${{\large } }} {\sf #1} \inred{$\rfloor$}} +} +\DeclareOption{hide}{ + \newcommand{\note}[2]{} + \newcommand{\todo}[2]{} + \newcommand{\inote}[2]{} +} + +\ProcessOptions + diff --git a/paper/img/causalmodel.png b/paper/img/causalmodel.png new file mode 100755 index 0000000000000000000000000000000000000000..0f271938d3e13bf5f73616b63c697b217fb99e7e GIT binary patch literal 58535 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 CpN;GQ literal 0 HcmV?d00001 diff --git a/paper/macros.tex b/paper/macros.tex new file mode 100755 index 0000000..335d7b8 --- /dev/null +++ b/paper/macros.tex @@ -0,0 +1,53 @@ +\usepackage[show]{chato-notes} +% \newtheorem{theorem}{Theorem} +% \newtheorem{definition}{Definition} +% \newtheorem{problem}{Problem} +% \newtheorem{lemma}{Lemma} + +\newcommand{\prob}[1]{\ensuremath{\mathbf{Pr}(#1)}} + +% \newcommand{\path}[2]{\ensuremath{\mathit{path}({#1}, {#2})}} +\newcommand{\subtree}[2]{\ensuremath{\mathit{ST}_{#1}({#2})}} +\newcommand{\descendants}[1]{\ensuremath{\mathit{Desc}({#1})}} +\newcommand{\ancestors}[1]{\ensuremath{\mathit{Anc}({#1})}} +% \newcommand{\root}{\ensuremath{\mathit{root}}} + +\DeclareMathOperator*{\argmin}{arg\,min} +\DeclareMathOperator*{\argmax}{arg\,max} + +%formating +\newcommand{\spara}[1]{\smallskip\noindent{\bf{#1}}} +\newcommand{\mpara}[1]{\medskip\noindent{\bf{#1}}} +\newcommand{\bpara}[1]{\bigskip\noindent{\bf{#1}}} + +\newcommand{\squishlist}{\begin{list}{$\bullet$} + { \setlength{\itemsep}{0pt} + \setlength{\parsep}{3pt} + \setlength{\topsep}{3pt} + \setlength{\partopsep}{0pt} + \setlength{\leftmargin}{1.5em} + \setlength{\labelwidth}{1em} + \setlength{\labelsep}{0.5em} } } +\newcommand{\squishend}{ +\end{list} } + +\newcommand{\transpose}[1]{\ensuremath{{{#1}^{{\mkern-2.5mu\mathsf{T}}}}}} + +\newcommand{\dataset}{\ensuremath{\mathbf{D}}\xspace} +\newcommand{\datasize}{\ensuremath{n}\xspace} +\newcommand{\features}{\ensuremath{X}\xspace} +\newcommand{\featuresValue}{\ensuremath{x}\xspace} +\newcommand{\leniency}{\ensuremath{R}\xspace} +\newcommand{\leniencyValue}{\ensuremath{r}\xspace} +\newcommand{\score}[1]{\ensuremath{\mathbf{f}(#1)}\xspace} +\newcommand{\decision}{\ensuremath{T}\xspace} +\newcommand{\decisionValue}{\ensuremath{t}\xspace} +\newcommand{\outcome}{\ensuremath{Y}\xspace} +\newcommand{\outcomeValue}{\ensuremath{y}\xspace} +\newcommand{\doop}[1]{\ensuremath{\mathbf{do}(#1)}} + +\newcommand{\generalPerformance}{\ensuremath{\mathbf{gp}}\xspace} +\newcommand{\empiricalPerformance}{\ensuremath{\mathbf{ep}}\xspace} +\newcommand{\indicator}[1]{\ensuremath{\delta(#1)}} + +\newcommand{\datadistr}[1]{\ensuremath{\mathbf{g}(#1)}\xspace} \ No newline at end of file diff --git a/paper/sl.tex b/paper/sl.tex new file mode 100755 index 0000000..505b967 --- /dev/null +++ b/paper/sl.tex @@ -0,0 +1,191 @@ +\documentclass[sigconf,anonymous]{acmart} +% \documentclass[sigconf]{acmart} + +% Packages +\usepackage{type1cm} % type1 computer modern font +\usepackage{graphicx} % advanced figures +\usepackage{xspace} % fix space in macros +\usepackage{balance} % to better equalize the last page +\usepackage{multirow} % multi rows for tables +\usepackage[font={bf}, tableposition=top]{caption} % captions on top for tables +\usepackage{bold-extra} % bold + {small capital, italic} +\usepackage{siunitx} % \num for decimal grouping +\usepackage[vlined,linesnumbered,ruled,noend]{algorithm2e} % algorithms +\usepackage{booktabs} % nicer tables +%\usepackage[hyphens]{url} % handle long urls +%\usepackage[bookmarks, pdftex, colorlinks=false]{hyperref} % clickable references +%\usepackage[square,numbers]{natbib} % better references +\usepackage{microtype} % compress text +\usepackage{units} % nicer slanted fractions +\usepackage{mathtools} % amsmath++ +%\usepackage{amssymb} % math symbols +%\usepackage{amsmath} +\usepackage{relsize} +\usepackage{caption} +\captionsetup{belowskip=6pt,aboveskip=2pt} % to save space. +%\usepackage{subcaption} +% \usepackage{multicolumn} +\usepackage[]{inputenc} +\usepackage{xfrac} +\RequirePackage{graphicx,color} +\usepackage[font={small}]{subfig} % subfig, 4 figures in a row +\usepackage{pifont} +\usepackage{footnote} % show footnotes in tables +\makesavenoteenv{table} + + + +\newcommand{\ourtitle}{A Causal Approach for Selective Labels} + +\input{macros} + + +\title{\ourtitle} + +\author{Michael Mathioudakis} +\affiliation{% + \institution{University of Helsinki} + \city{Helsinki} + \country{Finland} +} +\email{michael.mathioudakis@helsinki.fi} + + +\begin{abstract} +We show how a causality-based approach can be used to estimate the performance of prediction algorithms in `selective labels' settings -- with particular application to `bail-or-jail' judicial decisions. +\end{abstract} + + +\begin{document} + + +\fancyhead{} +\maketitle + +\renewcommand{\shortauthors}{Authors} + + +\section{Introduction} + +`Selective labels' settings arise in situations where data are the product of a decision mechanism that prevents us from observing certain variables for part of the data. +A typical example is that of bail-or-jail decisions in judicial settings: a judge decides whether to grant bail to a defendant based on whether the defendant is considered likely to violate bail conditions while awaiting trial -- and therefore a violation might occur only in case bail is granted. +Such settings give rise to questions about the effect of alternative decision mechanisms -- e.g., `how many defendants would violate bail conditions if more bail decisions were granted?'. +In other words, one faces the challenge to estimate the performance of an alternative, potentially automated, decision policy that might make different decisions than the one found in the judicial data. + +The challenge was addressed by Lakkaraju et.al. in \cite{lakkaraju2017selective}, in a setting that involved multiple judges of varying leniency, and under the assumption that defendants are assigned to judges randomly. Lakkaraju et.al. estimate the performance of an automated decision-making algorithm (`algorithm', for short) via a technique they call `contraction' - it proceeds as follows: +\begin{itemize} + \item It considers a set of judges with same number $N$ of judged defendants each. + \item Judges are ordered from most lenient (most bail decisions) to least lenient. + Let $n_i$ be the number of bail decisions for judge $\#i$. We have $n_{i+1} \leq n_i$. + \item The algorithm considers the $n_i$ defendants that were granted bail by the $i$-th judge. + \item It keeps the $n_{i+1} \leq n_i$ defendants that it finds most likely to violate the bail. + \item It makes its own bail-or-jail decision for each of those $n_{i+1}$ defendants. + \item Its performance is measured as the number of defendants that it decides to bail but who, according to the data, eventually violated the bail. + \item Its performance is compared to the performance of judge $\#(i+1)$, based on the cases they bailed. +\end{itemize} +The above procedure gives us a comparison between the performance of the algorithm to that of judges at the $n_{i+1}/N$ leniency level (leniency measured as the rate of bail decisions). +A major drawback of the {\it contraction} technique is that it requires data to include judges at a given leniency level. + +In this document, we describe a different approach based on causal analysis, that allows us to estimate the performance of a decision-making system at any leniency level. + +\section{Setting} + +Consider a judge who decides whether to grant bail to a defendant based on whether the defendant is considered likely to violate bail conditions while awaiting trial. +We use variable \decision to store the outcome of the bail-or-jail decision, with $\decision = 1$ denoting a bail decision and $\decision = 0$ a jail decision. +Whether the defendant violates the bail conditions depends on the bail-or-jail decision \decision and the features \features of the defendant. + +The decision is based on the following variables. First, the features \features of the defendant, which we assume to be observed. +Secondly, the leniency of the judge, expressed as a variable \leniency. +Specifically, we assume that every judge evaluates a given candidate according to the probability +\[ +\prob{\outcome = 1 | \features = \featuresValue, \doop{\decision = 1}} +\] +that the candidate will violate bail conditions (\outcome = 1) if they were granted bail. +We write \outcome = 0 to refer to the case when the defendant does not violate bail, whether bail is granted or not. +The \doop{condition} expression signifies that, in evaluating the probability, we consider the event where the condition (here, it is the condition $\decision = 1$) is imposed to the data-generation process (and therefore alters the generative model). +In addition, we assume that every judge would assign the same value to the above probability, given by a function \score{\featuresValue}. +\[ +\score{\featuresValue} = \prob{\outcome = 1 | \features = \featuresValue, \doop{\decision = 1}} +\] +The assumption that, essentially, all judges have the same model for the probability that a defendant would violate bail is not far-fetched for the purposes of our analysis, particularly taking into account that \score{\featuresValue} can be learned from the observed data +\[ +\prob{\outcome = 1 | \features = \featuresValue, \doop{\decision = 1}} = \prob{\outcome = 1 | \features = \featuresValue, \decision = 1} +\] +and that data are publicly accessible, allowing us to assume that all judges have access to the same information. +Where judges {\it do differ} is at the level of their leniency \leniency. +Following the above assumptions, a judge with leniency \leniency = \leniencyValue grants bail to the defendants for which $\score{\featuresValue} < r$. + +The bail-or-jail scenario is just one example of settings that involve a decision $\decision \in\{0,1\}$ that is based on individual features \features and leniency (acceptance rate) \leniency -- and where a behavior of interest \outcome is observed only for the cases where \decision = 1. +The diagram of the causal model is shown in Figure~\ref{fig:causalmodel}. +Our results are applicable to other scenarios with same causal model. + +\begin{figure} +\begin{center} +\includegraphics[width=\columnwidth]{img/causalmodel.png} +\end{center} +\caption{Causal model.} +\label{fig:causalmodel} +\end{figure} + +\subsection{Analysis Task} + +We will use existing machine-learning techniques from the literature to learn function \score{\featuresValue}, with the goal to build a decision system that outperforms judges. +The challenge we face is to estimate accurately the performance of the decision system -- given that we are in a `selective labels' setting. +Performance is measured {\it for a given leniency level} as the rate at which bail is granted {\it and} the defendant violates it. +In other words, performance is measured as the probability that a decision lead to undesired outcome. +\section{Analysis} + +We wish to calculate the probability of undesired outcome (\outcome = 1) at a fixed leniency level. +\begin{align*} +& \prob{\outcome = 1 | \doop{\leniency = \leniencyValue}} = \nonumber \\ +& = \sum_\decisionValue \prob{\outcome = 1, \decision = \decisionValue | \doop{\leniency = \leniencyValue}} \nonumber \\ +& = \prob{\outcome = 1, \decision = 0 | \doop{\leniency = \leniencyValue}} + \prob{\outcome = 1, \decision = 1 | \doop{\leniency = \leniencyValue}} \nonumber \\ +& = 0 + \prob{\outcome = 1, \decision = 1 | \doop{\leniency = \leniencyValue}} \nonumber \\ +& = \prob{\outcome = 1, \decision = 1 | \doop{\leniency = \leniencyValue}} \nonumber \\ +& = \sum_\featuresValue \prob{\outcome = 1, \decision = 1, \features = \featuresValue | \doop{\leniency = \leniencyValue}} \nonumber \\ +& = \sum_\featuresValue \prob{\outcome = 1, \decision = 1 | \doop{\leniency = \leniencyValue}, \features = \featuresValue} \prob{\features = \featuresValue | \doop{\leniency = \leniencyValue}} \nonumber \\ +& = \sum_\featuresValue \prob{\outcome = 1, \decision = 1 | \doop{\leniency = \leniencyValue}, \features = \featuresValue} \prob{\features = \featuresValue} \nonumber \\ +& = \sum_\featuresValue \prob{\outcome = 1 | \decision = 1, \doop{\leniency = \leniencyValue}, \features = \featuresValue} \prob{\decision = 1 | \doop{\leniency = \leniencyValue}, \features = \featuresValue} \prob{\features = \featuresValue} \nonumber \\ +& = \sum_\featuresValue \prob{\outcome = 1 | \decision = 1, \features = \featuresValue} \prob{\decision = 1 | \leniency = \leniencyValue, \features = \featuresValue} \prob{\features = \featuresValue} +\end{align*} + +Expanding the above derivation for model \score{\featuresValue} learned from the data +\[ +\score{\featuresValue} = \prob{\outcome = 1 | \features = \featuresValue, \decision = 1}, +\] +the {\it generalized performance} \generalPerformance of that model is given by the following formula. +\begin{equation} +\generalPerformance = \sum_\featuresValue \score{\featuresValue} \indicator{\score{\featuresValue} < r} \prob{\features = \featuresValue} +\label{eqn:gp} +\end{equation} +Equation~\ref{eqn:gp} can be calculated for a given model \datadistr{\featuresValue} = \prob{\features = \featuresValue} of individual features. +Alternatively, we can have an empirical measure \empiricalPerformance of performance over the $\datasize$ data points in dataset \dataset, given by the following equation. +\begin{equation} +\empiricalPerformance = \frac{1}{\datasize} \sum_{(\featuresValue, \outcomeValue)\in\dataset} \indicator{\outcomeValue = 1} \indicator{\score{\featuresValue} < r} +\label{eqn:gp} +\end{equation} + +\subsection{Comments} +Roughly speaking, the above formulas should work well if `bail' cases (\decision = 1) cover well the area spanned by the observed features of defendants -- i.e., we do not have large areas of \features with no or too few bail cases. + +If there are such areas, then we cannot do much about the lack of data. +One reasonable modeling choice, however, is to impose the following priors on \score{\featuresValue}: +\begin{enumerate} + \item $\score{\featuresValue} \approx 1$ for areas near values of \features for which we have observed data but few bail decisions (i.e., we assume a-priori that a defendant is more likely to violate bail -- a belief that will change if the data tell us otherwise); + \item $\score{\featuresValue} \approx 0$ for areas near unobserved values of \features (i.e., we assume that people who are unlikely to ever be taken to court would probably `play nice' and not violate bail). +\end{enumerate} + +Lack of data for large areas of \features is a potential problem for the {\it contraction} technique of Lakkaraju et.al., as well. +Unlike contraction, though, our approach does not require to have data at all leniency levels. +Moreover, it is easy to see based on the derivations of Eq.\ref{eqn:gp} that our approach would work identically in the case where defendants are not assigned to judges at random (i.e., if there was a causal relation $\features\rightarrow\leniency$). + +% \textbf{Acknowledgments.} + + +%\clearpage +% \balance +\bibliographystyle{ACM-Reference-Format} +\bibliography{biblio} +%\balancecolumns % GM June 2007 + +\end{document} -- GitLab