%% %% This is file `hyperxmp.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% hyperxmp.dtx (with options: `package') %% %% This is a generated file. %% %% Copyright (C) 2011-2023 by Scott Pakin %% %% This file may be distributed and/or modified under the conditions of %% the LaTeX Project Public License, either version 1.3c of this license %% or (at your option) any later version. The latest version of this %% license is in: %% %% http://www.latex-project.org/lppl.txt %% %% and version 1.3c or later is part of all distributions of LaTeX %% version 2008/05/04 or later. %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] \ProvidesPackage{hyperxmp} [2024/03/17 v5.13 Store hyperref metadata in XMP format] \IfDocumentMetadataTF{% \PackageWarning {hyperxmp} {Disabling hyperxmp because it is incompatible with PDF management} }{} \IfDocumentMetadataTF{\endinput}{} \edef\hyxmp@dq@code{\the\catcode`\"} \catcode`\"=12 \@ifundefined{AddToHook}{% \@ifundefined{AtEndDocument}{% \RequirePackage{atenddvi} \let\hyxmp@at@end=\AtEndDvi }{% \let\hyxmp@at@end=\AtEndDocument } }{% \def\hyxmp@at@end{\AddToHook{shipout/lastpage}} } \def\hyxmp@set@jobname#1\relax{% \@ifnextchar"{\hyxmp@set@jobname@dbl}{\hyxmp@set@jobname@plain}#1\relax } \def\hyxmp@set@jobname@dbl"#1"\relax{\xdef\hyxmp@jobname{#1}} \def\hyxmp@set@jobname@plain#1\relax{\xdef\hyxmp@jobname{#1}} \expandafter\hyxmp@set@jobname\jobname\relax \newtoks{\hyxmp@aep@toks} \RequirePackage{kvoptions} \RequirePackage{pdfescape} \RequirePackage{stringenc} \RequirePackage{intcalc} \RequirePackage{iftex} \RequirePackage{ifmtarg} \RequirePackage{etoolbox} \RequirePackage{ifthen} \ifLuaTeX \RequirePackage{luacode} \fi \def\@ifmtargexp#1{\expandafter\@ifmtarg\expandafter{#1}} \def\@ifnotmtargexp#1{\expandafter\@ifnotmtarg\expandafter{#1}} \newcommand*{\@if@def@and@nonempty}[3]{% \@ifundefined{#1}{#3}{% \expandafter\@ifmtargexp\expandafter{\csname#1\endcsname}{#3}{#2}% }% } \newcommand{\hyxmp@pdfstringdef}[2]{% \let\hyxmp@textunderscore=\textunderscore \let\textunderscore=\hyxmp@uscore \pdfstringdef{#1}{#2}% \let\textunderscore=\hyxmp@textunderscore } \def\@pdfdatetime{} \define@key{Hyp}{pdfdate}{% \begingroup \Hy@unicodefalse \edef\next{% \noexpand\hyxmp@pdfstringdef\noexpand\@pdfdatetime{% \noexpand\hyxmp@as@xmp@date{#1}}% }% \next \endgroup } \def\@pdfmetadatetime{} \define@key{Hyp}{pdfmetadate}{% \begingroup \Hy@unicodefalse \edef\next{% \noexpand\hyxmp@pdfstringdef\noexpand\@pdfmetadatetime{% \noexpand\hyxmp@as@xmp@date{#1}}% }% \next \endgroup } \def\@pdfcopyright{} \define@key{Hyp}{pdfcopyright}{\hyxmp@pdfstringdef\@pdfcopyright{#1}} \def\@pdftype{Text} \define@key{Hyp}{pdftype}{\hyxmp@pdfstringdef\@pdftype{#1}} \def\@pdflicenseurl{} \define@key{Hyp}{pdflicenseurl}{\hyxmp@pdfstringdef\@pdflicenseurl{#1}} \def\@pdfauthortitle{} \define@key{Hyp}{pdfauthortitle}{\hyxmp@pdfstringdef\@pdfauthortitle{#1}} \def\@pdfcaptionwriter{} \define@key{Hyp}{pdfcaptionwriter}{\hyxmp@pdfstringdef\@pdfcaptionwriter{#1}} \def\@pdfmetalang{} \define@key{Hyp}{pdfmetalang}{\hyxmp@pdfstringdef\@pdfmetalang{#1}} \def\hyxmp@no@bad@parts#1\relax{% \@ifnotmtarg{#1}{% \PackageWarning{hyperxmp}{pdfapart and pdfuapart must be numeric}% }% } \newcount\@hyxmp@count \def\@pdfapart{} \define@key{Hyp}{pdfapart}{% \afterassignment\hyxmp@no@bad@parts\@hyxmp@count=0#1\relax \hyxmp@pdfstringdef\@pdfapart{\the\@hyxmp@count}% } \def\@pdfaconformance{} \define@key{Hyp}{pdfaconformance}{% \uppercase{\hyxmp@pdfstringdef\@pdfaconformance{#1}}% } \def\@pdfuapart{} \define@key{Hyp}{pdfuapart}{% \afterassignment\hyxmp@no@bad@parts\@hyxmp@count=0#1\relax \hyxmp@pdfstringdef\@pdfuapart{\the\@hyxmp@count}% } \newcommand*{\hyxmp@set@pdfx@major}[1]{\hyxmp@set@pdfx@major@i#1!} \def\hyxmp@set@pdfx@major@i PDF/X-{% \afterassignment\hyxmp@set@pdfx@major@ii \@hyxmp@count=% } \def\hyxmp@set@pdfx@major@ii#1!{% \edef\hyxmp@pdfx@major{\the\@hyxmp@count}% } \newcommand*\hyxmp@check@std[2]{% \ifthenelse{\equal{#1}{#2}}% {\global\let\next=\relax}% {}% }% \def\@pdfxstandard{} \def\hyxmp@pdfx@major{} \define@key{Hyp}{pdfxstandard}{% \hyxmp@pdfstringdef\@pdfxstandard{#1}% \gdef\next{% \PackageWarning{hyperxmp}{Unrecognized PDF/X standard `#1'}% }% \hyxmp@check@std{#1}{PDF/X-1a:2001}% \hyxmp@check@std{#1}{PDF/X-1a:2003}% \hyxmp@check@std{#1}{PDF/X-3:2002}% \hyxmp@check@std{#1}{PDF/X-3:2003}% \hyxmp@check@std{#1}{PDF/X-4}% \hyxmp@check@std{#1}{PDF/X-4p}% \hyxmp@check@std{#1}{PDF/X-5g}% \hyxmp@check@std{#1}{PDF/X-5n}% \hyxmp@check@std{#1}{PDF/X-5pg}% \next \hyxmp@set@pdfx@major{#1}% } \edef\@pdfsource{\hyxmp@jobname.tex} \define@key{Hyp}{pdfsource}{\hyxmp@pdfstringdef\@pdfsource{#1}} \def\hyxmp@DocumentID{} \define@key{Hyp}{pdfdocumentid}{\hyxmp@pdfstringdef\hyxmp@DocumentID{#1}} \def\hyxmp@InstanceID{} \define@key{Hyp}{pdfinstanceid}{\hyxmp@pdfstringdef\hyxmp@InstanceID{#1}} \def\@pdfversionid{1} \define@key{Hyp}{pdfversionid}{\hyxmp@pdfstringdef\@pdfversionid{#1}} \let\hyxmp@orig@ifdraft=\ifdraft \@ifpackageloaded{ifdraft}{% \let\next=\relax }{% \let\ifdraft=\relax \RequirePackage{ifdraft}% \def\next{% \expandafter\let\csname ver@ifdraft.sty\endcsname=\relax \let\ifdraft=\relax \let\ifoptiondraft=\relax \let\ifoptionfinal=\relax }% }% \ifdraft{% \def\@pdfrendition{draft}% }{% \def\@pdfrendition{default}% } \next \let\ifdraft=\hyxmp@orig@ifdraft \define@key{Hyp}{pdfrendition}{\hyxmp@pdfstringdef\@pdfrendition{#1}} \def\@pdfpublication{} \define@key{Hyp}{pdfpublication}{\hyxmp@pdfstringdef\@pdfpublication{#1}} \def\@pdfpubtype{} \define@key{Hyp}{pdfpubtype}{\hyxmp@pdfstringdef\@pdfpubtype{#1}} \def\@pdfbytes{} \define@key{Hyp}{pdfbytes}{\hyxmp@pdfstringdef\@pdfbytes{#1}} \def\@pdfnumpages{} \define@key{Hyp}{pdfnumpages}{\hyxmp@pdfstringdef\@pdfnumpages{#1}} \def\@pdfissn{} \define@key{Hyp}{pdfissn}{\hyxmp@pdfstringdef\@pdfissn{#1}} \def\@pdfeissn{} \define@key{Hyp}{pdfeissn}{\hyxmp@pdfstringdef\@pdfeissn{#1}} \def\@pdfisbn{} \define@key{Hyp}{pdfisbn}{\hyxmp@pdfstringdef\@pdfisbn{#1}} \def\@pdfbookedition{} \define@key{Hyp}{pdfbookedition}{\hyxmp@pdfstringdef\@pdfbookedition{#1}} \def\@pdfpublisher{} \define@key{Hyp}{pdfpublisher}{\hyxmp@pdfstringdef\@pdfpublisher{#1}} \def\@pdfvolumenum{} \define@key{Hyp}{pdfvolumenum}{\hyxmp@pdfstringdef\@pdfvolumenum{#1}} \def\@pdfissuenum{} \define@key{Hyp}{pdfissuenum}{\hyxmp@pdfstringdef\@pdfissuenum{#1}} \def\@pdfpagerange{} \define@key{Hyp}{pdfpagerange}{\hyxmp@pdfstringdef\@pdfpagerange{#1}} \def\@pdfdoi{} \define@key{Hyp}{pdfdoi}{\hyxmp@pdfstringdef\@pdfdoi{#1}} \def\@pdfurl{} \define@key{Hyp}{pdfurl}{\hyxmp@pdfstringdef\@pdfurl{#1}} \def\@pdfidentifier{} \define@key{Hyp}{pdfidentifier}{\hyxmp@pdfstringdef\@pdfidentifier{#1}} \def\@pdfsubtitle{} \define@key{Hyp}{pdfsubtitle}{\hyxmp@pdfstringdef\@pdfsubtitle{#1}} \def\@pdfpubstatus{} \define@key{Hyp}{pdfpubstatus}{\hyxmp@pdfstringdef\@pdfpubstatus{#1}} \def\@pdfcontactaddress{} \define@key{Hyp}{pdfcontactaddress}{% \let\xmpcomma=\hyxmp@comma \def\xmpquote##1{##1}% \hyxmp@pdfstringdef\@pdfcontactaddress{#1}% \def\xmpcomma{,}% \let\xmpquote=\relax } \def\@pdfcontactcity{} \define@key{Hyp}{pdfcontactcity}{\hyxmp@pdfstringdef\@pdfcontactcity{#1}} \def\@pdfcontactregion{} \define@key{Hyp}{pdfcontactregion}{\hyxmp@pdfstringdef\@pdfcontactregion{#1}} \def\@pdfcontactpostcode{} \define@key{Hyp}{pdfcontactpostcode}{\hyxmp@pdfstringdef\@pdfcontactpostcode{#1}} \def\@pdfcontactcountry{} \define@key{Hyp}{pdfcontactcountry}{\hyxmp@pdfstringdef\@pdfcontactcountry{#1}} \def\@pdfcontactphone{} \define@key{Hyp}{pdfcontactphone}{\hyxmp@pdfstringdef\@pdfcontactphone{#1}} \def\@pdfcontactemail{} \define@key{Hyp}{pdfcontactemail}{\hyxmp@pdfstringdef\@pdfcontactemail{#1}} \def\@pdfcontacturl{} \define@key{Hyp}{pdfcontacturl}{\hyxmp@pdfstringdef\@pdfcontacturl{#1}} \def\hyxmp@no@info@lists{% \def\hyxmp@suppress@pdf@info{% \global\let\PDF@FinishDoc=\@empty \PackageWarningNoLine{hyperxmp}{% Suppressing the _entire_ PDF Info dictionary.\MessageBreak Please notify the hyperxmp maintainer% }% }% \let\next=\relax \patchcmd {\PDF@FinishDoc}% {/Author(\@pdfauthor)}% {}% {}% {\let\next=\hyxmp@suppress@pdf@info}% \patchcmd {\PDF@FinishDoc}% {/Keywords(\@pdfkeywords)}% {}% {}% {\let\next=\hyxmp@suppress@pdf@info}% \next } \define@key{Hyp}{keeppdfinfo}[true]{% \gdef\hyxmp@no@info@lists{}% } \@ifpackageloaded{hyperref}{% }{% \PackageError{hyperxmp}% {hyperref must be loaded before hyperxmp}% {Recent versions of hyperref and the LaTeX kernel inhibit\MessageBreak hyperxmp's ability to hook into hyperref's internals unless\MessageBreak hyperref is loaded first.} } \def\hyxmp@pdfauthor{} \def\hyxmp@pdfkeywords{} \newcommand*{\hyxmp@redefine@Hyp}{% \@ifundefined{KV@Hyp@pdfauthor}{}{% \@ifundefined{hyxmp@Hyp@pdfauthor}{% \expandafter\let\expandafter\hyxmp@Hyp@pdfauthor \csname KV@Hyp@pdfauthor\endcsname }{}% }% \define@key{Hyp}{pdfauthor}{% \let\xmpcomma=\hyxmp@comma \def\xmpquote####1{####1}% \let\hyxmp@and=\and \def\and{,}% \hyxmp@Hyp@pdfauthor{##1}% \global\let\hyxmp@pdfauthor=\@pdfauthor \def\and{and\space}% \def\xmpcomma{,}% \def\xmpquote####1{"####1"}% \hyxmp@Hyp@pdfauthor{##1}% \def\xmpcomma{,}% \let\xmpquote=\relax \let\and=\hyxmp@and }% \@ifundefined{KV@Hyp@pdfkeywords}{}{% \@ifundefined{hyxmp@Hyp@pdfkeywords}{% \expandafter\let\expandafter\hyxmp@Hyp@pdfkeywords \csname KV@Hyp@pdfkeywords\endcsname }{}% }% \define@key{Hyp}{pdfkeywords}{% \let\xmpcomma=\hyxmp@comma \def\xmpquote####1{####1}% \hyxmp@Hyp@pdfkeywords{##1}% \global\let\hyxmp@pdfkeywords=\@pdfkeywords \def\xmpcomma{,}% \def\xmpquote####1{"####1"}% \hyxmp@Hyp@pdfkeywords{##1}% \def\xmpcomma{,}% \let\xmpquote=\relax }% } \let\hyxmp@ProcessKeyvalOptions=\ProcessKeyvalOptions \renewcommand*{\ProcessKeyvalOptions}{% \global\let\ProcessKeyvalOptions=\hyxmp@ProcessKeyvalOptions \hyxmp@redefine@Hyp \hyxmp@ProcessKeyvalOptions } \let\hyxmp@hypersetup=\hypersetup \def\hypersetup{% \hyxmp@redefine@Hyp \hyxmp@hypersetup } \edef\hyxmp@concated@metadata{} \expandafter\hyxmp@aep@toks\expandafter=\expandafter{% \the\hyxmp@aep@toks \AtEndPreamble{% \@ifpackageloaded{babel}{% \edef\hyxmp@concated@metadata{babel}% }{% \@ifpackageloaded{polyglossia}{% \edef\hyxmp@concated@metadata{polyglossia}% }{% }% }% }% } \newcommand*{\hyxmp@warn@if@no@metadata}{% \edef\hyxmp@concated@metadata{% \hyxmp@concated@metadata \@baseurl \@pdfauthor \@pdfauthortitle \@pdfbookedition \@pdfbytes \@pdfcaptionwriter \@pdfcontactaddress \@pdfcontactcity \@pdfcontactcountry \@pdfcontactemail \@pdfcontactphone \@pdfcontactpostcode \@pdfcontactregion \@pdfcontacturl \@pdfcopyright \@pdfcreationdate \@pdfdatetime \@pdfdoi \@pdfeissn \@pdfidentifier \@pdfisbn \@pdfissn \@pdfissuenum \@pdfkeywords \@pdflang \@pdflicenseurl \@pdfmetadatetime \@pdfmoddate \@pdfnumpages \@pdfpagerange \@pdfpublication \@pdfpubtype \@pdfsubject \@pdfsubtitle \@pdftitle \@pdfuapart \@pdfurl \@pdfvolumenum \@pdfxstandard }% \ifx\hyxmp@concated@metadata\@empty \PackageWarningNoLine{hyperxmp}{% \hyxmp@jobname.tex did not specify any metadata to\MessageBreak include in the XMP packet.\space\space Please see the\MessageBreak hyperxmp documentation for instructions on how to\MessageBreak provide metadata values to hyperxmp}% \fi } \newcommand*{\hyxmp@check@standards}{% \ifHy@pdfa \@ifmtargexp{\@pdfapart}{% \PackageWarningNoLine{hyperxmp}{% `pdfa' was passed to hyperref, but `pdfapart' was\MessageBreak not specified.\space\space Setting pdfapart to `1' and\MessageBreak pdfaconformance to `B'% }% \gdef\@pdfapart{1}% \gdef\@pdfaconformance{B}% }% {}% \fi \edef\hyxmp@standards{% \@pdfapart \@pdfxstandard \@pdfuapart }% \@ifnotmtargexp{\hyxmp@standards}{% \@ifmtargexp{\@pdftitle}{% \PackageWarningNoLine{hyperxmp}{% Missing pdftitle (required for PDF standards\MessageBreak compliance)% }% }% {}% }% } \expandafter\hyxmp@aep@toks\expandafter=\expandafter{% \the\hyxmp@aep@toks \AtEndPreamble{% \RequirePackage{hyperref}% \hyxmp@no@info@lists \begingroup \let\@latex@warning@no@line=\@gobble \hyxmp@use@first@valid{pdftitle}{\@pdftitle}{% \scr@subject@var,% \@title }% \hyxmp@use@first@valid{pdfauthor}{\@pdfauthor}{% \scr@fromname@var,% \@author }% \endgroup }% } \hyxmp@at@end{% \hyxmp@auto@assign@data \hyxmp@check@standards \hyxmp@warn@if@no@metadata \hyxmp@embed@packet } \newcommand*{\hyxmp@set@koma@phones}{% \begingroup \Hy@unicodefalse \@if@def@and@nonempty{scr@frommobilephone@var}{% \@if@def@and@nonempty{scr@fromphone@var}{% \hyxmp@pdfstringdef\hyxmp@koma@phones{\scr@frommobilephone@var,\scr@fromphone@var}% }{% \hyxmp@pdfstringdef\hyxmp@koma@phones{\scr@frommobilephone@var}% }% }{% \@if@def@and@nonempty{scr@fromphone@var}{% \hyxmp@pdfstringdef\hyxmp@koma@phones{\scr@fromphone@var}% }{% }% }% \endgroup } \newcommand*{\hyxmp@use@first@valid}[3]{% \@ifmtargexp{#2}{% \hyxmp@use@first@valid@i{#1}#3,!,% }% {}% } \def\hyxmp@use@first@valid@i#1#2,{% \def\next{\hyxmp@use@first@valid@i{#1}}% \ifx#2!% \let\next=\relax \else \ifx#2\undefined \else \@ifnotmtargexp{#2}{% \hypersetup{#1={#2}}% \def\next##1!,{}% }% \fi \fi \next } \newcommand*{\hyxmp@auto@assign@data}{% \@if@def@and@nonempty{@pdflang}{% \let\hyxmp@dc@lang=\@pdflang }{% \hyxmp@detect@langs }% \ifx\@pdfmetalang\@empty \ifx\@pdflang\@empty \let\@pdfmetalang=\hyxmp@x@default \else \edef\@pdfmetalang{\@pdflang}% \fi \fi \hyxmp@use@first@valid{pdfcontactemail}{\@pdfcontactemail}{% \scr@fromemail@var }% \hyxmp@set@koma@phones \hyxmp@use@first@valid{pdfcontactphone}{\@pdfcontactphone}{% \hyxmp@koma@phones }% \hyxmp@use@first@valid{pdfcontacturl}{\@pdfcontacturl}{% \scr@fromurl@var }% \hyxmp@use@first@valid{pdfsubtitle}{\@pdfsubtitle}{% \@subtitle }% \hyxmp@use@first@valid{pdfpublisher}{\@pdfpublisher}{% \@publishers }% \hyxmp@parse@acmart \@ifundefined{XeTeXversion}{}{% \@ifmtargexp{\@pdfcreationdate}{% \let\@pdfcreationdate=\hyxmp@today@pdf }% {}% }% \hyxmp@query@self } \ifLuaTeX \begin{luacode*} function get_pdf_size (bname) local odir = "" for _, opt in ipairs(arg) do local m = string.match(opt, "%-output%-d.-=(.*)") if m then odir = m end end local sep = "/" if os.type == "windows" or os.type == "msdos" then sep = "\\\\" end local dlast = string.sub(odir, -1) if odir == "" or dlast == sep or (dlast == ":" and sep == "\\\\") then sep = "" end local fname = odir .. sep .. bname .. ".pdf" local nbytes = lfs.attributes(fname, "size") return nbytes end \end{luacode*} \xdef\hyxmp@prev@pdf@size{% \luadirect{ nbytes = get_pdf_size("\hyxmp@jobname") if nbytes then tex.write(nbytes) end }% }% \fi \newcommand*{\hyxmp@query@self}{% \@if@def@and@nonempty{@pdfnumpages}{% }{% \xdef\@pdfnumpages{\thetotalpages}% }% \hyxmp@use@first@valid{pdfbytes}{\@pdfbytes}{% \hyxmp@prev@pdf@size }% } \newcommand*{\hyxmp@parse@acmart}{% \begingroup \let\@author=\@gobble \def\email##1##2{% \def\hyxmp@address@val{##2}% \hyxmp@use@first@valid{pdfcontactemail}{\@pdfcontactemail}{% \hyxmp@address@val }% }% \def\streetaddress##1{% \def\hyxmp@address@val{##1}% \hyxmp@use@first@valid{pdfcontactaddress}{\@pdfcontactaddress}{% \hyxmp@address@val }% }% \def\city##1{% \def\hyxmp@address@val{##1}% \hyxmp@use@first@valid{pdfcontactcity}{\@pdfcontactcity}{% \hyxmp@address@val }% }% \def\state##1{% \def\hyxmp@address@val{##1}% \hyxmp@use@first@valid{pdfcontactregion}{\@pdfcontactregion}{% \hyxmp@address@val }% }% \def\country##1{% \def\hyxmp@address@val{##1}% \hyxmp@use@first@valid{pdfcontactcountry}{\@pdfcontactcountry}{% \hyxmp@address@val }% }% \def\postcode##1{% \def\hyxmp@address@val{##1}% \hyxmp@use@first@valid{pdfcontactpostcode}{\@pdfcontactpostcode}{% \hyxmp@address@val }% }% \def\affiliation##1##2{% ##2% \let\affiliation=\@gobbletwo }% \setbox0=\hbox{\addresses}% \endgroup \@if@def@and@nonempty{@acmDOI}{% \IfSubStr{\@acmDOI}{10.1145/1122445.1122456}{}{% \IfSubStr{\@acmDOI}{10.1145/nnnnnnn.nnnnnnn}{}{% \hyxmp@use@first@valid{pdfdoi}{\@pdfdoi}{% \@acmDOI }% }% }% }% {}% \@if@def@and@nonempty{@acmISBN}{% \IfSubStr{\@acmISBN}{XXXX}{}{% \IfSubStr{\@acmISBN}{xxxx}{}{% \def\hyxmp@strip@isbn@date##1/##2!{##1}% \edef\hyxmp@acm@isbn{% \expandafter\hyxmp@strip@isbn@date\@acmISBN/!% }% \hyxmp@use@first@valid{pdfisbn}{\@pdfisbn}{% \hyxmp@acm@isbn }% }% }% }% {}% \def\hyxmp@acm@publisher{Association for Computing Machinery}% \hyxmp@use@first@valid{pdfpublisher}{\@pdfpublisher}{% \hyxmp@acm@publisher }% \hyxmp@use@first@valid{pdfpublication}{\@pdfpublication}{% \@journalName,% \@acmBooktitle,% \@acmConference }% \if@ACM@journal \def\hyxmp@acm@pubtype{journal}% \else \def\hyxmp@acm@pubtype{book}% \fi \hyxmp@use@first@valid{pdfpubtype}{\@pdfpubtype}{% \hyxmp@acm@pubtype }% \hyxmp@use@first@valid{pdfvolumenum}{\@pdfvolumenum}{% \@acmVolume }% \hyxmp@use@first@valid{pdfissuenum}{\@pdfissuenum}{% \@acmNumber }% } \@ifclassloaded{acmart}{}{\let\hyxmp@parse@acmart=\relax} \let\hyxmp@dc@lang=\@empty \newcommand*{\hyxmp@detect@langs}{% \@ifundefined{mainbcp47id}{% \@ifundefined{LocaleForEach}{% \let\@pdflang=\@empty }{% \BabelEnsureInfo \LocaleForEach{% \getlocaleproperty\hyxmp@lang@tag{##1}{identification/tag.bcp47}% \ifx\hyxmp@dc@lang\@empty \xdef\hyxmp@dc@lang{\hyxmp@lang@tag}% \else \xdef\hyxmp@dc@lang{\hyxmp@dc@lang,\hyxmp@lang@tag}% \fi \def\hyxmp@lang@name{##1}% \ifx\hyxmp@lang@name\bbl@main@language \edef\@pdflang{\hyxmp@lang@tag}% \fi }% }% }{% \xdef\@pdflang{\csname mainbcp47id\endcsname}% \edef\hyxmp@dc@lang{\xpg@bcp@loaded}% }% } \newcommand*{\hyxmp@commas@to@list}[2]{% \gdef#1{}% \expandafter\hyxmp@commas@to@list@i\expandafter#1#2,,% } \def\hyxmp@commas@to@list@i#1#2,{% \gdef\hyxmp@sublist{#2}% \ifx\hyxmp@sublist\@empty \let\next=\relax \else \hyxmp@trimspaces\hyxmp@sublist \@cons{#1}{{\hyxmp@sublist}}% \def\next{\hyxmp@commas@to@list@i{#1}}% \fi \next } \def\xmpcomma{,}% \bgroup \catcode`\^^C=11 \gdef\hyxmp@comma{^^C} \egroup \bgroup \catcode`\^^U=11 \gdef\hyxmp@uscore{^^U} \egroup \let\xmpquote=\relax \bgroup \catcode`\~=12% \gdef\xmptilde{~}% \egroup \newcommand{\XMPTruncateList}[1]{{% \PackageWarning{hyperxmp}{% \noexpand\XMPTruncateList has been deprecated since\MessageBreak hyperxmp 4.0 and may be removed in future\MessageBreak versions of the package. \noexpand\XMPTruncateList\MessageBreak was found}% \edef\hyxmp@temp@str{\csname hyxmp@#1\endcsname}% \hyxmp@commas@to@list{\hyxmp@temp@list}{\hyxmp@temp@str}% \def\@elt##1{% \expandafter\gdef\csname @#1\endcsname{##1}% \let\@elt=\@gobble } \hyxmp@temp@list }} \def\hyxmp@first@char#1{\hyxmp@first@char@i#1\relax} \def\hyxmp@first@char@i#1#2\relax{#1} \def\hyxmp@as@xmp@date#1{% \expandafter\ifnum\expandafter`\hyxmp@first@char@i#1\relax=`D \hyxmp@pdf@to@xmp@date{#1}% \else #1% \fi } \def\hyxmp@pdf@to@xmp@date#1:#2#3#4#5#6#7#8#9{% #2#3#4#5-#6#7-#8#9% \hyxmp@parse@time } \def\hyxmp@parse@time#1#2#3#4#5#6{% T#1#2:#3#4:#5#6% \hyxmp@parse@tz@char } \def\hyxmp@parse@tz@char#1{% #1% \ifx#1-% \expandafter\hyxmp@parse@tz \else \ifx#1+% \expandafter\hyxmp@parse@tz \fi \fi } \def\hyxmp@parse@tz#1'#2'{% #1:#2% } \def\hyxmp@as@pdf@date#1{% \expandafter\ifx\hyxmp@first@char@i#1\relax D% #1% \else \hyxmp@xmp@to@pdf@date{#1}% \fi } \def\hyxmp@xmp@to@pdf@date#1{% D:\hyxmp@xmp@to@pdf@date@i#1\relax\relax } \def\hyxmp@xmp@to@pdf@date@i#1#2#3#4#5#6{% #1#2#3#4% \ifx#5-% \expandafter\hyxmp@xmp@to@pdf@date@ii\expandafter#6% \fi } \def\hyxmp@xmp@to@pdf@date@ii#1#2#3#4{% #1#2% \ifx#3-% \expandafter\hyxmp@xmp@to@pdf@date@iii\expandafter#4% \fi } \def\hyxmp@xmp@to@pdf@date@iii#1#2#3#4{% #1#2% \ifx#3T% \expandafter\hyxmp@xmp@to@pdf@date@iv\expandafter#4% \fi } \def\hyxmp@xmp@to@pdf@date@iv#1#2#3#4{% #1#2% \ifx#3:% \expandafter\hyxmp@xmp@to@pdf@date@v\expandafter#4% \fi } \def\hyxmp@xmp@to@pdf@date@v#1#2#3#4{% #1#2% \ifx#3:% \expandafter\hyxmp@xmp@to@pdf@date@vi\expandafter#4% \fi } \let\hyxmp@gobbletwo=\@gobbletwo \def\hyxmp@xmp@to@pdf@date@vi#1#2#3#4{% #1#2% \ifx#3+% +\expandafter\hyxmp@xmp@to@pdf@date@vii \fi \ifx#3-% -\expandafter\hyxmp@xmp@to@pdf@date@vii \fi \ifx#3Z% Z% \fi \ifx#3\relax \expandafter\hyxmp@gobbletwo \fi \@gobbletwo #4% } \def\hyxmp@xmp@to@pdf@date@vii#1\@gobbletwo#2#3#4#5{% #2#3% \ifx#4:% \expandafter\hyxmp@xmp@to@pdf@date@viii\expandafter#5% \fi } \def\hyxmp@xmp@to@pdf@date@viii#1#2#3#4{% '#1#2'% } \def\hyxmp@today@xmp@define#1{% \xdef#1{\the\year}% \ifnum\month<10 \xdef#1{#1-0\the\month}% \else \xdef#1{#1-\the\month}% \fi \ifnum\day<10 \xdef#1{#1-0\the\day}% \else \xdef#1{#1-\the\day}% \fi \@hyxmp@count=\time \divide\@hyxmp@count by 60 \ifnum\@hyxmp@count<10 \xdef#1{#1T0\the\@hyxmp@count}% \else \xdef#1{#1T\the\@hyxmp@count}% \fi \multiply\@hyxmp@count by -60 \advance\@hyxmp@count by \time \ifnum\@hyxmp@count<10 \xdef#1{#1:0\the\@hyxmp@count}% \else \xdef#1{#1:\the\@hyxmp@count}% \fi \xdef#1{#1Z}% } \def\hyxmp@try@today#1#2{% \@ifmtargexp{\hyxmp@today@xmp}{% \@ifundefined{#1}{}{#2}% }% {}% } \def\hyxmp@today@xmp{} \hyxmp@try@today{pdfcreationdate}{% \edef\hyxmp@today@xmp{\expandafter\hyxmp@pdf@to@xmp@date\pdfcreationdate}% } \hyxmp@try@today{pdffeedback}{% \edef\hyxmp@today@xmp{\expandafter\hyxmp@pdf@to@xmp@date\pdffeedback creationdate}% } \hyxmp@try@today{filemoddate}{% \edef\hyxmp@today@xmp{\filemoddate{\hyxmp@jobname.log}}% \edef\next{% \edef\noexpand\hyxmp@today@xmp{\noexpand\hyxmp@as@xmp@date{\hyxmp@today@xmp}}% }% \next }% \hyxmp@try@today{year}{% \hyxmp@today@xmp@define\hyxmp@today@xmp } \expandafter\edef\expandafter\hyxmp@today@pdf\expandafter{% \expandafter\hyxmp@xmp@to@pdf@date\expandafter{\hyxmp@today@xmp}% } \catcode`\Q=3 \newcommand{\hyxmp@trimspaces}[1]{% \begingroup \aftergroup\toks\aftergroup0\aftergroup{% \expandafter\hyxmp@trimb\expandafter\noexpand#1Q Q}% \edef#1{\the\toks0}% } \def\hyxmp@trimb#1 Q{\hyxmp@trimc#1Q} \def\hyxmp@trimc#1Q#2{\afterassignment\endgroup \vfuzz\the\vfuzz#1} \catcode`\Q=11 \newif\ifhyxmp@unicodetex \ifnum64=`\^^^^0040\relax \hyxmp@unicodetextrue \else \hyxmp@unicodetexfalse \fi \expandafter\def\csname SE->pdfdoc@03\endcsname{0003} \expandafter\def\csname SE->pdfdoc@15\endcsname{0015} \newcommand*{\hyxmp@xmlify}[1]{% \gdef\hyxmp@xmlified{}% \EdefUnescapeString\hyxmp@text{#1}% \ifhyxmp@unicodetex \hyxmp@is@unicode\hyxmp@text{% \StringEncodingConvert \hyxmp@text\hyxmp@text{utf16be}{utf32be}% }{% \ifXeTeX \hyxmp@xetex@crap \else \StringEncodingConvert \hyxmp@text\hyxmp@text{pdfdoc}{utf32be}% \fi }% \EdefEscapeHex\hyxmp@text{\hyxmp@text}% \edef\hyxmp@text{% \expandafter }\expandafter\hyxmp@toxml@unicodetex\hyxmp@text \relax\relax\relax\relax\relax\relax\relax\relax \else \hyxmp@is@unicode\hyxmp@text{% \StringEncodingConvert \hyxmp@text\hyxmp@text{utf16be}{utf8}% }{% \StringEncodingConvert \hyxmp@text\hyxmp@text{pdfdoc}{utf8}% }% \EdefEscapeHex\hyxmp@text{\hyxmp@text}% \edef\hyxmp@text{% \expandafter\hyxmp@toxml\hyxmp@text\@empty\@empty }% \EdefUnescapeHex\hyxmp@text{\hyxmp@text}% \fi \global\let\hyxmp@xmlified\hyxmp@text } \begingroup \lccode`\<=254 % \lccode`\>=255 % \catcode254=12 % \catcode255=12 % \lowercase{\endgroup \def\hyxmp@is@unicode#1{% \expandafter\hyxmp@@is@unicode#1<>\@nil }% \def\hyxmp@@is@unicode#1<>#2\@nil{% \ifx\\#1\\% \expandafter\@firstoftwo \else \expandafter\@secondoftwo \fi }% } \def\hyxmp@toxml#1#2{% \ifx#1\@empty \else \ifnum"#1#2=`\& % 26616D703B% & \else\ifnum"#1#2=`\< % 266C743B% < \else\ifnum"#1#2=`\> % 2667743B% > \else \@ifundefined{pdfmark}{% #1#2% }{% \ifnum"#1#2=`\( % 5C28% \( \else\ifnum"#1#2=`\) % 5C29% \) \else #1#2% \fi\fi }% \fi\fi\fi \expandafter\hyxmp@toxml \fi } \def\hyxmp@toxml@unicodetex#1#2#3#4#5#6#7#8{% \ifx#1\relax \else \ifnum"#1#2#3#4#5#6#7#8>127 % \uccode`\*="#1#2#3#4#5#6#7#8\relax \uppercase{% \edef\hyxmp@text{\hyxmp@text *}% }% \else\ifnum"#7#8=`\< % \edef\hyxmp@text{\hyxmp@text <}% \else\ifnum"#7#8=`\& % \edef\hyxmp@text{\hyxmp@text &}% \else\ifnum"#7#8=`\> % \edef\hyxmp@text{\hyxmp@text >}% \else\ifnum"#7#8=`\ % \edef\hyxmp@text{\hyxmp@text\space}% \else \uccode`\*="#7#8\relax \uppercase{% \edef\hyxmp@text{\hyxmp@text *}% }% \fi\fi\fi\fi\fi \expandafter\hyxmp@toxml@unicodetex \fi } \def\hyxmp@skipzeros#1{% \ifx#10% \expandafter\hyxmp@skipzeros \fi } \begingroup \def\x#1{\endgroup \def\hyxmp@xetex@crap{% \edef\hyxmp@try{% \expandafter\hyxmp@SpaceOther\hyxmp@text#1\@nil }% \let\hyxmp@crap@result=N% \expandafter\hyxmp@crap@test\hyxmp@try\relax \ifx\hyxmp@crap@result Y% \let\hyxmp@text\@empty \expandafter\hyxmp@crap@convert\hyxmp@try\relax \else \StringEncodingConvert\hyxmp@text\hyxmp@text{pdfdoc}{utf32be}% \fi }% } \x{ } \begingroup \catcode`\~=12 % \lccode`\~=`\ % \lowercase{\endgroup \def\hyxmp@SpaceOther#1 #2\@nil{% #1% \ifx\relax#2\relax \expandafter\@gobble \else ~% \expandafter\@firstofone \fi {\hyxmp@SpaceOther#2\@nil}% }% } \def\hyxmp@crap@test#1{% \ifx#1\relax \else \ifnum`#1>127 % \let\hyxmp@crap@result=Y% \expandafter\expandafter\expandafter\hyxmp@skiptorelax \else \expandafter\expandafter\expandafter\hyxmp@crap@test \fi \fi } \def\hyxmp@skiptorelax#1\relax{} \def\hyxmp@crap@convert#1{% \ifx#1\relax \else \edef\hyxmp@num{\number`#1}% \ifnum\hyxmp@num>"FFFFFF % \lccode`\!=\intcalcDiv{\hyxmp@num}{\number"1000000}\relax \lowercase{\edef\hyxmp@text{\hyxmp@text!}}% \edef\hyxmp@num{\intcalcMod{\hyxmp@num}{\number"1000000}}% \else \edef\hyxmp@text{\hyxmp@text\hyxmp@zero}% \fi \ifnum\hyxmp@num>"FFFF % \lccode`\!=\intcalcDiv{\hyxmp@num}{\number"10000}\relax \lowercase{\edef\hyxmp@text{\hyxmp@text!}}% \edef\hyxmp@num{\intcalcMod{\hyxmp@num}{\number"10000}}% \else \edef\hyxmp@text{\hyxmp@text\hyxmp@zero}% \fi \ifnum\hyxmp@num>"FF % \lccode`\!=\intcalcDiv{\hyxmp@num}{\number"100}\relax \lowercase{\edef\hyxmp@text{\hyxmp@text!}}% \edef\hyxmp@num{\intcalcMod{\hyxmp@num}{\number"100}}% \else \edef\hyxmp@text{\hyxmp@text\hyxmp@zero}% \fi \ifnum\hyxmp@num>0 % \lccode`\!=\hyxmp@num\relax \lowercase{\edef\hyxmp@text{\hyxmp@text!}}% \else \edef\hyxmp@text{\hyxmp@text\hyxmp@zero}% \fi \expandafter\hyxmp@crap@convert \fi } \begingroup \catcode0=12 % \gdef\hyxmp@zero{^^00}% \endgroup \newcommand*{\hyxmp@extra@indent}{} \newcommand*{\hyxmp@add@simple}[2]{% \@ifnotmtargexp{#2}{% \hyxmp@xmlify{#2}% \hyxmp@add@to@xml{\hyxmp@extra@indent______<}% \xdef\hyxmp@xml{\hyxmp@xml#1}% \hyxmp@add@to@xml{>\hyxmp@xmlified^^J}% }% } \newcommand*{\hyxmp@add@simple@var}[2]{% \expandafter\ifx\csname#2\endcsname\relax \else \hyxmp@xmlify{\csname#2\endcsname}% \hyxmp@add@to@xml{% \hyxmp@extra@indent______<#1>\hyxmp@xmlified^^J% }% \fi } \newcommand*{\hyxmp@add@simple@lang}[2]{% \@ifnotmtarg{#2}{% \hyxmp@xmlify{#2}% \expandafter\hyxmp@add@simple@lang@i\hyxmp@xmlified\relax{#1}% }% } \newcommand*{\hyxmp@add@simple@lang@i}{% \@ifnextchar[\hyxmp@add@simple@lang@ii{\hyxmp@add@simple@lang@ii[\@pdfmetalang]}% } \def\hyxmp@add@simple@lang@ii[#1]#2\relax#3{% \@ifnotmtarg{#2}{% \hyxmp@xmlify{#2}% \@ifmtarg{#1}{% \hyxmp@add@to@xml{% ______<#3>\hyxmp@xmlified^^J% }% }{% \hyxmp@add@to@xml{% ______<#3 xml:lang="#1">\hyxmp@xmlified^^J% }% }% }% } \newcommand*{\hyxmp@add@simple@pfx}[3]{% \@ifnotmtargexp{#3}{% \hyxmp@add@to@xml{\hyxmp@extra@indent______<}% \xdef\hyxmp@xml{\hyxmp@xml#1}% \hyxmp@pdfstringdef\hyxmp@iprefix{#2}% \hyxmp@xmlify{\hyxmp@iprefix}% \hyxmp@add@to@xml{>\hyxmp@xmlified}% \hyxmp@xmlify{#3}% \hyxmp@add@to@xml{\hyxmp@xmlified^^J}% }% } \def\hyxmp@alt@title{} \def\hyxmp@alt@description{} \def\hyxmp@alt@rights{} \newcommand{\hyxmp@LA@accept}[2]{% \define@key{hyxmp@LA}{#1}{% \hyxmp@pdfstringdef\hyxmp@value{##1}% \xdef#2{#2\noexpand\do {\hyxmp@cur@lang} {\hyxmp@value}}% } } \hyxmp@LA@accept{pdftitle}{\hyxmp@alt@title} \hyxmp@LA@accept{pdfsubject}{\hyxmp@alt@description} \hyxmp@LA@accept{pdfcopyright}{\hyxmp@alt@rights} \newcommand{\XMPLangAlt}[2]{% \let\do=\relax \edef\hyxmp@cur@lang{#1}% \setkeys{hyxmp@LA}{#2}% } \def\hyxmp@modulo@a#1{% \@tempcntb=\@hyxmp@count \divide\@tempcntb by #1 \multiply\@tempcntb by #1 \advance\@hyxmp@count by -\@tempcntb } \def\hyxmp@big@prime{536870923} \def\hyxmp@big@prime@ii{536870027} \def\hyxmp@seed@rng#1{% \@hyxmp@count=\hyxmp@big@prime \futurelet\hyxmp@one@token\hyxmp@seed@rng@i#1\@empty } \def\hyxmp@seed@rng@i{% \ifx\hyxmp@one@token\@empty \let\next=\relax \else \def\next##1{% \multiply\@hyxmp@count by 3 \advance\@hyxmp@count by `##1 \hyxmp@modulo@a{\hyxmp@big@prime}% \futurelet\hyxmp@one@token\hyxmp@seed@rng@i }% \fi \next } \def\hyxmp@set@rand@num{% \@hyxmp@count=\hyxmp@rand@num \multiply\@hyxmp@count by 3 \advance\@hyxmp@count by \hyxmp@big@prime@ii \hyxmp@modulo@a{\hyxmp@big@prime}% \xdef\hyxmp@rand@num{\the\@hyxmp@count}% } \def\hyxmp@append@hex#1{% \hyxmp@set@rand@num \@hyxmp@count=\hyxmp@rand@num \hyxmp@modulo@a{16}% \ifnum\@hyxmp@count<10 \xdef#1{#1\the\@hyxmp@count}% \else \advance\@hyxmp@count by -10 \ifcase\@hyxmp@count \xdef#1{#1a}% \or\xdef#1{#1b}% \or\xdef#1{#1c}% \or\xdef#1{#1d}% \or\xdef#1{#1e}% \or\xdef#1{#1f}% \fi \fi } \def\hyxmp@append@hex@iii#1{% \hyxmp@append@hex#1% \hyxmp@append@hex#1% \hyxmp@append@hex#1% } \def\hyxmp@append@hex@iv#1{% \hyxmp@append@hex@iii#1% \hyxmp@append@hex#1% } \def\hyxmp@create@uuid#1{% \def#1{uuid:}% \hyxmp@append@hex@iv#1% \hyxmp@append@hex@iv#1% \g@addto@macro#1{-}% \hyxmp@append@hex@iv#1% \g@addto@macro#1{-4}% \hyxmp@append@hex@iii#1% \g@addto@macro#1{-}% \hyxmp@set@rand@num \@hyxmp@count=\hyxmp@rand@num \hyxmp@modulo@a{4}% \ifcase\@hyxmp@count \g@addto@macro#1{8}% \or\g@addto@macro#1{9}% \or\g@addto@macro#1{a}% \or\g@addto@macro#1{b}% \fi \hyxmp@append@hex@iii#1% \g@addto@macro#1{-}% \hyxmp@append@hex@iv#1% \hyxmp@append@hex@iv#1% \hyxmp@append@hex@iv#1% } \newcommand*{\hyxmp@def@DocumentID}{% \edef\hyxmp@seed@string{\hyxmp@jobname:\@pdftitle:\@pdfauthor:}% \expandafter\hyxmp@seed@rng\expandafter{\hyxmp@seed@string}% \edef\hyxmp@rand@num{\the\@hyxmp@count}% \hyxmp@create@uuid\hyxmp@DocumentID } \newcommand*{\hyxmp@def@InstanceID}{% \hyxmp@today@xmp@define{\hyxmp@seed@string}% \edef\hyxmp@seed@string{% \hyxmp@jobname:\@pdftitle:\@pdfauthor:\hyxmp@today@xmp:\hyxmp@seed@string }% \expandafter\hyxmp@seed@rng\expandafter{\hyxmp@seed@string}% \edef\hyxmp@rand@num{\the\@hyxmp@count}% \hyxmp@create@uuid\hyxmp@InstanceID } \newcommand*{\hyxmp@add@to@xml}[1]{% \bgroup \@hyxmp@count=0 \ifhyxmp@unicodetex \@tempcntb=65536% \else \@tempcntb=256% \fi \loop \lccode\@hyxmp@count=\@hyxmp@count \advance\@hyxmp@count by 1 \ifnum\@hyxmp@count<\@tempcntb \repeat \lccode`\_=`\ \relax \lccode`\^^C=`\,\relax \lccode`\^^U=`\_\relax \lowercase{\xdef\hyxmp@new@xml{#1}}% \xdef\hyxmp@xml{\hyxmp@xml\hyxmp@new@xml}% \egroup } \bgroup \catcode`\#=11 \gdef\hyxmp@hash{#} \egroup \bgroup \xdef\hyxmp@xml{}% \hyxmp@add@to@xml{% _______________________________________________________________^^J% } \xdef\hyxmp@padding{\hyxmp@xml}% \egroup \xdef\hyxmp@padding{\hyxmp@padding\hyxmp@padding} \xdef\hyxmp@padding{\hyxmp@padding\hyxmp@padding} \xdef\hyxmp@padding{\hyxmp@padding\hyxmp@padding} \xdef\hyxmp@padding{\hyxmp@padding\hyxmp@padding} \xdef\hyxmp@padding{\hyxmp@padding\hyxmp@padding} \newcommand*{\hyxmp@x@default}{x-default} \newcommand*{\hyxmp@define@pdfproducer}{% \gdef\@pdfproducer{TeX} \ifLuaTeX \expandafter\hyxmp@banner@to@producer\expandafter{\luatexbanner}% \else \ifPDFTeX \expandafter\hyxmp@banner@to@producer\expandafter{\pdftexbanner}% \else \ifXeTeX \edef\@pdfproducer{XeTeX version \the\XeTeXversion\XeTeXrevision}% \fi \fi \fi } \def\hyxmp@banner@to@producer#1{% \ifx\scantokens\relax \gdef\@pdfproducer{#1}% \else {\scantokens{\makeatletter\hyxmp@remove@this#1\relax}}% \fi } \def\hyxmp@remove@this This is #1\relax{\gdef\@pdfproducer{#1}} \AtBeginDocument{% \ifx\@pdfproducer\relax \hyxmp@define@pdfproducer \fi } \newcommand*{\hyxmp@assign@major@minor}{% \@ifundefined{pdfvariable}{% \@ifundefined{pdfminorversion}{% }{% \xdef\hyxmp@major@minor{\the\pdfminorversion}% \@ifundefined{pdfmajorversion}{% \xdef\hyxmp@major@minor{1.\hyxmp@major@minor}% }{% \xdef\hyxmp@major@minor{\the\pdfmajorversion.\hyxmp@major@minor}% }% }% }{% \xdef\hyxmp@major@minor{\the\pdfvariable majorversion.\the\pdfvariable minorversion}% }% } \newcommand*{\hyxmp@pdf@schema}{% \hyxmp@add@simple@var{pdf:Producer}{@pdfproducer}% \hyxmp@add@simple@var{pdf:Keywords}{@pdfkeywords}% \hyxmp@add@simple{pdf:Trapped}{\@pdftrapped}% \hyxmp@assign@major@minor \hyxmp@add@simple@var{pdf:PDFVersion}{hyxmp@major@minor}% } \newif\ifhyxmp@multi@langs \newcommand*{\hyxmp@rdf@dc}[3][\iffalse]{% \@ifmtargexp{#3}{\@tempswafalse}{\@tempswatrue}% #1 \@tempswatrue \fi \if@tempswa \hyxmp@xmlify{#3}% \let\hyxmp@value=\hyxmp@xmlified \hyxmp@add@to@xml{% ______^^J% ________^^J% }% \@if@def@and@nonempty{hyxmp@alt@#2}{% \hyxmp@multi@langstrue }{% \hyxmp@multi@langsfalse }% \ifx\@pdfmetalang\hyxmp@x@default \ifhyxmp@multi@langs \PackageError{hyperxmp}% {\string\XMPLangAlt\space was used without specifying pdfmetalang\MessageBreak or pdflang}% {Be sure to assign a language code to the pdfmetalang key and/or a document\MessageBreak language to the pdflang key (e.g., \string\hypersetup{pdfmetalang={en}}).}% \else \hyxmp@add@to@xml{% __________\hyxmp@value^^J% }% \fi \else \ifhyxmp@multi@langs \hyxmp@xmlify{\@pdfmetalang}% \hyxmp@add@to@xml{% __________\hyxmp@value^^J% __________\hyxmp@value^^J% }% \def\do##1##2{ \hyxmp@xmlify{##2}% \hyxmp@add@to@xml{% __________\hyxmp@xmlified^^J% }% }% \csname hyxmp@alt@#2\endcsname \else \hyxmp@xmlify{\@pdfmetalang}% \hyxmp@add@to@xml{% __________\hyxmp@value^^J% }% \fi \fi \hyxmp@add@to@xml{% ________^^J% ______^^J% }% \fi }% \newcommand*{\hyxmp@list@to@xml}[4][\iffalse]{% \@ifmtargexp{#4}{\@tempswafalse}{\@tempswatrue}% #1 \@tempswatrue \fi \if@tempswa \hyxmp@add@to@xml{% ______^^J% ________^^J% }% \bgroup \hyxmp@xmlify{#4}% \hyxmp@commas@to@list\hyxmp@list{\hyxmp@xmlified}% \def\@elt##1{% \hyxmp@add@to@xml{% __________##1^^J% }% }% \hyxmp@list \egroup \hyxmp@add@to@xml{% ________^^J% ______^^J% }% \fi } \newcommand{\hyxmp@singleton@dc}[3][Bag]{% \@ifnotmtargexp{#3}{% \hyxmp@xmlify{#3}% \hyxmp@add@to@xml{% ______^^J% ________^^J% __________\hyxmp@xmlified^^J% ________^^J% ______^^J% }% } } \newcommand*{\hyxmp@cond@dc@identifier}[2]{% \ifx\hyxmp@xmlified\@empty \@ifnotmtargexp{#2}{% \hyxmp@add@simple@pfx{dc:identifier}{#1}{#2}% }% \fi } \newcommand*{\hyxmp@dc@schema}{% \hyxmp@add@simple{dc:format}{application/pdf}% \hyxmp@rdf@dc[\ifHy@pdfa]{title}{\@pdftitle}% \hyxmp@rdf@dc[\ifHy@pdfa]{description}{\@pdfsubject}% \hyxmp@rdf@dc{rights}{\@pdfcopyright}% \hyxmp@singleton@dc{publisher}{\@pdfpublisher}% \@ifmtargexp{\@pdfdatetime}{% \hyxmp@singleton@dc[Seq]{date}{\hyxmp@today@xmp}% }{% \hyxmp@singleton@dc[Seq]{date}{\@pdfdatetime}% }% \hyxmp@singleton@dc{type}{\@pdftype}% \hyxmp@list@to@xml[\ifHy@pdfa]{creator}{Seq}{\hyxmp@pdfauthor}% \hyxmp@list@to@xml{subject}{Bag}{\hyxmp@pdfkeywords}% \ifx\@pdfsource\@empty \else \hyxmp@add@simple{dc:source}{\@pdfsource}% \fi \hyxmp@list@to@xml{language}{Bag}{\hyxmp@dc@lang}% \@ifmtargexp{\@pdfidentifier}{% \let\hyxmp@xmlified=\@empty \hyxmp@cond@dc@identifier{info:doi/}{\@pdfdoi}% \hyxmp@cond@dc@identifier{urn:ISSN:}{\@pdfeissn}% \hyxmp@cond@dc@identifier{urn:ISSN:}{\@pdfissn}% \hyxmp@cond@dc@identifier{urn:ISBN:}{\@pdfisbn}% }{% \hyxmp@add@simple{dc:identifier}{\@pdfidentifier}% }% } \newcommand*{\hyxmp@xmpRights@schema}{% \let\hyxmp@rights=\@empty \ifx\@pdflicenseurl\@empty \else \def\hyxmp@rights{YES}% \fi \ifx\@pdfcopyright\@empty \else \def\hyxmp@rights{YES}% \fi \ifx\hyxmp@rights\@empty \else \ifx\@pdfcopyright\@empty \else \hyxmp@add@simple{xmpRights:Marked}{True}% \fi \hyxmp@add@simple{xmpRights:WebStatement}{\@pdflicenseurl}% \fi } \expandafter\hyxmp@aep@toks\expandafter=\expandafter{% \the\hyxmp@aep@toks \AtEndPreamble{% \@ifmtargexp{\hyxmp@DocumentID}{\hyxmp@def@DocumentID}{}% \@ifmtargexp{\hyxmp@InstanceID}{\hyxmp@def@InstanceID}{}% }% } \gdef\hyxmp@mm@schema{% \hyxmp@add@simple{xmpMM:DocumentID}{\hyxmp@DocumentID}% \hyxmp@add@simple{xmpMM:InstanceID}{\hyxmp@InstanceID}% \hyxmp@add@simple{xmpMM:VersionID}{\@pdfversionid}% \hyxmp@add@simple{xmpMM:RenditionClass}{\@pdfrendition}% } \newcommand*{\hyxmp@xmp@basic@schema}{% \@ifmtargexp{\@pdfcreationdate}{% \hyxmp@add@simple{xmp:CreateDate}{\hyxmp@today@xmp}% }{% \hyxmp@add@simple{xmp:CreateDate}{% \expandafter\hyxmp@as@xmp@date\expandafter{\@pdfcreationdate}}% }% \@ifmtargexp{\@pdfmoddate}{% \hyxmp@add@simple{xmp:ModifyDate}{\hyxmp@today@xmp}% }{% \hyxmp@add@simple{xmp:ModifyDate}{% \expandafter\hyxmp@as@xmp@date\expandafter{\@pdfmoddate}}% }% \@ifmtargexp{\@pdfmetadatetime}{% \hyxmp@add@simple{xmp:MetadataDate}{\hyxmp@today@xmp}% }{% \hyxmp@add@simple{xmp:MetadataDate}{\@pdfmetadatetime}% }% \hyxmp@add@simple{xmp:CreatorTool}{\@pdfcreator}% \hyxmp@add@simple{xmp:BaseURL}{\@baseurl}% } \gdef\hyxmp@photoshop@schema{% \edef\hyxmp@photoshop@data{\@pdfauthortitle\@pdfcaptionwriter}% \hyxmp@add@simple{photoshop:AuthorsPosition}{\@pdfauthortitle}% \hyxmp@add@simple{photoshop:CaptionWriter}{\@pdfcaptionwriter}% } \newcommand*{\hyxmp@pdfa@id@schema}{% \ifHy@pdfa \hyxmp@add@simple{pdfaid:part}{\@pdfapart}% \hyxmp@add@simple{pdfaid:conformance}{\@pdfaconformance}% \fi } \newcommand*{\hyxmp@pdfua@id@schema}{% \hyxmp@add@simple{pdfuaid:part}{\@pdfuapart}% } \newcommand*{\hyxmp@pdfx@id@schema}{% \@hyxmp@count=0\hyxmp@pdfx@major\relax \ifnum\@hyxmp@count=0 \else \ifnum\@hyxmp@count=1 \hyxmp@add@simple{pdfx:GTS_PDFXVersion}{PDF/X-1:2001}% \hyxmp@add@simple{pdfx:GTS_PDFXConformance}{\@pdfxstandard}% \else \ifnum\@hyxmp@count<4 \hyxmp@add@simple{pdfx:GTS_PDFXVersion}{\@pdfxstandard}% \else \hyxmp@add@simple{pdfxid:GTS_PDFXVersion}{\@pdfxstandard}% \fi \fi \fi } \begingroup \catcode`\&=12 \catcode`\#=12 \gdef\xmplinesep{ } \endgroup \newcommand*{\hyxmp@list@to@lines}[2]{% \@ifnotmtargexp{#2}{% \bgroup \hyxmp@add@to@xml{% \hyxmp@extra@indent______<#1>% }% \def\@elt@first##1{% \hyxmp@add@to@xml{##1}% \let\@elt=\@elt@rest }% \def\@elt@rest##1{% \hyxmp@add@to@xml{\xmplinesep##1}% }% \let\@elt=\@elt@first \hyxmp@xmlify{#2}% \hyxmp@commas@to@list\hyxmp@list{\hyxmp@xmlified}% \hyxmp@list \hyxmp@add@to@xml{^^J}% \egroup }% } \gdef\hyxmp@iptc@schema{% \ifx\hyxmp@iptc@data\@empty \else \hyxmp@add@to@xml{% ______^^J% }% \bgroup \edef\hyxmp@extra@indent{\hyxmp@extra@indent\space\space}% \hyxmp@list@to@lines{Iptc4xmpCore:CiAdrExtadr}{\@pdfcontactaddress}% \hyxmp@add@simple{Iptc4xmpCore:CiAdrCity}{\@pdfcontactcity}% \hyxmp@add@simple{Iptc4xmpCore:CiAdrRegion}{\@pdfcontactregion}% \hyxmp@add@simple{Iptc4xmpCore:CiAdrPcode}{\@pdfcontactpostcode}% \hyxmp@add@simple{Iptc4xmpCore:CiAdrCtry}{\@pdfcontactcountry}% \def\xmplinesep{,}% \hyxmp@list@to@lines{Iptc4xmpCore:CiTelWork}{\@pdfcontactphone}% \hyxmp@list@to@lines{Iptc4xmpCore:CiEmailWork}{\@pdfcontactemail}% \hyxmp@list@to@lines{Iptc4xmpCore:CiUrlWork}{\@pdfcontacturl}% \egroup \hyxmp@add@to@xml{% ______^^J% }% \fi } \newcommand*{\hyxmp@prism@schema}{% \ifx\hyxmp@prism@data\@empty \else \hyxmp@add@simple{prism:complianceProfile}{three}% \fi \hyxmp@add@simple@lang{prism:subtitle}{\@pdfsubtitle}% \hyxmp@add@simple@lang{prism:publicationName}{\@pdfpublication}% \hyxmp@add@simple{prism:aggregationType}{\@pdfpubtype}% \hyxmp@add@simple@lang{prism:bookEdition}{\@pdfbookedition}% \hyxmp@add@simple{prism:volume}{\@pdfvolumenum}% \hyxmp@add@simple{prism:number}{\@pdfissuenum}% \hyxmp@add@simple{prism:pageRange}{\@pdfpagerange}% \hyxmp@add@simple{prism:isbn}{\@pdfisbn}% \hyxmp@add@simple{prism:issn}{\@pdfissn}% \hyxmp@add@simple{prism:eIssn}{\@pdfeissn}% \hyxmp@add@simple{prism:doi}{\@pdfdoi}% \hyxmp@add@simple{prism:url}{\@pdfurl}% \hyxmp@add@simple{prism:byteCount}{\@pdfbytes}% \hyxmp@add@simple{prism:pageCount}{\@pdfnumpages}% } \newcommand*{\hyxmp@jav@schema}{% \hyxmp@add@simple{jav:journal_article_version}{\@pdfpubstatus}% } \newcommand*{\hyxmp@xmptpg@schema}{% \ifLuaTeX \luadirect{write_xmp_font_list(\the\hyxmp@cct)}% \fi \hyxmp@add@simple{xmpTPg:NPages}{\@pdfnumpages}% } \ifLuaTeX \newcatcodetable\hyxmp@cct \savecatcodetable\hyxmp@cct \fi \bgroup \catcode`\_=11 \gdef\hyxmp@prot@us{_}% \egroup \ifLuaTeX \begin{luacode*} function write_xmp_font_list (cct) local function show_field(name, ...) for i = 1, select("#", ...) do local val = select(i, ...) if val then local xml = string.gsub(val, "&", "&") xml = string.gsub(xml, "<", "<") xml = string.gsub(xml, ">", ">") xml = string.gsub(xml, "_", "\\hyxmp@prot@us ") tex.print(cct, "____________" .. xml .. "^^J%") return end end end tex.print(cct, "\\hyxmp@add@to@xml{%") tex.print(cct, "______^^J%") tex.print(cct, "________^^J%") for i, f in font.each() do tex.print(cct, "__________^^J%") if f.filename then local fname = string.gsub(f.filename, "^harfloaded:(.*)", "%1") local info = fontloader.info(fname) if info then show_field("fontFace", info.fullname) show_field("fontFamily", info.familyname) show_field("fontName", info.fontname) show_field("versionString", info.version) end local baseName = string.gsub(f.filename, ".*[/\\](.*)", "%1") show_field("fontFileName", baseName) else show_field("fontName", f.psname, f.fullname, f.name) end if f.format and f.format ~= "unknown" then show_field("fontType", f.format) end tex.print(cct, "__________^^J%") end tex.print(cct, "________^^J%") tex.print(cct, "______^^J%") tex.print(cct, "}") end \end{luacode*} \fi \newcommand*{\hyxmp@check@iptc@data}{% \edef\hyxmp@iptc@data{% \@pdfcontactaddress \@pdfcontactcity \@pdfcontactregion \@pdfcontactpostcode \@pdfcontactcountry \@pdfcontactphone \@pdfcontactemail \@pdfcontacturl }% }% \newcommand*{\hyxmp@check@prism@data}{% \edef\hyxmp@prism@data{% \@pdfbookedition \@pdfbytes \@pdfdoi \@pdfeissn \@pdfisbn \@pdfissn \@pdfissuenum \@pdfnumpages \@pdfpagerange \@pdfpublication \@pdfpubtype \@pdfsubtitle \@pdfurl \@pdfvolumenum }% }% \newcommand*{\hyxmp@check@jav@data}{% \edef\hyxmp@jav@data{% \@pdfpubstatus }% } \newcommand*{\hyxmp@begin@extension@decls}{% \hyxmp@add@to@xml{% ______^^J% ________^^J% }% } \newcommand*{\hyxmp@end@extension@decls}{% \hyxmp@add@to@xml{% ________^^J% ______^^J% }% } \newcommand*{\hyxmp@begin@ext@decl}[3]{% \hyxmp@add@to@xml{% __________^^J% ____________#1^^J% ____________#2^^J% ____________#3^^J% ____________^^J% ______________^^J% }% }% \newcommand*{\hyxmp@end@ext@decl}{% \hyxmp@add@to@xml{% ______________^^J% ____________^^J% __________^^J% }% }% \newcommand{\hyxmp@declare@property}[4][Text]{% \hyxmp@add@to@xml{% ________________^^J% __________________}% \xdef\hyxmp@xml{\hyxmp@xml#2}% \hyxmp@add@to@xml{^^J% __________________#1^^J% __________________#3^^J% __________________#4^^J% ________________^^J% }% }% \newcommand{\hyxmp@declare@field}[3][Text]{% \hyxmp@add@to@xml{% ______________________^^J% ________________________#2^^J% ________________________#1^^J% ________________________#3^^J% ______________________^^J% }% } \newcommand*{\hyxmp@pdf@extensions}{% \hyxmp@begin@ext@decl {Adobe PDF Schema}% {pdf}% {http://ns.adobe.com/pdf/1.3/}% \hyxmp@declare@property {Trapped}% {internal}% {Indication if the document has been modified to include trapping information}% \hyxmp@end@ext@decl }% \newcommand*{\hyxmp@mm@extensions}{% \hyxmp@begin@ext@decl {XMP Media Management Schema}% {xmpMM}% {http://ns.adobe.com/xap/1.0/mm/}% \hyxmp@declare@property [URI] {DocumentID}% {internal}% {UUID based identifier for all versions and renditions of a document}% \hyxmp@declare@property [URI] {InstanceID}% {internal}% {UUID based identifier for specific incarnation of a document}% \hyxmp@declare@property {VersionID}% {internal}% {Document version identifier}% \hyxmp@declare@property [RenditionClass]% {RenditionClass}% {internal}% {The manner in which a document is rendered}% \hyxmp@end@ext@decl }% \newcommand*{\hyxmp@pdfa@id@extensions}{% \hyxmp@begin@ext@decl {PDF/A Identification Schema}% {pdfaid}% {http://www.aiim.org/pdfa/ns/id/}% \hyxmp@declare@property [Integer]% {part}% {internal}% {Part of PDF/A standard}% \hyxmp@declare@property {conformance}% {internal}% {Conformance level of PDF/A standard}% \hyxmp@end@ext@decl }% \newcommand*{\hyxmp@pdfua@id@extensions}{% \hyxmp@begin@ext@decl {PDF/UA Universal Accessibility Schema}% {pdfuaid}% {http://www.aiim.org/pdfua/ns/id/}% \hyxmp@declare@property [Integer]% {part}% {internal}% {Part of ISO 14289 standard}% \hyxmp@end@ext@decl }% \newcommand*{\hyxmp@pdfx@id@extensions}{% \ifx\hyxmp@pdfx@major\empty \else \hyxmp@begin@ext@decl {Adobe Document Info PDF/X eXtension Schema}% {pdfx}% {http://ns.adobe.com/pdfx/1.3/}% \hyxmp@declare@property {GTS_PDFXVersion}% {internal}% {ID of PDF/X standard}% \hyxmp@declare@property {GTS_PDFXConformance}% {internal}% {Conformance level of PDF/X standard}% \hyxmp@end@ext@decl \fi \@hyxmp@count=0\hyxmp@pdfx@major\relax \ifnum\@hyxmp@count>3 \hyxmp@begin@ext@decl {PDF/X ID Schema}% {pdfxid}% {http://www.npes.org/pdfx/ns/id/}% \hyxmp@declare@property {GTS_PDFXVersion}% {internal}% {ID of PDF/X standard}% \hyxmp@end@ext@decl \fi }% \newcommand*{\hyxmp@iptc@extensions}{% \hyxmp@begin@ext@decl {IPTC Core Schema}% {Iptc4xmpCore}% {http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/}% \hyxmp@declare@property [ContactInfo] {CreatorContactInfo} {external} {Document creator's contact information} \hyxmp@add@to@xml{% ______________^^J% ____________^^J% ____________^^J% ______________^^J% ________________^^J% __________________ContactInfo^^J% __________________http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/^^J% __________________Iptc4xmpCore^^J% __________________% Basic set of information to get in contact with a person% ^^J% __________________^^J% ____________________^^J% }% \hyxmp@declare@field {CiAdrCity}% {Contact information city}% \hyxmp@declare@field {CiAdrCtry}% {Contact information country}% \hyxmp@declare@field {CiAdrExtadr}% {Contact information address}% \hyxmp@declare@field {CiAdrPcode}% {Contact information local postal code}% \hyxmp@declare@field {CiAdrRegion}% {Contact information regional information such as state or province}% \hyxmp@declare@field {CiEmailWork}% {Contact information email address(es)}% \hyxmp@declare@field {CiTelWork}% {Contact information telephone number(s)}% \hyxmp@declare@field {CiUrlWork}% {Contact information Web URL(s)}% \hyxmp@add@to@xml{% ____________________^^J% __________________^^J% ________________^^J% ______________^^J% ____________^^J% __________^^J% }% } \newcommand*{\hyxmp@prism@extensions}{% \hyxmp@begin@ext@decl {PRISM Basic Metadata}% {prism}% {http://prismstandard.org/namespaces/basic/3.0/}% \hyxmp@declare@property {complianceProfile}% {internal}% {PRISM specification compliance profile to which this document adheres}% \hyxmp@declare@property {publicationName}% {external}% {Publication name}% \hyxmp@declare@property {aggregationType}% {external}% {Publication type}% \hyxmp@declare@property {bookEdition}% {external}% {Edition of the book in which the document was published}% \hyxmp@declare@property {volume}% {external}% {Publication volume number}% \hyxmp@declare@property {number}% {external}% {Publication issue number within a volume}% \hyxmp@declare@property {pageRange}% {external}% {Page range for the document within the print version of its publication}% \hyxmp@declare@property {issn}% {external}% {ISSN for the printed publication in which the document was published}% \hyxmp@declare@property {eIssn}% {external}% {ISSN for the electronic publication in which the document was published}% \hyxmp@declare@property {isbn}% {external}% {ISBN for the publication in which the document was published}% \hyxmp@declare@property {doi}% {external}% {Digital Object Identifier for the document}% \hyxmp@declare@property [URL] {url}% {external}% {URL at which the document can be found}% \hyxmp@declare@property [Integer] {byteCount}% {internal}% {Approximate file size in octets}% \hyxmp@declare@property [Integer] {pageCount}% {internal}% {Number of pages in the print version of the document}% \hyxmp@declare@property {subtitle}% {external}% {Document's subtitle}% \hyxmp@end@ext@decl }% \newcommand*{\hyxmp@jav@extensions}{% \hyxmp@begin@ext@decl {NISO/ALPSP Journal Article Versions}% {jav}% {http://www.niso.org/schemas/jav/1.0/}% \hyxmp@declare@property [Closed Choice of Text]% {journal_article_version}% {external}% {Article status, one of "AO", "SMUR", "AM", "P", "VoR", "CVoR", or "EVoR"}% \hyxmp@end@ext@decl }% \newcommand*{\hyxmp@declare@extensions}{% \hyxmp@begin@extension@decls \hyxmp@pdf@extensions \hyxmp@mm@extensions \ifHy@pdfa \hyxmp@pdfa@id@extensions \fi \ifx\@pdfuapart\@empty \else \hyxmp@pdfua@id@extensions \fi \ifx\@pdfxversion\@empty \else \hyxmp@pdfx@id@extensions \fi \ifx\hyxmp@iptc@data\@empty \else \hyxmp@iptc@extensions \fi \ifx\hyxmp@prism@data\@empty \else \hyxmp@prism@extensions \fi \ifx\hyxmp@jav@data\@empty \else \hyxmp@jav@extensions \fi \hyxmp@end@extension@decls } \begingroup \ifhyxmp@unicodetex \lccode`\!="FEFF % \lowercase{% \gdef\hyxmp@bom{!} }% \else \catcode`\^^ef=12 \catcode`\^^bb=12 \catcode`\^^bf=12 \gdef\hyxmp@bom{^^ef^^bb^^bf}% \fi \endgroup \def\hyxmp@construct@packet{% \gdef\hyxmp@xml{}% \hyxmp@add@to@xml{^^J% ^^J% __^^J% ____3 \hyxmp@add@to@xml{% _____________________xmlns:pdfxid="http://www.npes.org/pdfx/ns/id/"^^J% }% \fi \hyxmp@add@to@xml{% _____________________xmlns:prism="http://prismstandard.org/namespaces/basic/3.0/"^^J% _____________________xmlns:jav="http://www.niso.org/schemas/jav/1.0/"^^J% _____________________xmlns:xmpTPg="http://ns.adobe.com/xap/1.0/t/pg/"^^J% _____________________xmlns:stFnt="http://ns.adobe.com/xap/1.0/sType/Font\hyxmp@hash"^^J% _____________________xmlns:Iptc4xmpCore="http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/"^^J% _____________________xmlns:pdfaExtension="http://www.aiim.org/pdfa/ns/extension/"^^J% _____________________xmlns:pdfaSchema="http://www.aiim.org/pdfa/ns/schema\hyxmp@hash"^^J% _____________________xmlns:pdfaProperty="http://www.aiim.org/pdfa/ns/property\hyxmp@hash"^^J% _____________________xmlns:pdfaType="http://www.aiim.org/pdfa/ns/type\hyxmp@hash"^^J% _____________________xmlns:pdfaField="http://www.aiim.org/pdfa/ns/field\hyxmp@hash">^^J% }% \hyxmp@check@iptc@data \hyxmp@check@prism@data \hyxmp@check@jav@data \hyxmp@declare@extensions \hyxmp@pdf@schema \hyxmp@xmpRights@schema \hyxmp@dc@schema \hyxmp@photoshop@schema \hyxmp@xmp@basic@schema \hyxmp@pdfa@id@schema \hyxmp@pdfua@id@schema \hyxmp@pdfx@id@schema \hyxmp@mm@schema \hyxmp@iptc@schema \hyxmp@prism@schema \hyxmp@jav@schema \hyxmp@xmptpg@schema \hyxmp@add@to@xml{% ____^^J% __^^J% ^^J% \hyxmp@padding ^^J% }% } \newcommand*{\hyxmp@embed@packet}{% \hyxmp@construct@packet \def\hyxmp@driver{hpdftex}% \ifx\hyxmp@driver\Hy@driver \hyxmp@embed@packet@pdftex \else \def\hyxmp@driver{hluatex}% \ifx\hyxmp@driver\Hy@driver \hyxmp@embed@packet@luatex \else \def\hyxmp@driver{hdvipdfm}% \ifx\hyxmp@driver\Hy@driver \hyxmp@embed@packet@dvipdfm \else \def\hyxmp@driver{hxetex}% \ifx\hyxmp@driver\Hy@driver \hyxmp@embed@packet@xetex \else \@ifundefined{pdfmark}{% \PackageWarningNoLine{hyperxmp}{% Unrecognized hyperref driver `\Hy@driver'.\MessageBreak \hyxmp@jobname.tex's XMP metadata will *not* be\MessageBreak embedded in the resulting file}% }{% \hyxmp@embed@packet@pdfmark }% \fi \fi \fi \fi } \RequirePackage{ifluatex} \newcommand*{\hyxmp@embed@packet@pdftex}{% \bgroup \ifluatex \else \pdfcompresslevel=0 \fi \immediate\pdfobj \ifluatex uncompressed\fi stream attr {% /Type /Metadata /Subtype /XML }{\hyxmp@xml}% \pdfcatalog {/Metadata \the\pdflastobj\space 0 R}% \egroup } \newcommand*{\hyxmp@embed@packet@luatex}{% \immediate\pdfextension obj uncompressed stream attr {% /Type /Metadata /Subtype /XML }{\hyxmp@xml}% \pdfextension catalog {/Metadata \the\numexpr\pdffeedback lastobj\relax\space 0 R}% } \newcommand*{\hyxmp@embed@packet@pdfmark}{% \pdfmark{% pdfmark=/NamespacePush }% \pdfmark{% pdfmark=/OBJ, Raw={/_objdef \string{hyxmp@Metadata\string} /type /stream}% }% \pdfmark{% pdfmark=/PUT, Raw={\string{hyxmp@Metadata\string} 2 dict begin /Type /Metadata def /Subtype /XML def currentdict end }% }% \pdfmark{% pdfmark=/PUT, Raw={\string{hyxmp@Metadata\string} (\hyxmp@xml)}% }% \pdfmark{% pdfmark=/Metadata, Raw={\string{Catalog\string} \string{hyxmp@Metadata\string}}% }% \pdfmark{% pdfmark=/NamespacePop }% } \newcommand*{\hyxmp@embed@packet@dvipdfm}{% \hyxmp@string@len{\hyxmp@xml}% \special{pdf: object @hyxmp@Metadata << /Type /Metadata /Subtype /XML /Length \the\@hyxmp@count >> stream^^J\hyxmp@xml endstream% }% \special{pdf: docview << /Metadata @hyxmp@Metadata >> }% } \newcommand*{\hyxmp@string@len}[1]{% \@hyxmp@count=0 \expandafter\hyxmp@count@spaces#1 {} % \expandafter\hyxmp@count@non@spaces#1{}% } \def\hyxmp@count@spaces#1 {% \def\hyxmp@one@token{#1}% \ifx\hyxmp@one@token\@empty \advance\@hyxmp@count by -1 \else \advance\@hyxmp@count by 1 \expandafter\hyxmp@count@spaces \fi } \newcommand*{\hyxmp@count@non@spaces}[1]{% \def\hyxmp@one@token{#1}% \ifx\hyxmp@one@token\@empty \else \advance\@hyxmp@count by 1 \expandafter\hyxmp@count@non@spaces \fi } \newcommand*{\hyxmp@embed@packet@xetex}{% \special{pdf:stream @hyxmp@Metadata (\hyxmp@xml) << /Type /Metadata /Subtype /XML >> }% \special{pdf:put @catalog << /Metadata @hyxmp@Metadata >> }% } \the\hyxmp@aep@toks \catcode`\"=\hyxmp@dq@code \endinput %% %% End of file `hyperxmp.sty'.