summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/moderncv
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/moderncv
Initial commit
Diffstat (limited to 'macros/latex/contrib/moderncv')
-rw-r--r--macros/latex/contrib/moderncv/CHANGELOG371
-rw-r--r--macros/latex/contrib/moderncv/KNOWN_BUGS15
-rw-r--r--macros/latex/contrib/moderncv/README16
-rw-r--r--macros/latex/contrib/moderncv/examples/Makefile18
-rw-r--r--macros/latex/contrib/moderncv/examples/picture.eps958
-rw-r--r--macros/latex/contrib/moderncv/examples/picture.jpgbin0 -> 1645 bytes
-rw-r--r--macros/latex/contrib/moderncv/examples/publications.bib44
-rw-r--r--macros/latex/contrib/moderncv/examples/template-es.pdfbin0 -> 36050 bytes
-rw-r--r--macros/latex/contrib/moderncv/examples/template-es.tex131
-rw-r--r--macros/latex/contrib/moderncv/examples/template-multibib.pdfbin0 -> 99683 bytes
-rw-r--r--macros/latex/contrib/moderncv/examples/template-multibib.tex165
-rw-r--r--macros/latex/contrib/moderncv/examples/template-zh.pdfbin0 -> 239848 bytes
-rw-r--r--macros/latex/contrib/moderncv/examples/template-zh.tex130
-rw-r--r--macros/latex/contrib/moderncv/examples/template.tex165
-rw-r--r--macros/latex/contrib/moderncv/examples/template_banking_red-fullrules-center.pdfbin0 -> 108721 bytes
-rw-r--r--macros/latex/contrib/moderncv/examples/template_banking_red-norules.pdfbin0 -> 91945 bytes
-rw-r--r--macros/latex/contrib/moderncv/examples/template_banking_red-shortrules-right.pdfbin0 -> 105870 bytes
-rw-r--r--macros/latex/contrib/moderncv/examples/template_banking_red.pdfbin0 -> 108599 bytes
-rw-r--r--macros/latex/contrib/moderncv/examples/template_casual_orange-left.pdfbin0 -> 99448 bytes
-rw-r--r--macros/latex/contrib/moderncv/examples/template_casual_orange.pdfbin0 -> 99451 bytes
-rw-r--r--macros/latex/contrib/moderncv/examples/template_classic_green-right.pdfbin0 -> 279661 bytes
-rw-r--r--macros/latex/contrib/moderncv/examples/template_classic_green.pdfbin0 -> 279661 bytes
-rw-r--r--macros/latex/contrib/moderncv/examples/template_fancy_purple.pdfbin0 -> 90269 bytes
-rw-r--r--macros/latex/contrib/moderncv/examples/template_oldstyle_grey.pdfbin0 -> 70822 bytes
-rw-r--r--macros/latex/contrib/moderncv/moderncv.cls691
-rw-r--r--macros/latex/contrib/moderncv/moderncvbodyi.sty174
-rw-r--r--macros/latex/contrib/moderncv/moderncvbodyii.sty174
-rw-r--r--macros/latex/contrib/moderncv/moderncvbodyiii.sty238
-rw-r--r--macros/latex/contrib/moderncv/moderncvbodyiv.sty183
-rw-r--r--macros/latex/contrib/moderncv/moderncvbodyv.sty210
-rw-r--r--macros/latex/contrib/moderncv/moderncvcollection.sty85
-rw-r--r--macros/latex/contrib/moderncv/moderncvcolorblack.sty27
-rw-r--r--macros/latex/contrib/moderncv/moderncvcolorblue.sty27
-rw-r--r--macros/latex/contrib/moderncv/moderncvcolorburgundy.sty27
-rw-r--r--macros/latex/contrib/moderncv/moderncvcolorgreen.sty27
-rw-r--r--macros/latex/contrib/moderncv/moderncvcolorgrey.sty27
-rw-r--r--macros/latex/contrib/moderncv/moderncvcolororange.sty27
-rw-r--r--macros/latex/contrib/moderncv/moderncvcolorpurple.sty27
-rw-r--r--macros/latex/contrib/moderncv/moderncvcolorred.sty27
-rw-r--r--macros/latex/contrib/moderncv/moderncvcompatibility.sty104
-rw-r--r--macros/latex/contrib/moderncv/moderncvdebugtools.sty54
-rw-r--r--macros/latex/contrib/moderncv/moderncvfooti.sty134
-rw-r--r--macros/latex/contrib/moderncv/moderncvheadi.sty187
-rw-r--r--macros/latex/contrib/moderncv/moderncvheadii.sty205
-rw-r--r--macros/latex/contrib/moderncv/moderncvheadiii.sty157
-rw-r--r--macros/latex/contrib/moderncv/moderncvheadiv.sty168
-rw-r--r--macros/latex/contrib/moderncv/moderncvheadv.sty170
-rw-r--r--macros/latex/contrib/moderncv/moderncvheadvi.sty168
-rw-r--r--macros/latex/contrib/moderncv/moderncviconsawesome.sty44
-rw-r--r--macros/latex/contrib/moderncv/moderncviconsletters.sty53
-rw-r--r--macros/latex/contrib/moderncv/moderncviconsmarvosym.sty230
-rw-r--r--macros/latex/contrib/moderncv/moderncvstylebanking.sty65
-rw-r--r--macros/latex/contrib/moderncv/moderncvstylecasual.sty53
-rw-r--r--macros/latex/contrib/moderncv/moderncvstyleclassic.sty52
-rw-r--r--macros/latex/contrib/moderncv/moderncvstyleempty.sty34
-rw-r--r--macros/latex/contrib/moderncv/moderncvstylefancy.sty47
-rw-r--r--macros/latex/contrib/moderncv/moderncvstyleoldstyle.sty51
-rw-r--r--macros/latex/contrib/moderncv/tweaklist.sty56
58 files changed, 6016 insertions, 0 deletions
diff --git a/macros/latex/contrib/moderncv/CHANGELOG b/macros/latex/contrib/moderncv/CHANGELOG
new file mode 100644
index 0000000000..8e300badd1
--- /dev/null
+++ b/macros/latex/contrib/moderncv/CHANGELOG
@@ -0,0 +1,371 @@
+version 2.0.0 (28 Jul 2015)
+ - refactored the code into heads, body, foot and icon substyles. All styles
+ (classic, casual, banking and oldstyle) are just a combination of these and
+ some font selection. Mixing substyles (e.g., the banking header with the
+ classic body) is now trivial by using the \moderncvhead, \moderncvbody,
+ \moderncvfoot and \moderncvicons commands. Each of these take a substyle number
+ as argument. \moderncvcolor takes a color name as argument.
+ - added a new style, "fancy".
+ - added an optional argument to \moderncvstyle to specify style options, i.e.
+ \moderncvstyle[options]{style}. Below is a list of the available options per
+ style:
+ * classic
+ > to specify of one's name should appear left or right at the top: "left"
+ (default) or "right;
+ * casual
+ > to specify of one's name should appear left or right at the top: "left"
+ (default) or "right;
+ * banking
+ > to specify how the section- and subsectionrules should be set:
+ "fullrules", "shortrules", "mixedrules" (default; full rules for sections,
+ short rules for subsections), "centered" (fullrules with centered title)
+ and "norules" (norules, small caps font);
+ > to specify how the body should be aligned: left" (default), "center" or
+ "right";
+ * oldstyle & fancy
+ n/a
+ - added a new color variant: "burgundy".
+ - corrected the color of \addressstyle to match the one effectively used
+ (color2).
+ - adjusted the bibliography spacing to handle entries with or without labels.
+ - added a check on the emptyness of \title when setting the hyperref document
+ properties.
+
+version 1.5.1 (29 Apr 2013)
+ - made sure that XeLaTeX or LuaLaTeX is in use before loading the awesome icon
+ set and if not, revert to the marvosym icon set.
+
+version 1.5.0 (23 Apr 2013)
+ - added a command to showcase social accounts in one's personal information:
+ \social. The command currently handles automatically LinkedIn, Twitter and
+ Github accounts, and other links can be provided explicitly.
+ - added a new icon set: "awesome" (using the icons from the Font Awesome font).
+ - set the "awesome" icon set as the default for the "casual" and "banking"
+ style variants (can be changed back with \moderncvicons{marvosym}).
+ - forced all the icons of the "letters" icon set to be of the same width, for
+ alignment purpose.
+ - added a letter icon ("W") for the homepage of the "letters" icon set.
+ - forced some white space between the main text and the footer of the "casual"
+ style variant.
+ - removed the rule below the headings of the cvcolumns environment.
+
+version 1.4.0 (28 Mar 2013)
+ - deprecated \phone, \mobile and \fax in favour of \phone[<type>], where <type>
+ can be "fixed" (default), "mobile" or "fax". As part of the change, one can now
+ use each of these multiple times, to e.g. display multiple mobile phone numbers.
+ - deprecated \firstname and \familyname in favour of \name{<first>}{<last>}.
+ - added a new mechanism to select amongs different possible icon sets:
+ \moderncvicons{<iconsetname>}, where <iconsetname> can be "marvosym" (used by
+ default in the "banking", "casual" and "classic" style variants) or "letters"
+ (used by default in the "oldstyle" style variant). \moderncvicons should
+ always be called after \moderncvstyle in order to override the style variants
+ defaults.
+ - added a command to control the font of the page numbering: \pagenumberfont,
+ as requested by fr1a1nky (launchpad question #224496).
+ - removed the use of the suffix package.
+
+version 1.3.0 (09 Feb 2013)
+ - added a new environment to create multiple columns: cvcolumns. Each column
+ is then created by \cvcolumn[width]{header}{content}, where the optional width
+ is given as a fraction of the total width (between 0 and 1). The header and
+ content are robust and can contain any paragraph command (e.g., a nest itemize
+ environment).
+ - added a macro (\pdfpagemode) to control what is visible upon opening compiled
+ pdfs (assuming pdf reader support), as suggested by U. Stöhr.
+ Possible values include: "UseNone" (only the document), "UseThumbs" (show
+ thumbnails), "UseOutlines" (show bookmarks) and "FullScreen" (open in
+ fullscreen mode).
+ - added a 3rd, fully optional (can be omitted or left blank) argument to
+ \address to specify a country, as requested on launchpad (launchpad bug
+ #1063995).
+ - compacted list environments further.
+ - replaced the use of the xargs package by the xparse one.
+
+version 1.2.1 (04 Dec 2012)
+ - fixed a regression bug introduced in version 1.2.0 in the header of the
+ "banking" style when no title is used, as reported on tex.stackexchange
+ (question #85427).
+
+version 1.2.0 (31 Oct 2012)
+ - updated the "banking" style header to include the option to show a title.
+ - set the values of \arrayrulewidth and \doublerulesep to their standard values
+ (0.4pt and 2pt resp.) to enable the drawing of rules in tabulars and arrays by
+ default.
+ - modified the code of \makecvtitle and \makelettertitle of the "casual" style
+ to avoid it to cause horizontal alignment issues after and before itself.
+ - corrected a bug in \makelettertitle of most styles that displayed the current
+ date (\today) instead of the date given through the \date command, as reported
+ by B. Schlimmchen and S. Fnord.
+ - removed the need to set pdfpagelabels=false when loading hyperref, by putting
+ \pagenumbering{arabic} (to define \thepage) before loading hyperref, as figured
+ out by J. Wolf.
+ - corrected the line wrapping of \cvlistitem of the "banking" style.
+ - corrected a bug in \makecvtitle and \makelettertitle of the "banking" style.
+ - removed an unwanted space in the footer of the "casual" style.
+ - moved the font style definitions to moderncv.cls for better readability
+ (moderncv.cls is meant to be a sort of header file, implementing only some
+ macros shared by all styles and defining the macros that the style files need
+ to implement).
+
+version 1.1.3 (10 Aug 2012)
+ - corrected a longstanding issue causing hyperref to issue two warnings
+ regarding its "pdfpagelabels" option, as pointed out and solved by P. Leifeld
+ (launchpad bug #1035466).
+
+version 1.1.2 (09 Aug 2012)
+ - fixed a regression bug introduced in version 1.0.0 in the footer of the
+ "casual" style, as discovered on tex.stackexchange (question #66316).
+
+version 1.1.1 (30 Jul 2012)
+ - fixed a compatibility issue introduced in version 1.0.0 when
+ \maketitlenamewidth was renamed to \makecvtitlenamewidth, as reported by Peppe
+ on launchpad (launchpad bug #1030802). The template now correctly uses
+ \makecvtitlenamewidth, and \maketitlenamewidth was created as an alias for
+ backward compatibility.
+
+version 1.1.0 (29 Jul 2012)
+ - fixed the switching from letter to resume, correcting spacing errors when a
+ letter is typeset before the resume, as noticed by U. Gabor.
+ - fixed the vertical alignment of the footers, as reported by T. Homa.
+ Footers are now aligned to the bottom and the letter and cv footers are
+ perfectly aligned in the "casual" style.
+ - prepared moderncv for fontspec font loading (still commented in code).
+ - changed the handling of the "sans" and "roman" class options, to be reflected
+ at the beginning of the document and override style font choices.
+ - turned unicode support in hyperref on by default.
+ - tweaked the use of \textbullet to avoid the fall-back to Computer Modern
+ fonts and prepared the use of symbols from the MarVoSym font for fontspec
+ (LauLaTeX or XeLaTeX).
+ - tweaked the \subsectionfill of the "banking" style to distribute extra space
+ evenly between leaders.
+ - added two options to change the "Enclosure" string used for the letter
+ enclosure: either specify another string as optional argument to \enclosure,
+ or redefine \enclname, as suggested by D. Wille.
+
+version 1.0.0 (26 Mar 2012)
+ - added commands to generate letters for every resume style: \recipient, \date,
+ \opening, \closing, \enclosure, \makelettertitle and \makeletterclosing. The
+ old \maketitle and \makefooter commands are now deprecated and replaced by
+ \makecvtitle and \makecvfooter.
+ - changed the alignment algorithm for the personal data display in the oldstyle
+ style, as to align on the baseline of the first line with the surrounding text.
+
+version 0.19.0 (06 Feb 2012)
+ - reintroduced the ability to force the width reserved to display the name
+ in the resume header for the classic style (\maketitlenamewidth).
+ - improved the pdf metadata, as reported by S. Wunsch (launchpad bug #922476).
+ - fixed a footersymbol bug in the casual style when no mobile number was given,
+ as reported by S. Wunsch (launchpad bug #922470).
+ - fixed a display bug when an address was given without postcode/city, as
+ reported by O. Shaneh (launchpad bug #670263).
+
+version 0.18.0 (05 Feb 2012)
+ - corrected the handling of pdf bookmarks, as suggested on stackexchange by
+ U. Fischer.
+ - improved the spacing between sections and subsections by using \addvspace
+ instead of \vspace.
+ - corrected the spacing between entries with nested itemize environments
+ (temporary solution working only for single line items).
+ - added a check in the oldstyle style for an empty 4th argument in the
+ \cvdoubleitem definition, to avoid printing a colon without preceding label.
+ - added a new style on top of classic, casual and oldstyle: banking.
+
+version 0.17.0 (25 Jan 2012)
+ - changed the footer algorithm of style casual to avoid starting lines with
+ the footer symbol.
+ - aligned the space before and after the title across styles.
+ - added an optional title to the casual style.
+ - changed the definition of the font styles to avoid undesired extra spacing.
+ - added a Spanish template, kindly provided by I. Buitrón.
+ - corrected the vertical misalignment between the page number and the center
+ footer in the casual style.
+
+version 0.16.0 (15 Jan 2012)
+ - added starred versions of \section and \subsection (that are identical to
+ their non-starred version, to e.g. enable biblatex support as requested by
+ S. Verberkt (launchpad bug #913102).
+ - corrected a misalignment of the colored rule in front of the section titles
+ in the classic and casual styles, as reported by P. Neidhardt (launchpad bug
+ #915910).
+
+version 0.15.1 (23 December 2011)
+ - corrected a bug in the classic style causing the address font and color not
+ being carried over newlines, as reported by J. Smith.
+
+version 0.15.0 (19 December 2011)
+ - corrected list spacing.
+ - corrected inconsistent use of sans serif fonts in roman layout option.
+ - the lmodern fonts are now automatically loaded only if installed on the
+ system. The "nolmodern" option is now therefore obsolete.
+ - complete code refactoring separating themes in separate styles and colors.
+ - renamed \cvline to \cvitem, \cvlanguage to \cvitemwithcomment and \cvcomputer
+ to \cvdoubleitem (the old command name still work and redirect to the new ones,
+ but are deprecated).
+ - removed the arbitrary minipage widths of skill proficiency vs comment in
+ \cvitemwithcomments. The skill proficiency is now typeset exactly as given
+ (i.e. one one line if no linebreaks are implicitly given) and the comment uses
+ the remaining horizontal space.
+ - changed the optional argument of \cvlistitem and \cvlistdoubleitem to specify
+ the vertical skip after the item (as for \cvitem, cvitemwithcomments, etc).
+ The way to change the list symbol is to redefine \listitemsymbol.
+ - added a new style on top of classic and casual: oldstyle.
+ - loaded the microtype package to improve typography.
+
+version 0.14.0 (04 December 2011)
+ - added support for CJK, thanks to the help of P. D'Apice.
+ - the use of \recomputelengths after modifying any length in the preamble is
+ now unnecessary; \recomputelength is automatically called at the start of the
+ document.
+
+version 0.13.1 (11 November 2011)
+ - corrected a bug introduced by v0.13 in the classic style when no \photo is
+ used, as reported by S. Gislais (launchpad bug #888702).
+
+version 0.13.0 (06 November 2011)
+ - added a "black" color option to render the resume in black & white, as
+ suggested by F. Bicarri.
+ - removed the pdflatex option when loading hyperref to enable other engines
+ (e.g., dvips, xetex), leftover from the v 0.11 cleanup, as reported by
+ K. Amaterasu and P. Mavrogiorgos (launchpad bugs #754693 and #859834).
+ - added a "purple" color option, as proposed by B. Ravel.
+ - added a 3rd optional argument to the \photo command to control the thickness
+ of the framebox. Setting it to 0pt will disable the frame around the photo, as
+ requested by T. Krennwallner (launchpad bug #664568).
+
+version 0.12.0 (03 August 2010)
+ - prevented pagebreaks after sections and subsections (launchpad bug #409902),
+ as originally reported by C. Gaspoz and fixed by launchpad user tentotwo).
+
+version 0.11.0 (20 July 2010)
+ - removed the \ifpdf check when loading the graphicx package, as graphicx does
+ does check internally and this was preventing proper functionning with xelatex
+ and luatex, as reported by A. Trautmann. The same check was also removed
+ everywhere else in the document (i.e. when loading the color and hyperref
+ packages).
+
+version 0.10.0 (13 June 2010)
+ - fixed a compatibility issue with the natbib package (natbib uses \section*
+ to format the bibliography title, while only \section was defined by
+ moderncv), as reported on launchpad (launchpad bug #393920).
+ - fixed a compatibility issues with (any package relying on) the etoolbox
+ package, due to the double definition of \AtEndPreamble, as reported by
+ D. Becker.
+
+version 0.9.0 (31 May 2010)
+ - added support for the itemize, enumerate and description environments.
+
+version 0.8.0 (24 May 2010)
+ - added support for multibib. Also modified the template to illustrate how to
+ show labels in the bibliography, as requested by Tom D. R. and Stefan K.
+ - added a command to indicate your personal homepage (\homepage{url}), as
+ requested by J. de Jong and A. Pairet.
+ - corrected an alignment bug for text following a \quote with no immediate
+ \section, as kindly reported by J. Vermeulen and L. Saliou.
+ - corrected a spacing bug when no blank line (or \par) is left after
+ \maketitle. Thanks to A. Menzel for reporting the strange behaviour.
+ - corrected the alignment of the extrainfo title part when no picture was
+ used, as reported by M. Bana.
+ - corrected the missplacement of pdf bookmarks as noticed by L. Fortunato.
+ - corrected several bugs linked to the code for checking for empty arguments
+ in \cventry, as reported by B. Ekran (launchpad bug #268768), L. Păncescu and
+ E. Gregorio.
+
+version 0.7.0 (17 June 2008)
+ - corrected an outstanding spacing bug (space between cvlines longer
+ than 1 line).
+ - removed the need to use \closesection and \emptysection as internal
+ tabulars are now always closed. This allows she use of bibliography packages
+ such as bibunits. Thanks to S. Busch for pointing out the incompatibility and
+ helping testing out the bug correction.
+ - changed the definition of \photo: the first (optional) argument should
+ give the desired width of the picture, instead of its height
+ - corrected an alignment bug for \cvlistitems longer than 1 line, as
+ reported by S. Nikolopoulos.
+ - deprecated the commands \sethintscolumnlength and \sethintscolumntowidth.
+ Instead, just set \hintscolumnwidth to the desired length by using the regular
+ \setlength or \settowidth commands, and call \recomputelengths.
+ - added the ability to control the width of the name placeholder in the
+ classic theme, by setting the length \maketitlenamewidth. Again, don't forget
+ to call \recomputelengths afterward.
+
+version 0.6.0 (28 May 2007)
+ - corrected some spacing bugs and cleaned up the code.
+ - corrected a bug in the bibliography file of the examples spotted by
+ U. Stöhr.
+ - added color variants to the classic and casual style, as suggested by
+ U. Stöhr.
+ - added a page counter for resumes running longer than 1 page, as requested by
+ A. Martin. It can be disabled by the command \nopagenumbers{}.
+ - added commands to include a mobile phone and fax number.
+ - made the symbols used for the phone number, the email, ... customizable.
+ To modify those symbols, just redefine \phonesymbol, emailsymbol, ...
+ - corrected the pdf information given to hyperref as pointed out by
+ C. Knuepfer.
+ - rewrote the examples.
+
+version 0.5.0 (9 September 2006)
+ - added a \photo command to display a picture. That command takes the name of
+ the file with the picture as argument, and the desired height as optional
+ argument.
+ - implemented the needed commands to make moderncv compatible with BibTeX, as
+ suggested by J. Lie. This makes it possible to display one's publications,
+ stored in the BibTeX file 'publications.bib'
+ by using:
+ \nocite{*}
+ \bibliographystyle{plain}
+ \bibliography{publications}
+ As usual, the name of the section title can be changed by redefining the
+ command \refname.
+ - added the \today command, useful for example if one need to add the date the
+ resumé was produced with
+ \closesection{}
+ \vfill{\hfill{\scriptsize Produced \today.}}
+ at the end of your CV, as suggested by F. Hammann.
+
+version 0.4.0 (2 May 2006)
+ - removed the dependency on the geometry package, so that users can now invoke
+ it themselve, and easily change the geometry of the page.
+
+version 0.3.0 (10 April 2006)
+ - moderncv now uses the 'longtable' class, allowing cv sections to split
+ across multiple pages.
+ - the different lengths used by moderncv are now customizable! In particular,
+ the first column (the one containing the date in the examples), can now be set
+ to any width, for people needing a smaller or larger one. To do that, either
+ use
+ \sethintscolumnlength{<length>},
+ where <length> is the desired length in a unit LaTeX understands, or
+ \sethintscolumntowidth{<string>},
+ where <string> is a string of the desired length (usually, the longest string
+ that has to appear in the column). Thanks to A. Pöge for pointing out the need
+ of such a feature.
+ - added the command \emptysection{}, which makes it possible to start a
+ section without name. In combination with \closesection{}, this makes it
+ possible to drop out of the layout of moderncv, and come back to it later.
+ This should make the inclusion of arbitrary elements not covered by moderncv
+ code possible.
+ - corrected a spacing problem in the cventry command, as pointed out and
+ solved by B. Eßmann.
+
+version 0.2.0 (6 March 2006)
+ - rewrite of the code to have the styles (fonts, colours, headers and footers)
+ be defined in different files than the class. The styles are now defined in a
+ separate file per style, named moderncvstyle<style_name>. It should now be
+ easy to write your own style, starting from moderncvstyleempty.sty. If you
+ feel you have created a nice style, just email it to me and I'll include it in
+ the next version.
+ - due to the previous point, styles are now loaded by the command
+ \moderncvstyle{style_name}. I couldn't figure out a way to preserve the old
+ "casual" and "classic" class options, so these are now broken! Use
+ \moderncvstyle{casual} or \moderncvstyle{classic} at the beginning of your
+ document. This should be the only incompatibility with version 0.1.
+ - added class option "nolmodern" for people without the latin modern fonts.
+ - corrected some English mistakes in the examples. Thanks to M. H. Prager for
+ pointing them out.
+ - added a \cvlistitem to produce items with a bullet (or whatever is defined
+ in \listitemsymbol), and renamed \cvresume to \cvlistdoubleitem for
+ consistency purpose. For compatibility reasons, the command \cvresume still
+ works, but should be avoided.
+
+version 0.1.0 (1 March 2006)
+ - first release.
diff --git a/macros/latex/contrib/moderncv/KNOWN_BUGS b/macros/latex/contrib/moderncv/KNOWN_BUGS
new file mode 100644
index 0000000000..6566076706
--- /dev/null
+++ b/macros/latex/contrib/moderncv/KNOWN_BUGS
@@ -0,0 +1,15 @@
+- When using the "fancy" style, undesired space is added between the bibliography
+ head and the first entry, as well as after the last entry
+- Moderncv is incompatible with biblatex.
+- Footnotes generates errors (though the output seem correct when running with
+ "-interaction=nonstopmode")
+- When using CJK, the last \clearpage required for fancyhdr to work properly kills
+ the "lastpage" counter, hence also the page numbering.
+- Moderncv produces an error ("lonely \item--perhaps a missing list environment")
+ when used with bibentry, through the output is actually correct. Amongst other,
+ this causes compilation by LyX to stop.
+- The space after a cventry gets eaten up when the last argument contains a nested
+ itemize environment. An ugly hack and uncomplete solution was implemented by
+ including a \strut in every item label, but this doesn't solve the problem for
+ multi-line items. Ideally, the strut should end the item, but there seem to be
+ no way to do this.
diff --git a/macros/latex/contrib/moderncv/README b/macros/latex/contrib/moderncv/README
new file mode 100644
index 0000000000..3f17b081ac
--- /dev/null
+++ b/macros/latex/contrib/moderncv/README
@@ -0,0 +1,16 @@
+moderncv -- a modern curriculum vitae class
+
+Moderncv provides a documentclass for typesetting curricula vitae in various
+styles. Moderncv aims to be both straightforward to use and customizable,
+providing four ready-made styles (classic, casual, banking and oldstyle)
+and allowing one to define his own by modifying colors, fonts, icons, etc.
+
+Most commands are defined in such a way that arguments are optional.
+
+Until a decent manual is written, one can always look in the "examples"
+directory for some examples. Documents can be compiled into dvi, ps or pdf.
+
+
+Author: Xavier Danaux <xdanaux@gmail.com>
+Licence: The LaTeX Project Public Li­cense, version 1.3c
+URL: https://github.com/xdanaux/moderncv
diff --git a/macros/latex/contrib/moderncv/examples/Makefile b/macros/latex/contrib/moderncv/examples/Makefile
new file mode 100644
index 0000000000..66f85dbead
--- /dev/null
+++ b/macros/latex/contrib/moderncv/examples/Makefile
@@ -0,0 +1,18 @@
+SHAREDFILES = moderncv.cls moderncvcompatibility.sty moderncvcolor*.sty moderncvdebugtools.sty
+
+
+template_classic_*.pdf: $(SHAREDFILES) template.tex template_classic_green.diff moderncvstyleclassic.sty moderncvheadi.sty moderncvbodyi.sty moderncviconsmarvosym.sty
+ TARGET=basename($<)
+ echo -e "Generating $<\c";
+ cp template.tex $TARGET.tex && echo -e ".\c";
+ patch --silent $TARGET.tex < $TARGET.diff && echo -e ".\c";
+ lualatex --interaction=batchmode --draftmode $TARGET > /dev/null && echo -e ".\c";
+ bibtex $TARGET > /dev/null && echo -e ".\c";
+ lualatex --interaction=batchmode $TARGET > /dev/null && echo -e ".\c";
+ lualatex --interaction=batchmode $TARGET > /dev/null && echo -e " done";
+
+clean:
+ rm *.aux *.log *.bbl *.blg *.out;
+ rm template_*.tex;
+ rm *.sty moderncv.cls;
+
diff --git a/macros/latex/contrib/moderncv/examples/picture.eps b/macros/latex/contrib/moderncv/examples/picture.eps
new file mode 100644
index 0000000000..e7415b0093
--- /dev/null
+++ b/macros/latex/contrib/moderncv/examples/picture.eps
@@ -0,0 +1,958 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: (ImageMagick)
+%%Title: (picture.eps)
+%%CreationDate: (2012-03-25T00:18:42-04:00)
+%%BoundingBox: 0 0 94 94
+%%HiResBoundingBox: 0 0 94 94
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 1
+%%Pages: 1
+%%EndComments
+
+%%BeginDefaults
+%%EndDefaults
+
+%%BeginProlog
+%
+% Display a color image. The image is displayed in color on
+% Postscript viewers or printers that support color, otherwise
+% it is displayed as grayscale.
+%
+/DirectClassPacket
+{
+ %
+ % Get a DirectClass packet.
+ %
+ % Parameters:
+ % red.
+ % green.
+ % blue.
+ % length: number of pixels minus one of this color (optional).
+ %
+ currentfile color_packet readhexstring pop pop
+ compression 0 eq
+ {
+ /number_pixels 3 def
+ }
+ {
+ currentfile byte readhexstring pop 0 get
+ /number_pixels exch 1 add 3 mul def
+ } ifelse
+ 0 3 number_pixels 1 sub
+ {
+ pixels exch color_packet putinterval
+ } for
+ pixels 0 number_pixels getinterval
+} bind def
+
+/DirectClassImage
+{
+ %
+ % Display a DirectClass image.
+ %
+ systemdict /colorimage known
+ {
+ columns rows 8
+ [
+ columns 0 0
+ rows neg 0 rows
+ ]
+ { DirectClassPacket } false 3 colorimage
+ }
+ {
+ %
+ % No colorimage operator; convert to grayscale.
+ %
+ columns rows 8
+ [
+ columns 0 0
+ rows neg 0 rows
+ ]
+ { GrayDirectClassPacket } image
+ } ifelse
+} bind def
+
+/GrayDirectClassPacket
+{
+ %
+ % Get a DirectClass packet; convert to grayscale.
+ %
+ % Parameters:
+ % red
+ % green
+ % blue
+ % length: number of pixels minus one of this color (optional).
+ %
+ currentfile color_packet readhexstring pop pop
+ color_packet 0 get 0.299 mul
+ color_packet 1 get 0.587 mul add
+ color_packet 2 get 0.114 mul add
+ cvi
+ /gray_packet exch def
+ compression 0 eq
+ {
+ /number_pixels 1 def
+ }
+ {
+ currentfile byte readhexstring pop 0 get
+ /number_pixels exch 1 add def
+ } ifelse
+ 0 1 number_pixels 1 sub
+ {
+ pixels exch gray_packet put
+ } for
+ pixels 0 number_pixels getinterval
+} bind def
+
+/GrayPseudoClassPacket
+{
+ %
+ % Get a PseudoClass packet; convert to grayscale.
+ %
+ % Parameters:
+ % index: index into the colormap.
+ % length: number of pixels minus one of this color (optional).
+ %
+ currentfile byte readhexstring pop 0 get
+ /offset exch 3 mul def
+ /color_packet colormap offset 3 getinterval def
+ color_packet 0 get 0.299 mul
+ color_packet 1 get 0.587 mul add
+ color_packet 2 get 0.114 mul add
+ cvi
+ /gray_packet exch def
+ compression 0 eq
+ {
+ /number_pixels 1 def
+ }
+ {
+ currentfile byte readhexstring pop 0 get
+ /number_pixels exch 1 add def
+ } ifelse
+ 0 1 number_pixels 1 sub
+ {
+ pixels exch gray_packet put
+ } for
+ pixels 0 number_pixels getinterval
+} bind def
+
+/PseudoClassPacket
+{
+ %
+ % Get a PseudoClass packet.
+ %
+ % Parameters:
+ % index: index into the colormap.
+ % length: number of pixels minus one of this color (optional).
+ %
+ currentfile byte readhexstring pop 0 get
+ /offset exch 3 mul def
+ /color_packet colormap offset 3 getinterval def
+ compression 0 eq
+ {
+ /number_pixels 3 def
+ }
+ {
+ currentfile byte readhexstring pop 0 get
+ /number_pixels exch 1 add 3 mul def
+ } ifelse
+ 0 3 number_pixels 1 sub
+ {
+ pixels exch color_packet putinterval
+ } for
+ pixels 0 number_pixels getinterval
+} bind def
+
+/PseudoClassImage
+{
+ %
+ % Display a PseudoClass image.
+ %
+ % Parameters:
+ % class: 0-PseudoClass or 1-Grayscale.
+ %
+ currentfile buffer readline pop
+ token pop /class exch def pop
+ class 0 gt
+ {
+ currentfile buffer readline pop
+ token pop /depth exch def pop
+ /grays columns 8 add depth sub depth mul 8 idiv string def
+ columns rows depth
+ [
+ columns 0 0
+ rows neg 0 rows
+ ]
+ { currentfile grays readhexstring pop } image
+ }
+ {
+ %
+ % Parameters:
+ % colors: number of colors in the colormap.
+ % colormap: red, green, blue color packets.
+ %
+ currentfile buffer readline pop
+ token pop /colors exch def pop
+ /colors colors 3 mul def
+ /colormap colors string def
+ currentfile colormap readhexstring pop pop
+ systemdict /colorimage known
+ {
+ columns rows 8
+ [
+ columns 0 0
+ rows neg 0 rows
+ ]
+ { PseudoClassPacket } false 3 colorimage
+ }
+ {
+ %
+ % No colorimage operator; convert to grayscale.
+ %
+ columns rows 8
+ [
+ columns 0 0
+ rows neg 0 rows
+ ]
+ { GrayPseudoClassPacket } image
+ } ifelse
+ } ifelse
+} bind def
+
+/DisplayImage
+{
+ %
+ % Display a DirectClass or PseudoClass image.
+ %
+ % Parameters:
+ % x & y translation.
+ % x & y scale.
+ % label pointsize.
+ % image label.
+ % image columns & rows.
+ % class: 0-DirectClass or 1-PseudoClass.
+ % compression: 0-none or 1-RunlengthEncoded.
+ % hex color packets.
+ %
+ gsave
+ /buffer 512 string def
+ /byte 1 string def
+ /color_packet 3 string def
+ /pixels 768 string def
+
+ currentfile buffer readline pop
+ token pop /x exch def
+ token pop /y exch def pop
+ x y translate
+ currentfile buffer readline pop
+ token pop /x exch def
+ token pop /y exch def pop
+ currentfile buffer readline pop
+ token pop /pointsize exch def pop
+ /Times-Roman findfont pointsize scalefont setfont
+ x y scale
+ currentfile buffer readline pop
+ token pop /columns exch def
+ token pop /rows exch def pop
+ currentfile buffer readline pop
+ token pop /class exch def pop
+ currentfile buffer readline pop
+ token pop /compression exch def pop
+ class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
+} bind def
+%%EndProlog
+%%Page: 1 1
+%%PageBoundingBox: 0 0 94 94
+userdict begin
+DisplayImage
+0 0
+94 94
+12
+94 94
+0
+0
+E8EBF0E8EBF0E8EBF0E8EBF0E8EBF2E7EAF1E6E9F0E6E9F0E6EBEFE5EAEEE4E9EDE4E9EDE4E9ED
+E3E8ECE2E7EBE0E5E9DFE3EEDEE2EDDEE2EDDDE1ECDEE2EDDDE1ECDBDFEADADEE9DBE0E6DBE0E6
+DADFE5DADFE5D9DEE4D8DDE3D7DCE2D7DCE2D2D8E4D2D8E4D1D7E3D0D6E2CFD5E1CED4E0CED4E0
+CDD3DFCBD3E0CAD2DFC8D0DDC7CFDCC7CFDCC7CFDCC6CEDBC5CDDAC8D0DDC7CFDCC5CDDAC5CDDA
+C5CDDAC4CCD9C3CBD8C1C9D6C1CBD5C0CAD4C0CAD4BFC9D5BEC8D4BDC7D3BCC5D4BBC4D3B9C1D6
+B9C1D6B8C0D5B7BFD6B6BED5B5BDD4B4BCD3B4BBD5B3BAD4B3BAD4B2B9D3B1B8D2B0B7D1B0B7D1
+AFB6D0AFB6D0ABB5D0AAB4CFA9B3CEA8B2CDA8B2CDA7B1CCA6B0CBA5AFCAA6B0CBA6AFCCA2ADCB
+A0ABC9A2ABC8A7AEC8EAEDF2EAEDF2EAEDF2EAEDF2EAEDF4E9ECF3E8EBF2E8EBF2E7ECF2E6EBF1
+E6EBF1E5EAF0E6EBF1E5EAF0E3E8EEE2E7EDE1E5F0E1E5F0E0E4EFE0E4EFE0E4EFDFE3EEDDE1EC
+DCE0EBD9DFEBD9DFEBD8DEEAD7DDE9D7DDE9D6DCE8D5DBE7D5DBE7D3D9E5D3D9E5D2D8E4D1D7E3
+D0D6E2CFD5E1CED4E0CED4E0CDD4E4CCD3E3CAD1E1CAD1E1CAD1E1CAD1E1C9D0E0C8CFDFC7CEE0
+C6CDDFC4CBDDC4CBDDC4CBDDC3CADCC2C9DBC0C7D9BCC7D9BCC7D9BBC6D8BAC5D7B9C4D8B8C3D7
+B7C2D6B7C2D6B6C0DBB6C0DBB5BFDAB4BED9B3BCD9B2BBD8B1BAD7B1BAD7AFB8D9AFB8D9AEB7D8
+ADB6D7ACB5D6ACB5D6ABB4D5ABB4D5AAB5D5A9B4D4A8B3D3A7B2D2A7B2D2A6B1D1A5B0D0A4AFCF
+A4AFCFA1AED09FACCF9DAACDA1ABCEA5AECDEBEEF3EBEEF3EBEEF3EBEEF5EBEEF5EAEDF4E9ECF5
+E9ECF5E8EDF3E7ECF2E6EBF1E6EBF1E6EBF1E5EAF0E3E8EEE2E7EDE2E6F1E1E5F0E0E4EFE0E4EF
+E0E4EFE0E4EFDEE2EDDDE1ECD9DEF2D8DDF1D8DDF1D7DCF0D6DBEFD5DAEED5DAEED5DAEED3D9E9
+D3D9E9D2D8E8D1D7E7D0D6E6CFD5E5CFD5E5CED4E4CED5E7CDD4E6CBD2E4CBD2E4CBD2E4CBD2E4
+C9D0E2C8CFE1C5CDE2C4CCE1C2CADFC2CADFC2CADFC1C9DEC0C8DDBFC7DCBAC6DEBAC6DEB9C5DF
+B8C4DEB7C3DDB6C1DDB5C0DCB5C0DCB5C0DEB4BFDDB3BEDCB2BDDBB1BCDCB0BBDBB0BBDBAFBADA
+ADB7DBADB7DBACB6DAABB5D9ABB5D9AAB4D8A9B3D7A9B3D7A7B5DAA6B4D9A4B2D7A4B2D7A4B2D7
+A3B1D6A2B0D5A0AED39FADD09EAED29DACD39AA9D09BABCFA1AED0E9ECF1E9ECF1E9ECF3E9ECF3
+E9ECF3E8EBF4E7EAF3E7EAF3E5E9F2E5E9F2E4E8F1E4E8F1E4E8F1E3E7F0E1E5EEE0E4EDDFE5F1
+DEE4F0DDE3EFDDE3EFDDE3EFDCE2EEDAE0ECD9DFEBD8DDF0D8DDF0D7DCEFD7DCEFD6DBEED5DAED
+D4D9ECD4D9ECD2D9EBD1D8EAD1D8EAD0D7E9CFD6E8CED5E7CDD4E6CDD4E6CCD3E6CBD2E5CAD1E4
+CAD1E4CAD1E4C9D0E3C8CFE2C6CDE0C5CCE6C4CBE5C2C9E3C2C9E3C2C9E3C1C8E2C0C7E1BEC5DF
+B9C7E1B8C6E0B8C6E0B7C5E0B6C4DFB5C3DEB4C2DDB4C2DFB3C1DCB2C0DBB1BFDAB1BFDCAFBDDA
+AFBDDAAEBBDBADBADAABB9DCABB9DCABB9DCAAB8DBA9B7DAA8B6D9A8B6D9A7B5D8A4B6DAA3B5D9
+A1B3D7A1B3D7A0B2D6A0B2D69EB0D49DAFD39CAFCF9CAFD09AAED197ABCE98ABCC9DAECCE8EBF2
+E8EBF2E8EBF2E8EBF2E8EBF4E7EAF3E6E9F2E6E9F2E4E8F1E3E7F0E2E6EFE2E6EFE2E6EFE2E6EF
+E0E4EDDFE3ECDDE3EFDCE2EEDBE1EDDBE1EDDBE1EDDBE1EDD9DFEBD8DEEAD7DFECD6DEEBD6DEEB
+D5DDEAD4DCE9D3DBE8D3DBE8D3DBE8D1D8EBD0D7EAD0D7EACFD6E9CED5E8CDD4E7CCD3E6CBD2E5
+CAD2E7C9D1E6C8D0E5C8D0E5C8D0E5C7CFE4C6CEE3C4CCE1C5CCE8C4CBE7C2C9E5C2C9E5C2C9E5
+C1C8E4C0C7E3BFC6E2B9C8DDB9C8DDB8C7DEB7C6DDB6C5DCB5C3DDB5C3DDB4C2DCB3C2D9B3C2D9
+B2C1D8B1C0D7B0BED8AFBDD7AEBCD6AEBCD6ACBBD8ACBBD8ABBAD7AAB9D6A9B8D5A9B8D5A8B7D4
+A8B7D4A4B7D7A2B5D5A1B4D4A0B3D3A0B3D3A0B3D39EB1D19DB0D09CB0CB9CB1CE9BB0CF97ACCB
+96ABC89BACC6E8EBF2E8EBF2E8EBF2E8EBF4E8EBF4E7EAF3E6E8F4E6E8F4E5E9F4E4E8F3E3E7F2
+E3E7F2E3E7F2E2E6F1E0E4EFDFE3EEDDE3EFDCE2EEDBE1EDDBE1EDDBE1EDDBE1EDD9DFEBD8DEEA
+D6DEE9D6DEE9D5DDE8D5DDE8D4DCE7D3DBE6D2DAE5D2DAE5D0D7EAD0D7EACFD6E9CED5E8CDD4E7
+CCD3E6CBD2E5CBD2E5CAD2E7C9D1E6C9D1E6C9D1E6C9D1E6C8D0E5C6CEE3C4CCE1C3CDE6C2CCE5
+C0CAE3C0CAE3C0CAE3BFC9E2BEC8E1BCC6DFBBC8DBBAC6DCB9C5DBB8C4DAB7C3D9B6C2DAB6C2DA
+B5C1D9B3C2D7B3C2D7B2C1D6B1C0D7B0BFD6AFBED5AEBDD4AEBCD6ABBBD5AABAD4AABAD4A9B9D3
+A8B8D2A8B8D2A7B7D1A7B7D1A5B6D2A4B5D1A3B4D0A2B3CFA2B3CFA1B2CEA0B1CD9FB0CC9EAFC9
+9DB1CC9CAFCD98ABC996AAC59BABC4E7EAF1E8EBF2E8EBF4E8EBF4E7EAF3E7E9F5E6E8F4E5E7F3
+E5E9F4E4E8F3E3E7F2E3E7F2E3E7F2E2E6F1E1E5F0DFE3EEDDE3F1DCE2F0DBE1EFDBE1EFDBE1EF
+DAE0EED9DFEDD7DDEBD6DEEBD5DDEAD5DDEAD4DCE9D3DBE8D3DBE8D2DAE7D2DAE7D0D9EACFD8E9
+CED7E8CDD6E7CCD5E6CBD4E5CBD4E5CAD3E4C9D1E6C9D1E6C8D0E5C9D1E6C9D1E6C8D0E5C6CEE3
+C4CCE1C2CDE3C1CCE2BFCAE0BFCAE0BFCAE0BEC9DFBDC8DEBBC6DCBBC5DEBBC5DEBAC4DFB9C3DE
+B8C2DDB7C1DCB6BFDCB6BFDCB4C0DAB4C0DAB3BFD9B2BDD9B1BCD8B0BBD7B0BBD9AFBAD8AAB9D6
+AAB9D6A9B8D5A8B7D4A8B7D4A7B6D3A6B5D2A6B5D2A6B5D6A5B4D5A3B2D3A3B2D3A3B2D3A2B1D2
+A1B0D19FAECF9DACCB9FAECF9EAED09AAACE9AA8CB9DABC8E6E9F0E6E9F2E7EAF3E7EAF3E6E9F2
+E5E7F3E5E7F3E4E6F2E4E8F4E3E7F3E2E6F2E2E6F2E2E6F2E2E6F2E0E4F0DEE2EEDBE3F0DAE2EF
+D9E1EED9E1EED9E1EED8E0EDD7DFECD5DDEAD6DDEFD5DCEED5DCEED4DBEDD3DAECD2D9EBD2D9EB
+D1D8EAD0D9EAD0D9EACFD8E9CED7E8CDD6E7CCD5E6CBD4E5CBD4E5C8D0E3C8D0E3C8D0E3C8D0E3
+C8D0E3C7CFE2C4CCDFC2CADDC1CCE0C0CBDFBEC9DDBEC9DDBEC9DDBDC8DCBCC7DBBAC5D9BEC5E2
+BEC4E4BDC3E3BCC2E2BBC1E1BAC0E2B9BFE1B9BFE1B4BFDFB3BEDEB2BDDDB1BCDCB0BADDAFB9DC
+AFB9DCAEB8DBABB8D8ABB8D8ABB8D8AAB7D7A9B6D6A8B5D5A8B5D5A7B4D4A7B3D9A6B2D8A4B0D6
+A4B0D6A4B0D6A3AFD5A2AED4A0ACD29CA8CE9FABD39FABD59CA8D29BA7CFA1A9CEE5E9F2E5E9F2
+E5E9F2E5E9F2E5E9F4E4E8F3E3E7F2E3E7F2E2E5F4E2E5F4E2E5F4E1E4F3E1E4F3E0E3F2E0E3F2
+DFE2F1DBE1EFDBE1EFDBE1EFDAE0EED9DFEDD9DFEDD8DEECD8DEECD6DCECD6DCECD5DBEBD5DBEB
+D4DAEAD3D9E9D2D8E8D2D8E8D1D8EAD0D7E9CFD6E8D0D7E9D1D8EAD1D8EACFD6E8CDD4E6C8D0E5
+CBD3E8CBD3E8C8D0E7C3CBE2C3CBE2C4CBE5C6CDE7C3D0E3C2CFE2C1CEE1BFCBE1BCC8DEBAC6DC
+BAC6DEBBC7DFBBC7E1B9C5DFB8C4DEB7C3DDB7C2DEB7C2DEB5C0DCB4BFDBB2C0DDB1BFDCB0BEDB
+AFBDDAAFBDDAAEBCD9ADBBD8ACBAD7AAB9D8AAB9D8A9B8D7A8B7D6A7B6D5A6B5D4A6B5D4A5B4D3
+A4B3D4A3B2D3A3B2D3A2B1D2A1B0D1A0AFD0A0AFD09FAECF9BADD59CAED29CACCD9BA9CC9CA8D0
+A0A9D2E4E8F1E4E8F1E4E8F1E4E8F1E4E8F3E3E7F2E2E6F1E2E6F1E2E5F4E2E5F4E1E4F3E1E4F3
+E0E3F2E0E3F2DFE2F1DFE2F1DBE1EFDBE1EFDAE0EEDAE0EED9DFEDD9DFEDD8DEECD8DEECD6DCEC
+D6DCECD5DBEBD4DAEAD4DAEAD3D9E9D2D8E8D2D8E8D1D8EBCFD6E9CED5E8CCD3E6CBD2E5CAD1E4
+C8CFE2C7CEE1C5CDE2C7CFE4CAD2E7CBD3EAC9D1E8C7CFE6C3CBE2C0C7E1BBC7DDBBC7DDBBC7DD
+BCC8DEBDC9E1BCC8E0BBC7DFB9C5DDBBC7E1B9C5DFB8C4DEB7C3DDB7C2DEB7C2DEB5C0DCB4BFDB
+B2C0DDB1BFDCB0BEDBAFBDDAAFBDDAAEBCD9ADBBD8ACBAD7AAB9D8AAB9D8A9B8D7A8B7D6A7B6D5
+A6B5D4A6B5D4A5B4D3A4B3D4A3B2D3A3B2D3A2B1D2A1B0D1A0AFD0A0AFD09FAECF9BADD59CAED2
+9CACCD9BA9CC9CA8D0A0A9D2E3E7F0E3E7F0E3E7F0E3E7F0E3E7F2E2E6F1E1E5F0E1E5F0E1E4F3
+E1E4F3E1E4F3E0E3F2E0E3F2DFE2F1DFE2F1DEE1F0DBE1EFDAE0EEDAE0EED9DFEDD9DFEDD8DEEC
+D8DEECD8DEECD6DCECD5DBEBD5DBEBD4DAEAD3D9E9D2D8E8D2D8E8D1D7E7CCD2E8CDD3E9CED4EA
+CDD3E9CDD3E9CDD3E9CED4EACED4EACAD2E5C6CEE1C1C9DEBFC7DCC0C8DDC3CBE2C5CDE4C7CFE6
+C1CCE2BFCAE0BDC7E0BDC7E0BEC8E1BEC8E3BDC7E2BBC5E0BAC6E0B9C5DFB8C4DEB7C3DDB7C2DE
+B6C1DDB5C0DCB4BFDBB2C0DDB1BFDCAFBDDAAFBDDAAFBDDAAEBCD9ADBBD8ABB9D6AAB9D8AAB9D8
+A9B8D7A8B7D6A7B6D5A6B5D4A5B4D3A5B4D3A3B2D3A3B2D3A2B1D2A2B1D2A1B0D1A0AFD0A0AFD0
+9FAECF9BADD59BADD19CACCD9BA9CC9CA8D0A0A9D2E2E6EFE3E7F0E3E7F0E3E7F0E2E6F1E2E6F1
+E1E5F0E0E4EFE1E4F3E0E3F2E0E3F2DFE2F1DFE2F1DEE1F0DEE1F0DEE1F0DAE0EEDAE0EEDAE0EE
+D9DFEDD8DEECD8DEECD7DDEBD7DDEBD5DBEBD5DBEBD4DAEAD3D9E9D3D9E9D2D8E8D1D7E7D1D7E7
+D1D7EDD2D8EED2D8EECFD5EBCBD1E7C8CEE4C7CDE3C8CEE4C5CDE0C5CDE0C8D0E3CBD3E6CBD3E8
+C8D0E5C4CCE1C3CBE0C4CEE7C2CCE5BEC8E1BCC6DFBBC5E0BCC6E1BDC7E2BEC8E3BAC6E0B9C5DF
+B7C3DDB7C3DDB7C2DEB6C1DDB5C0DCB3BEDAB2C0DDB1BFDCAFBDDAAFBDDAAEBCD9AEBCD9ACBAD7
+ABB9D6AAB9D8A9B8D7A9B8D7A8B7D6A7B6D5A6B5D4A5B4D3A5B4D3A3B2D3A3B2D3A2B1D2A1B0D1
+A1B0D1A0AFD09FAECF9FAECF9AACD49BADD19CACCD9AA8CB9BA7CFA0A9D2E2E6EFE3E7F0E3E7F0
+E3E7F0E2E6F1E1E5F0E1E5F0E0E4EFE0E3F2E0E3F2DFE2F1DFE2F1DEE1F0DDE0EFDDE0EFDDE0EF
+DAE0EED9DFEDD9DFEDD8DEECD8DEECD7DDEBD7DDEBD7DDEBD5DBEBD4DAEAD4DAEAD3D9E9D2D8E8
+D1D7E7D1D7E7D0D6E6CCD2E8CDD3E9CED4EACDD3E9CAD0E6C9CFE5CAD0E6CBD1E7CDD4E6C9D0E2
+C4CBDDC1C8DBBCC3D6BAC1D4BFC5DBC6CCE2BDC8DEBFCAE0C0CAE3BEC8E1BCC6DFBAC4DFBBC5E0
+BDC7E2BAC6E0B9C5DFB7C3DDB7C3DDB6C1DDB6C1DDB4BFDBB3BEDAB2C0DDB0BEDBAFBDDAAEBCD9
+AEBCD9AEBCD9ACBAD7ABB9D6AAB9D8A9B8D7A8B7D6A8B7D6A6B5D4A6B5D4A5B4D3A4B3D2A3B2D3
+A3B2D3A2B1D2A1B0D1A0AFD0A0AFD09FAECF9FAECF9AACD49BADD19CACCD9AA8CB9BA7CFA0A9D2
+E2E6EFE2E6EFE2E6EFE2E6EFE2E6F1E1E5F0E0E4EFE0E4EFDFE2F1DFE2F1DEE1F0DEE1F0DDE0EF
+DDE0EFDCDFEEDCDFEED9DFEDD9DFEDD8DEECD8DEECD7DDEBD7DDEBD6DCEAD6DCEAD4DAEAD4DAEA
+D3D9E9D2D8E8D2D8E8D1D7E7D0D6E6D0D6E6D1D8EBCFD6E9CCD3E6C9D0E3C7CEE1C7CEE1C9D0E3
+CBD2E5C2C9D9B3BACCA0A7B99198AA8A91A39097AAA3AABDB6BDD0B8C0D5BCC4D9C2CAE1C5CDE4
+C4CCE3C0C7E1BCC3DDBAC1DBBAC6E0B8C4DEB7C3DDB6C2DCB6C1DDB6C1DDB4BFDBB3BEDAB1BFDC
+B0BEDBAFBDDAAEBCD9AEBCD9ADBBD8ACBAD7ABB9D6A9B8D7A9B8D7A8B7D6A7B6D5A6B5D4A5B4D3
+A5B4D3A4B3D2A3B2D3A2B1D2A2B1D2A1B0D1A0AFD09FAECF9FAECF9EADCE9AACD49BADD19BABCC
+9AA8CB9BA7CF9FA8D1E1E5EEE1E5EEE1E5EEE1E5EEE1E5F0E0E4EFDFE3EEDFE3EEDFE2F1DEE1F0
+DEE1F0DDE0EFDDE0EFDCDFEEDCDFEEDBDEEDD9DFEDD9DFEDD8DEECD7DDEBD7DDEBD6DCEAD6DCEA
+D6DCEAD4DAEAD3D9E9D3D9E9D2D8E8D1D7E7D0D6E6D0D6E6CFD5E5D7DEEECDD4E4BEC5D5B0B7C7
+A6ADBDA2A9B9A1A8B8A1A8B8939AAA8A91A1838A9A8087997C83957A819381889B8A91A49CA4B7
+9FA7BAA8B0C3B3BBD0BCC4D9C0C8DDBDC5DCBAC2D9B9C5DFB8C4DEB7C3DDB6C2DCB6C1DDB5C0DC
+B4BFDBB3BEDAB1BFDCB0BEDBAEBCD9AEBCD9AEBCD9ADBBD8ACBAD7AAB8D5A9B8D7A9B8D7A8B7D6
+A7B6D5A6B5D4A5B4D3A4B3D2A4B3D2A2B1D2A2B1D2A1B0D1A1B0D1A0AFD09FAECF9FAECF9EADCE
+9AACD49AACD09BABCC9AA8CB9BA7CF9FA8D1E0E4EDE0E4EDE0E4EDE0E4EDE0E4EFDFE3EEDEE2ED
+DEE2EDDEE1F0DEE1F0DEE1F0DDE0EFDCDFEEDCDFEEDBDEEDDBDEEDD9DFEDD8DEECD8DEECD7DDEB
+D7DDEBD6DCEAD6DCEAD5DBE9D3D9E9D3D9E9D3D9E9D2D8E8D1D7E7D0D6E6D0D6E6CFD5E5B4BBCB
+A7AEBE949BAB848B9B7C83937B82927D84947F86968289997C83937B829280879781889A7E8597
+7E859782899B717A8B737C8D7C84979098ABA8B0C3B9C1D6BFC7DCBEC6DBB9C5DFB8C4DEB7C3DD
+B6C2DCB6C1DDB5C0DCB4BFDBB3BEDAB1BFDCB0BEDBAEBCD9AEBCD9AEBCD9ADBBD8ACBAD7AAB8D5
+A9B8D7A9B8D7A8B7D6A7B6D5A6B5D4A5B4D3A4B3D2A4B3D2A2B1D2A2B1D2A1B0D1A1B0D1A0AFD0
+9FAECF9EADCE9EADCE99ABD39AACD09BABCC99A7CA9AA6CE9FA8D1DEE3E9E0E4EDE0E4EDDDE4EE
+DCE3EDDEE4F0DDE3EFDAE2EFDBE1EDDBE1EDDBE1EDDAE0ECD9DFEBD9DFEBD8DEEAD8DEEAD6DCEC
+D6DCECD6DCECD5DBEBD5DBEBD4DAEAD4DAEAD3D9E9DAE1F3D4DBEDCCD3E5D2D9EBCCD3E3CDD4E4
+D1D8E8B2B9C9979DAB8B919F838997858B99878D9B8389977E84927E84927F85957F85957F8595
+7F85957F85957E84947D83937D83937D84967D84967C83957980927C83958B92A4A3AABCB6BDCF
+BAC5D9BBC6DCB4BFD5B8C4DCBAC6E0B6C1DDB7C2E0AEBCD9AFBDD8AEBCD7AEBCD7ADBBD8ACBAD7
+ABB9D6ABB8D8AAB7D7AAB9D6A9B8D5A9B8D7A8B7D6A7B6D5A6B5D6A5B4D5A5B4D5A2B0D3A2B0D3
+A1AFD2A1AFD2A0AED19FADD09FADD09EACCF98ABD599ADD299ACCD99A9CD9AA7D19EAAD2DDE2E8
+DFE3ECDFE3ECDCE3EDDBE2ECDDE3EFDCE2F0D9E1EEDAE0ECDAE0ECDAE0ECD9DFEBD8DEEAD8DEEA
+D7DDE9D7DDE9D6DCECD6DCECD5DBEBD5DBEBD4DAEAD4DAEAD3D9E9D3D9E9D5DCEED2D9EBC8CFE1
+CCD3E5D3DAEAD5DCECC2C9D99097A7868C9A7F85937D8391808694828896808694808694838997
+8086968086968086968086967F85957F85957E84947E84947E85977E85977C83957A8193798092
+7D8496848B9D8B92A496A1B5B1BCD0BBC6DCB7C1DAADB9D3ADB8D4B5C0DEAEB9D7AFBDD8AEBCD7
+AEBCD7ADBBD8ACBAD7ABB9D6ABB8D8AAB7D7A9B8D5A8B7D4A8B7D6A7B6D5A6B5D4A5B4D5A4B3D4
+A4B3D4A2B0D3A2B0D3A1AFD2A1AFD2A0AED19FADD09EACCF9EACCF98ABD599ADD299ACCD99A9CD
+9AA7D19EAAD2DCE0E9DEE2EBDEE2EBDAE1EBDAE0ECDCE2EEDBE1EFD8E0EDD9DFEDD9DFEDD9DFED
+D8DEECD7DDEBD7DDEBD6DCEAD6DCEAD5DBEBD5DBEBD5DBEBD4DAEAD4DAEAD3D9E9D3D9E9D2D8E8
+CBD2E4D5DCEED1D8EAD0D7E9D2D9E9CAD1E1AEB5C5818898828896808694818795838997808694
+7C82907E84928389978086968086968086968086968086967F85957E84947E84947C83957B8294
+7A81937B82947A8193798092757C8E72798B7C8799A0ABBFB7C2D8BCC6DFB4C0DAB1BCD8B7C2DE
+B2BDDBAEBCD7AEBCD7ADBBD6ADBBD8ACBAD7ABB9D6ABB8D8AAB7D7A8B7D4A8B7D4A7B6D5A6B5D4
+A5B4D3A4B3D4A3B2D3A3B2D3A2B0D3A2B0D3A1AFD2A0AED1A0AED19FADD09EACCF9EACCF97AAD4
+98ACD198ABCC98A8CC99A6D09DA9D1DBDFE8DDE1EADEE2EDDAE1EBDAE0ECDBE1EFDBE1EFD7DFEC
+D9DFEDD8DEECD8DEECD7DDEBD7DDEBD6DCEAD6DCEAD6DCEAD5DBEBD4DAEAD4DAEAD3D9E9D3D9E9
+D2D8E8D2D8E8D2D8E8C9D0E2D3DAECD4DBEDD1D8EAC9D0E0B3BACA989FAF868D9D858B99858B99
+868C9A868C9A8187957C82907D83918187957F85958086968086968086967F85957F85957E8494
+7D83937A8193798092787F917A81937B82947B8294798092777E9071798C81899C929DB1AEB9CF
+BAC4DDB4C0DAB2BDD9ABB6D2AEBCD7AEBCD7ADBBD6ACBAD7ACBAD7ABB9D6AAB7D7AAB7D7A8B7D4
+A7B6D3A7B6D5A6B5D4A5B4D3A4B3D4A3B2D3A3B2D3A2B0D3A2B0D3A1AFD2A0AED19FADD09FADD0
+9EACCF9EACCF95A8D296AACF96A9CA96A6CA98A5CF9CA8D0DBDFE8DDE1ECDEE2EDDAE0ECDAE0EC
+DBE1EFDAE0F0D7DEEED9DFEDD8DEECD8DEECD7DDEBD7DDEBD6DCEAD6DCEAD6DCEAD4DAEAD4DAEA
+D3D9E9D3D9E9D2D8E8D1D7E7D1D7E7D1D7E7D2D9EBCBD2E4CAD1E3CBD2E4BEC5D59CA3B3838A9A
+848B9B8187958187958288968389978288968086948086948187957E84947F85957F85957F8595
+7E84947D83937D83937C82927B82947A81937A8193798092787F917980927980927A8193737C8D
+727A8D777F92939EB2ADB8CEB4BED7B6C0DBACB8D2AEBCD7AEBCD7ADBBD6ACBAD7ABB9D6ABB9D6
+AAB7D7AAB7D7A8B7D4A8B7D4A7B6D5A6B5D4A5B4D3A4B3D4A3B2D3A3B2D3A2B0D3A1AFD2A1AFD2
+A0AED19FADD09EACCF9EACCF9DABCE96A9D397ABD097AACB97A7CB98A5CF9CA8D0DBDFEADDE1EC
+DDE1ECD9DFEBD9DFEDDBE1EFDAE0F0D7DEEED8DEEED8DEEED8DEEED7DDEDD6DCECD6DCECD5DBEB
+D5DBEBD3D9E9D3D9E9D2D8E8D2D8E8D1D7E7D1D7E7D0D6E6D0D6E6D3DAECCAD1E3CFD6E8C5CCDE
+A7AEBE868D9D787F8F868D9D8187958187958086948187958288968288968187958086947E8494
+7E84947E84947E84947E84947D83937C82927C8292787F917A81937C83957B8294798092787F91
+7980927A81937780917A8394747C8F7D859A8F9AB0A6B0C9B9C3DCB6C0DBAEBCD7ADBBD6ADBBD6
+ACBAD7ABB9D6AAB8D5AAB7D7A9B6D6A8B7D4A7B6D3A7B6D5A6B5D4A5B4D3A4B3D4A3B2D3A3B2D3
+A1AFD2A1AFD2A0AED1A0AED19FADD09EACCF9DABCE9DABCE97AAD498ACD198ABCC98A8CC99A6D0
+9DA9D1DADEE9DCE0EBDCE0ECD8DEEAD8DEECD9DFEFD9DFEFD6DDEDD7DDEDD7DDEDD6DCECD6DCEC
+D5DBEBD5DBEBD4DAEAD4DAEAD3D9E9D2D8E8D2D8E8D1D7E7D1D7E7D0D6E6D0D6E6CFD5E5CED5E7
+CCD3E5D3DAECB3BACC8990A07D84947D8494868D9D848A98848A98838997828896808694808694
+8086947F85937E84947E84947E84947E84947E84947D83937D83937C8292787F917A81937B8294
+7B82947B82947A81937A81937B8294737A8A7B8292737C8D6F778A747C918590A6A6B0C9B3BDD6
+ADBBD6ADBBD6ACBAD5ACBAD7ABB9D6AAB8D5AAB7D7A9B6D6A7B6D3A6B5D2A6B5D4A5B4D3A4B3D2
+A3B2D3A2B1D2A2B1D2A1AFD2A1AFD2A0AED19FADD09FADD09EACCF9DABCE9DABCE97AAD498ACD1
+98ABCC97A7CB98A5CF9BA7CFD9DDE8DBDFEADBDFEBD7DDE9D7DDEBD8DEEED8DEEED5DCECD6DCEC
+D6DCECD5DBEBD5DBEBD4DAEAD4DAEAD3D9E9D3D9E9D2D8E8D2D8E8D2D8E8D1D7E7D0D6E6D0D6E6
+CFD5E5CFD5E5D1D8EACAD1E3C6CDDF979EB0747B8B858C9C878E9E7A81917E8492808694818795
+7F85937D83917E84928086948187957F85957F85957F85957F85957F85957E84947D83937D8393
+7E85977C8395798092787F91777E90777E90777E90777E907A81917C8393778091788093737B90
+777F9698A2BBB4BED7ADBBD6ADBBD6ACBAD5ACBAD7ABB9D6AAB8D5A9B6D6A9B6D6A6B5D2A5B4D1
+A5B4D3A4B3D2A3B2D1A2B1D2A1B0D1A1B0D1A1AFD2A1AFD2A0AED19FADD09FADD09EACCF9DABCE
+9DABCE96A9D397ABD096A9CA95A5C995A2CC99A5CDD7DDE9DAE0EED8DEEED6DBEED8DFF1D6DDEF
+D3DAEAD7DFECD4DBEDD4DBEDD3DAECD3DAECD2D9EBD2D9EBD1D8EAD1D8EAD1D8EBD0D7EACED5E8
+CED5E8CDD4E7CDD4E7CDD4E7CCD3E6CACFE2D8DEEEB0B6C68C92A2848A9A818795858B99808694
+8187958187958187958187958086948086947F85937F85937F85957F85957E84947E84947E8494
+7D83937D83937D83937B82947A8193798092798092787F91787F91787F91798092788095777E91
+777E907A7F92757C8E71798C8590A4AAB6CCA7B5CFB0BED8A5B3CEAAB8D5AEBDDCA5B4D5A8B6D9
+A3B1D4A7B6D7A5B4D5A4B3D4A3B2D3A3B1D4A3B1D4A1AFD2A0AED19EAED29EAED29DADD19DADD1
+9CACD09BABCF9AAACE9AAACE95A8D298ACD193A6C798A8CC98A5CF96A2CAD6DCE8D9DFEDD6DCEC
+D5DAEDD7DEF0D5DCEED2D9E9D5DDEAD4DBEDD4DBEDD3DAECD3DAECD2D9EBD1D8EAD1D8EAD1D8EA
+D2D9ECD0D7EACED5E8CFD6E9D0D7EAD0D7EACDD4E7CAD1E4D0D5E8C9CFDF9FA5B5848A9A808696
+818795888E9C8389978187958187958187958086948086948086947F85937F85937F85957F8595
+7E84947E84947D83937D83937D83937D83937A81937A8193798092798092787F91787F91787F91
+787F91747C91757C8F757C8E787D90767D8F70788B7A8599919DB3A5B3CDB2C0DAA6B4CFA7B5D2
+AEBDDCA8B7D8A9B7DAA7B5D8A7B6D7A5B4D5A4B3D4A3B2D3A3B1D4A3B1D4A1AFD2A0AED19EAED2
+9EAED29DADD19DADD19CACD09BABCF9AAACE9AAACE95A8D298ACD193A6C798A8CC98A5CF96A2CA
+D5DBE7D8DEECD5DBEBD3D8EBD5DCEED4DBEDD1D8E8D4DCE9D3DAECD3DAECD3DAECD2D9EBD1D8EA
+D1D8EAD0D7E9D0D7E9D1D8EBCFD6E9CDD4E7CED5E8D0D7EAD0D7EACCD3E6C9D0E3CFD4E7B1B7C7
+8B91A17F85957F8595828896898F9D8288968187958187958187958086948086947F85937F8593
+7F85937E84947E84947E84947D83937D83937D83937C82927C82927A81937A8193798092787F91
+787F91787F91787F91787F91727A8F757C8F747B8D767B8E777E9071798C6E798D768298A0AEC8
+B4C2DCAAB8D3A5B3D0ADBCDBAAB9DAA7B5D8A8B6D9A6B5D6A5B4D5A4B3D4A3B2D3A3B1D4A3B1D4
+A1AFD2A0AED19EAED29EAED29DADD19CACD09BABCF9BABCF9AAACE9AAACE95A8D298ACD193A6C7
+98A8CC98A5CF95A1C9D4DAE6D7DDEBD4DAEAD3D8EBD5DCEED3DAECD0D7E7D3DBE8D2D9EBD2D9EB
+D2D9EBD1D8EAD1D8EAD0D7E9D0D7E9CFD6E8CDD4E7CDD4E7CCD3E6CCD3E6CDD4E7CCD3E6CCD3E6
+CBD2E5C4C9DC989EAE7F8595838999838999838997868C9A7D8391818795818795808694808694
+8086947F85937F85937F85937E84947E84947D83937D83937D83937C82927C82927C82927A8193
+7A8193798092787F91787F91787F91787F91787F91737B90787F92767D8F757A8D777E90747C8F
+6B768A69758B93A1BBB0BED8AFBDD8A6B4D1ABBAD9A8B7D8A2B0D3A7B5D8A6B5D6A5B4D5A3B2D3
+A3B2D3A3B1D4A2B0D3A1AFD2A0AED19EAED29DADD19DADD19CACD09BABCF9AAACE9AAACE9AAACE
+95A8D298ACD193A6C797A7CB98A5CF95A1C9D4DAE6D7DDEBD4DAEAD2D7EAD4DBEDD3DAECD0D7E7
+D3DBE8D2D9EBD1D8EAD1D8EAD0D7E9D0D7E9CFD6E8CFD6E8CFD6E8CBD2E5CDD4E7CDD4E7CCD3E6
+CAD1E4CAD1E4CCD3E6CFD6E9B6BBCE888E9E7C8292878D9D8389998288968389977D8391818795
+8086948086948086947F85937F85937F85937E84927D83937D83937D83937C82927C82927C8292
+7B81917B81917A8193798092798092787F91787F91777E90787F91787F91737B907A8194777E90
+73788B757C8E747C8F6E798D6B778D7F8DA79FADC7AEBCD7A8B6D3A9B8D7A7B6D7A0AED1A7B5D8
+A6B5D6A5B4D5A3B2D3A3B2D3A3B1D4A2B0D3A1AFD29FADD09DADD19DADD19DADD19CACD09BABCF
+9AAACE9AAACE99A9CD94A7D197ABD093A6C797A7CB98A5CF95A1C9D3D9E5D6DCEAD3D9E9D2D7EA
+D4DBEDD2D9EBCFD6E6D2DAE7D1D8EAD1D8EAD0D7E9D0D7E9CFD6E8CED5E7CED5E7CED5E7CCD3E6
+CED5E8CED5E8CCD3E6CAD1E4C9D0E3CCD3E6CED5E8A8ADC08288987E8494858B9B808696808694
+8187958288968086948086948086947F85937F85937F85937E84927E84927D83937D83937C8292
+7C82927C82927B81917B81917B8191798092798092787F91787F91777E90777E90777E90777E90
+71798E798093767D8F71768972798B727A8D6F7A8E707C926D7B958896B0A7B5D0AAB8D5A7B6D5
+A8B7D8A3B1D4A7B5D8A6B5D6A4B3D4A3B2D3A2B1D2A2B0D3A2B0D3A0AED19FADD09DADD19DADD1
+9CACD09CACD09BABCF9AAACE99A9CD99A9CD94A7D197ABD092A5C697A7CB97A4CE95A1C9D2D8E4
+D5DBE9D2D8E8D0D5E8D2D9EBD1D8EACED5E5D1D9E6D0D7E9D0D7E9D0D7E9CFD6E8CED5E7CED5E7
+CDD4E6CDD4E6CDD4E7CCD3E6CCD3E6CCD3E6CCD3E6CAD1E4C7CEE1C5CCDF999EB17F8595828898
+8389997F85958288967F85938389978086948086948086947F85937F85937E84927E84927E8492
+7C82927C82927C82927C82927B81917B81917A80907A8090798092798092787F91777E90777E90
+777E90777E90777E9070788D767D90737A8C71768972798B727A8D6E798D717D9367758F76849E
+9DABC6A9B7D4A6B5D4AAB9DAA5B3D6A4B2D5A5B4D5A4B3D4A3B2D3A2B1D2A2B0D3A2B0D3A0AED1
+9FADD09DADD19DADD19CACD09BABCF9AAACE9AAACE99A9CD99A9CD94A7D197ABD092A5C697A7CB
+97A4CE94A0C8D0D6E2D4DAE8D1D7E7CFD4E7D1D8EACFD6E8CDD4E4D0D8E5D0D7E9D0D7E9CFD6E8
+CFD6E8CED5E7CED5E7CDD4E6CDD4E6CDD4E7CAD1E4C8CFE2CAD1E4CDD4E7CAD1E4C2C9DCBAC1D4
+8E93A67D8393858B9B848A9A818797858B997D83918187958086948086948086947F85937F8593
+7E84927E84927E84927C82927C82927C82927B81917B81917B81917A80907A8090798092798092
+787F91777E90777E90777E90777E90777E9071798E747B8E72798B72778A757C8E727A8D6D788C
+6F7B916977916D7B9597A5C0A9B7D4A4B3D2ABBADBA4B2D59EACCFA5B4D5A4B3D4A3B2D3A2B1D2
+A2B0D3A1AFD2A0AED19FADD09DADD19DADD19CACD09BABCF9AAACE9AAACE99A9CD99A9CD94A7D1
+97ABD092A5C697A7CB97A4CE94A0C8CFD6E0D0D6E2CFD6E6D0D7E9D0D7EACFD6E9CDD6E7CCD5E6
+CDD5E8CDD5E8CCD4E7CCD4E7CCD4E7CBD3E6CBD3E6CBD3E6C8D0E3CAD2E5CAD2E5C9D1E4CBD2E4
+C9D0E2CDD4E69DA4B67F85958086968187978288988288988288988187978187977F85957F8595
+7E84947E84947D83937C82927C82927C82927A81937A81937A8193798092798092787F91787F91
+787F91787F92787F92787F92777E91767D90767D90757C8F757C8F737B8E737B8E727A8D71798C
+71798C70788B70788B70788B6F7B91707C9494A0BAAEBCD7AAB9D8A8B7D8A7B7D9A4B4D6A3B1D4
+A3B1D4A2B0D3A1AFD2A1AFD4A0AED39FADD29FADD29CABD29CABD29CABD29BAAD19AA9D099A8CF
+99A8CF98A7CE95A8D394A7CF94A6CA95A4CB96A3CF97A3CDCED5DFCFD5E1CED5E5CFD6E8CFD6E9
+CED5E8CCD5E6CBD4E5CCD4E7CCD4E7CBD3E6CBD3E6CBD3E6CAD2E5CAD2E5CAD2E5C9D1E4CAD2E5
+C8D0E3C6CEE1C9D0E2C6CDDFC6CDDF949BAD8086968086968187978187978187978086967F8595
+7E84947F85957E84947E84947D83937D83937C82927C82927C82927A81937A81937A8193798092
+798092787F91787F91787F91787F92787F92777E91777E91767D90767D90757C8F757C8F737B8E
+727A8D727A8D71798C71798C70788B70788B70788B6B778D67738B8692ACA2B0CBA3B2D1A0AFD0
+A1B1D39FAFD1A3B1D4A3B1D4A2B0D3A1AFD2A0AED3A0AED39FADD29FADD29CABD29CABD29BAAD1
+9BAAD19AA9D099A8CF98A7CE98A7CE94A7D293A6CE93A5C994A3CA95A2CE96A2CCCDD3DFCED4E2
+CDD4E4CED5E7CED5E8CDD4E7CBD4E5CAD3E4CBD3E6CBD3E6CAD2E5CAD2E5CAD2E5C9D1E4C9D1E4
+C9D1E4CCD4E9CBD3E6C8D0E3C7CFE2CAD1E4C6CDDFC6CDDF939AAC808696808696808696808696
+8086967F85957D83937C82927E84947E84947E84947D83937C82927C82927B81917B81917A8193
+7A8193798092798092798092787F91787F91787F91787F92777E91777E91767D90767D90757C8F
+757C8F747B8E727A8D727A8D727A8D71798C71798C70788B70788B6F778A737F9569758D7E8AA4
+A0AEC9A8B7D6A5B4D5A6B6D8A6B6D8A2B0D3A2B0D3A2B0D3A1AFD2A0AED39FADD29FADD29EACD1
+9CABD29CABD29BAAD19AA9D099A8CF99A8CF98A7CE98A7CE93A6D192A5CD92A4C893A2C994A1CD
+95A1CBCDD3DFCDD3E1CDD4E4CDD4E7CDD4E7CCD3E6CAD2E5CAD3E4CAD2E5CAD2E5CAD2E5C9D1E4
+C9D1E4C9D1E4C8D0E3C8D0E3C9D1E6C9D1E6C8D0E5C6CEE1C9D0E3C8CFE2CBD2E49AA1B37F8595
+7F85958086968086968086967F85957D83937D83937E84947D83937D83937C82927C82927B8191
+7B81917B81917A8193798092798092798092787F91787F91787F91777E90777E91777E91767D90
+767D90757C8F757C8F747B8E747B8E727A8D727A8D727A8D71798C70788B70788B6F778A6F778A
+707C92636F87707C9696A4BFA6B5D4A1B0D1A2B2D4A2B2D4A2B0D3A2B0D3A1AFD2A0AED19FADD2
+9FADD29EACD19EACD19BAAD19BAAD19AA9D09AA9D099A8CF98A7CE98A7CE97A6CD93A6D192A5CD
+92A4C893A2C994A1CD95A1CBCDD3DFCDD3E1CDD4E6CDD4E7CDD3E9CCD2E8CAD2E5CAD2E5CAD2E5
+CAD2E5CAD2E5C9D1E4C9D1E4C9D1E4C8D0E3C8D0E3C4CCE1C6CEE3C6CEE3C4CCE1C6CDE0C4CBDE
+CAD1E49DA4B77E84947F85957F85958086968086968086967F85957E84947D83937D83937C8292
+7C82927B81917B81917A80907A8090798092798092798092787F91787F91787F91777E90777E90
+777E91767D90767D90757C8F757C8F747B8E747B8E737A8D727A8D727A8D71798C71798C70788B
+6F778A6F778A6F778A6C788E626E8667738D919FBAA6B5D49FAECFA0B0D29EAED0A1AFD2A1AFD2
+A1AFD2A0AED19FADD29EACD19EACD19DABD09BAAD19AA9D09AA9D099A8CF98A7CE98A7CE97A6CD
+97A6CD93A6D192A5CD92A4C893A2C994A1CD95A1CBCCD2E0CDD3E3CCD3E5CDD4E7CDD3E9CCD2E8
+CAD2E5C9D1E4CAD2E5CAD2E5C9D1E4C9D1E4C9D1E4C8D0E3C8D0E3C8D0E3C6CEE5C8D0E5C7CFE4
+C5CDE2C6CCE2C3CADDC7CEE1979EB17D83937E84947F85958086968086968086967F85957F8595
+7D83937C82927C82927B81917B81917A80907A80907A8090798092798092798092787F91787F91
+777E90777E90777E90767D90767D90757C8F757C8F747B8E747B8E737A8D737A8D727A8D71798C
+71798C70788B70788B6F778A6F778A6F778A6E7A9069758D6A769092A0BBABBAD9A3B2D3A5B5D7
+A1B1D3A1AFD2A1AFD2A0AED19FADD09EACD19EACD19DABD09DABD09AA9D09AA9D099A8CF99A8CF
+98A7CE97A6CD96A5CC96A5CC93A6D192A5CD92A4C893A2C994A1CD95A1CBCBD1DFCCD2E2CBD2E4
+CCD2E8CBD1E7CBD1E7C9D1E6C8D0E3C9D1E4C9D1E4C8D0E3C8D0E3C7CFE2C7CFE2C7CFE2C7CFE2
+C8D0E7C7CFE6C6CEE3C5CDE2C9CFE5C4CAE0C1C8DB8B92A57D83937E84947F85957F85957F8595
+7E84947D83937D83937C82927C82927C82927B81917A80907A8090797F8F797F8F798092798092
+787F91787F91787F91777E90777E90777E90767D90757C8F757C8F747B8E747B8E737A8D737A8D
+737A8D71798C71798C71798C70788B70788B6F778A6F778A6E768968748A6B778F67738D8B99B4
+A4B3D29EADCEA3B3D59DADCFA1AFD2A0AED1A0AED19FADD09EACD19DABD09DABD09CAACF9AA9D0
+9AA9D099A8CF98A7CE97A6CD97A6CD96A5CC96A5CC92A5D091A4CC91A3C792A1C893A0CC94A0CA
+CAD0DECBD1E1CAD1E3CBD1E7CAD0E6CAD0E6C8D0E5C7CFE2C8D0E3C7CFE2C7CFE2C7CFE2C6CEE1
+C6CEE1C6CEE1C6CEE1C4CCE3C2CAE1C0C8DFC2CADFC9CFE5C3C9DFBAC1D47F86997E84947E8494
+7E84947E84947E84947D83937B81917A80907C82927C82927B81917B81917A80907A8090797F8F
+797F8F798092798092787F91787F91777E90777E90777E90777E90757C8F757C8F757C8F747B8E
+747B8E737A8D737A8D72798C71798C71798C71798C70788B70788B6F778A6E76896E768969758B
+707C9469758F8A98B3A2B1D09EADCEA5B5D79FAFD1A0AED1A0AED19FADD09FADD09EACD19DABD0
+9CAACF9CAACF9AA9D099A8CF99A8CF98A7CE97A6CD96A5CC96A5CC96A5CC91A4CF90A3CB90A2C6
+91A0C7929FCB939FC9C9D0E2C8D0E3C8D0E5C8D0E7C8D0E7C5D0E6C5D0E4C5D0E4C6D1E5C5D0E4
+C5D0E4C5D0E4C5D0E4C5D0E4C5D0E4C4CFE3BFCCDFC5D1E7BFCAE0C5CFE8BFCAE0C4CCE1BDC5D8
+7B84957D8496848B9D7D84967980927F86987B8294777E907C83957B82947B82947B82947B8294
+7A81937A8193798092798092787F92787F92787F92777E91767D90767D90757C8F757C8F737B8E
+737B8E737B8E737B8E727A8D727A8D727A8D727A8D6F7B8B6F7B8B6E7A8A6E7A8A6D788A6C7789
+6C77896C77896C789065748B75839D97A6C3A9B8D7A1B1D29BABCD9EB0D49EAED09EAED29DADD1
+9DADD19CACD09BAAD19AA9D09AA9D098AAD297A9D196A8D095A7CF94A6CE94A6CE94A6CE94A6CE
+8EA3D08EA4CD8DA3C88FA2CA8FA0CC929FCBC9D0E2C8D0E3C8D0E5C8D0E7C8D0E7C6D1E7C5D0E4
+C5D0E4C4CFE3C4CFE3C4CFE3C4CFE3C4CFE3C4CFE3C3CEE2C3CEE2C0CDE0C3CFE5BEC9DFC3CDE6
+BDC8DEC0C8DDBBC3D6818A9B777E907B82947E85977980927C8395808799798092787F917A8193
+7A81937A81937A8193798092798092798092787F91787F92787F92777E91777E91767D90767D90
+757C8F757C8F737B8E737B8E737B8E727A8D727A8D727A8D727A8D727A8D6F7B8B6F7B8B6E7A8A
+6E7A8A6D788A6C77896C77896C778969758D7180978694AE9CABC8A6B5D4A2B2D39FAFD19FB1D5
+9EAED09EAED29DADD19CACD09CACD09BAAD19AA9D09AA9D098AAD297A9D196A8D095A7CF94A6CE
+94A6CE94A6CE93A5CD8EA3D08EA4CD8DA3C88FA2CA8FA0CC929FCBC8CFE1C7CFE2C7CFE4C7CFE6
+C7CFE6C5D0E6C4CFE3C4CFE3C3CEE2C3CEE2C3CEE2C3CEE2C2CDE1C2CDE1C2CDE1C2CDE1C2CFE2
+C1CDE3BEC8E1C5CFE8BEC8E1BFC7DEBEC6D9949CAF7D8496777E90808799798092787F9182899B
+798092777E907A8193798092798092798092787F91787F91787F91777E90787F92777E91777E91
+767D90767D90757C8F757C8F747B8E737B8E737B8E727A8D727A8D727A8D727A8D727A8D727A8D
+6F7B8B6E7A8A6E7A8A6D788A6D788A6C77896C77896B768A6470887E8CA699A7C2A1B0CDA1B0CF
+A1B1D3A2B2D69EB0D49EAED09DADD19DADD19CACD09BABCF9AA9D09AA9D09AA9D097A9D197A9D1
+96A8D095A7CF94A6CE93A5CD93A5CD93A5CD8EA3D08EA4CD8DA3C88FA2CA8FA0CC919ECAC6CDDF
+C5CDE0C5CDE2C5CDE4C5CDE4C3CEE4C2CDE1C2CDE1C2CDE1C2CDE1C2CDE1C2CDE1C2CDE1C1CCE0
+C1CCE0C1CCE0C1CDE3BECAE0BDC7E0C5CFE8C0CAE3C1C9E0C3CBE0AAB2C58D94A6777E907F8698
+7A8193757C8E7F8698787F91798092798092798092798092787F91787F91787F91777E90777E90
+777E91777E91767D90767D90757C8F757C8F747B8E747B8E727A8D727A8D727A8D727A8D727A8D
+727A8D71798C71798C6E7A8A6E7A8A6E798B6D788A6C77896C778B6B768A6B768A616D858290AA
+A0AEC9A3B2CF9EADCE9EAED0A1B1D59DAFD39DADCF9DADD19CACD09CACD09BABCF9AA9D099A8CF
+99A8CF97A9D196A8D095A7CF94A6CE93A5CD93A5CD93A5CD93A5CD8EA3D08DA3CC8DA3C88EA1C9
+8FA0CC919ECAC6CDDFC5CDE0C5CDE2C5CDE4C5CDE4C3CEE4C2CDE1C2CDE1C2CDE3C2CDE3C2CDE3
+C2CDE3C1CCE2C1CCE2C1CCE2C1CCE2BFCBE1BBC7DFBCC6DFC2CCE7BEC8E1BFC7DEC2CADFB7BFD2
+939AAC757C8E777E907B8294787F917A8193767D8F7C83957A8193798092798092798092787F91
+787F91787F91777E90777E91767D90767D90757C8F757C8F747B8E747B8E737A8D727A8D727A8D
+727A8D727A8D727A8D71798C71798C71798C6E798B6E798B6D788A6D788A6C778B6C778B6B768A
+6B768A636F89818FA99FADC8A4B3D29FAECF9CACCE9EAED29CAED49DADCF9CACD09CACD09BABCF
+9AAACE99A8CF99A8CF99A8CF96A8D096A8D095A7CF94A6CE93A5CD92A4CC92A4CC92A4CC8DA2CF
+8DA3CC8DA3C88EA1C98E9FCB919ECAC7CEE0C6CEE1C6CEE3C6CEE5C6CEE5C4CFE5C3CEE2C3CEE2
+C1CCE2C1CCE2C1CCE2C1CCE2C1CCE2C0CBE1C0CBE1C0CBE1C1CDE3BDC9E1BFC9E4C1CBE6BDC7E2
+BEC5DFC0C8DDBCC4D9959CAE7E859772798B7B82947D8496777E90787F917B8294798092798092
+798092787F91787F91787F91777E90777E90767D90767D90757C8F757C8F747B8E747B8E737A8D
+737A8D727A8D727A8D727A8D71798C71798C71798C71798C71798C6E798B6E798B6D788A6D788C
+6C778B6B768A6B768A6B768C66728C818FAA9EACC9A4B3D2A0AFD09DADD19EADD49CAED49CACCE
+9CACD09BABCF9BABCF9AAACE99A8CF98A7CE98A7CE96A8D095A7CF94A6CE93A5CD92A4CC92A4CC
+92A4CC92A4CC8DA2CF8DA3CC8CA2C78EA1C98E9FCB919ECAC6CDDFC5CDE0C5CDE2C5CDE4C5CDE4
+C2CDE3C2CDE1C1CCE0C0CBE1C0CBE1C0CBE1C0CBE1BFCAE0BFCAE0BFCAE0BFCAE0C0CCE4BDC9E1
+C1CBE6BFC9E4BDC7E2C0C7E1BEC6DDBFC7DCA8AFC19CA3B5798092787F917D8496757C8E7D8496
+787F91787F91787F91787F91787F91777E90777E90767D8F767D8F767D90757C8F757C8F747B8E
+747B8E737A8D737A8D737A8D727A8D727A8D71798C71798C71798C71798C71798C71798C6E798B
+6D788A6D788C6C778B6C778B6B768A6B768C6A758B67738D8492AD9FADCAA2B1D09EACCF9FAFD3
+9FAED59AACD29CACCE9BABCF9BABCF9AAACE99A9CD99A8CF98A7CE98A7CE95A7CF95A7CF94A6CE
+93A5CD92A4CC91A3CB91A3CB91A3CB8DA2CF8DA3CC8CA2C78EA1C98E9FCB909DC9C3CADCC2CADD
+C3CBE0C3CBE2C3CBE2C0CBE1C0CBDFBFCADEBFCAE0BFCAE0BFCAE0BEC9DFBEC9DFBEC9DFBEC9DF
+BEC9DFBAC6DEB9C5DDBDC7E2BAC4DFB9C3DEBFC6E0BCC4DBBEC6DBC0C7D9BCC3D5848B9D767D8F
+798092737A8C81889A767D8F777E90777E90777E90777E90767D8F767D8F767D8F757C8E757C8F
+757C8F757C8F747B8E747B8E737A8D737A8D72798C727A8D727A8D71798C71798C71798C71798C
+71798C71798C6D788A6D788A6D788C6C778B6C778B6B768C6B768C6A758B66718D8795B0A2B0CD
+A0AFCE9BA9CC9FAFD3A0AFD697A9CF9CACCE9BABCF9BABCF9AAACE99A9CD98A7CE98A7CE97A6CD
+95A7CF94A6CE93A5CD92A4CC92A4CC91A3CB91A3CB91A3CB8DA2CF8DA3CC8CA2C78DA0C88E9FCB
+909DC9C5CCDEC3CBDEC2CAE1C2C9E3C1C8E4BFC9E4BFC9E2BFC9E2BECAE2BECAE2BFCBE3BECAE2
+BECAE2BDC9E1BDC9E1BCC8E0BBC7E1BBC7E1BBC7E1BBC7E1BBC7E1BAC6E0BAC6E0BAC6E0B4BFD5
+BCC7DD939BB070788D7A82957A8394747B8D767D8F777E91777E91777E91767D90767D90757C8F
+757C8F757C8F747C8F747C8F747C8F737B8E737B8E737B8E727A8D727A8D6F7A8C6F7A8C6F7A8C
+6E798B6E798B6D788A6D788A6D788A6E78916A758B6D788C6D788C6673866C788E6D7991616D85
+61708F8C9BBAA1B0D1A0AFD0A4B4D6A0B0D498A8CC9CACD099ABD398AAD298AAD297A9D196A8D0
+95A7CF95A7CF94A6CE94A6CE93A5CD93A5CD92A4CC91A3CB90A2CA90A2CA8FA1C98CA1D08BA1CA
+8AA0C78C9FC78C9DC88F9CC6C3CADCC2CADDC1C9E0C1C8E2C0C7E3BEC8E3BEC8E1BEC8E1BDC9E1
+BDC9E1BDC9E1BDC9E1BDC9E1BCC8E0BCC8E0BBC7DFBAC6E0BAC6E0BAC6E0BAC6E0B9C5DFB9C5DF
+B9C5DFB9C5DFB6C1D7BBC6DCA3AEC4747C917B8396777F92787F91787F91777E91777E91767D90
+767D90767D90757C8F757C8F757C8F737B8E737B8E737B8E727A8D727A8D727A8D71798C71798C
+6E798B6E798B6E798B6E798B6D788A6D788A6D788A6C77896D77906A758B6A75896B768A687588
+69758B69758D64708A6978978E9DBC9FAECF9EACCFA2B2D4A0B0D499A9CD9DACD398AAD298AAD2
+97A9D197A9D196A8D095A7CF95A7CF94A6CE93A5CD93A5CD92A4CC92A4CC91A3CB90A2CA90A2CA
+8FA1C98BA0CF8BA1CA8AA0C78C9FC78C9DC88F9CC6C2C9DBC1C9DCC0C8DFBFC6E0BFC6E2BDC7E2
+BDC7E0BDC7E0BCC8E0BCC8E0BCC8E0BCC8E0BCC8E0BBC7DFBAC6DEBAC6DEB9C5DFB9C5DFB8C4DE
+B8C4DEB8C4DEB8C4DEB8C4DEB8C4DEB8C2DBB4BED7B0BBD1778298767E9371798C757D90778091
+767D90767D90767D90767D90757C8F757C8F757C8F747B8E727A8D727A8D727A8D71798C71798C
+71798C70788B70788B6E798B6D788A6D788A6D788A6C77896C77896C77896B76886E798F6C778D
+6974886A75896A778A66728866728A6F7B957B8AA995A4C59FAECF9BABCD9FAFD19EAED299A8CF
+9AACD298AAD298AAD297A9D196A8D095A7CF95A7CF94A6CE94A6CE93A5CD93A5CD92A4CC91A3CB
+90A2CA90A2CA8FA1C98FA1C98BA0CF8BA1CA8AA0C78B9EC68C9DC88F9CC6C1C8DAC0C8DBBFC7DE
+BEC5DFBEC5E1BCC6E1BCC6DFBCC6DFBBC7DFBBC7DFBBC7DFBBC7DFBBC7DFBAC6DEB9C5DDB9C5DD
+B8C4DEB8C4DEB8C4DEB8C4DEB7C3DDB7C3DDB7C3DDB7C3DDBAC6E0ADB7D0B3BDD68893A9768195
+767E9370788B767E91767D90767D90757C8F757C8F757C8F747B8E747B8E747B8E727A8D727A8D
+727A8D71798C71798C70788B70788B70788B6D788A6D788A6C77896C77896B76886B76886B7688
+6B76886E798F707B916B768A6A75896B778D6470886C7892838EAA8F9EBF9EADCEA0B0D19BABCD
+9CACD09AACD096A8CE97A9CF97A9D197A9D197A9D196A8D095A7CF94A6CE94A6CE93A5CD92A4CC
+92A4CC92A4CC91A3CB90A2CA8FA1C98FA1C98EA0C88BA0CF8BA1CA8AA0C78B9EC68C9DC88F9CC6
+C1C8DAC0C8DBBFC7DEBEC5DFBEC5E1BCC6E1BCC6DFBCC6DFBBC7E1BBC7E1BBC7E1BBC7E1BBC7E1
+BAC6E0B9C5DFB9C5DFB8C4DEB8C4DEB7C3DDB7C3DDB7C3DDB7C3DDB7C3DDB7C3DDBCC8E2ADB9D3
+B3BFD7A9B3CC8E99AF8C97AB71798E757D92757C8F757C8F757C8F757C8F747B8E747B8E737A8D
+737A8D727A8D727A8D727A8D71798C71798C71798C70788B70788B6C77896C77896C77896B7688
+6B76886A75876A75876A75876C778D707B916C778B6A758968748A64708A76819D98A3C19CACCD
+A1B1D2A0B0D29BABCD99ABCF99ABD197A9CF97A9D197A9D197A9D196A8D095A7CF94A6CE94A6CE
+93A5CD93A5CD92A4CC92A4CC91A3CB90A2CA8FA1C98FA1C98EA0C88EA0C88BA0CF8AA0C98AA0C7
+8B9EC68C9DC88E9BC5C0C7D9BFC7DABEC6DDBDC4DEBDC4E0BBC5E0BBC5DEBBC5DEBAC6E0BAC6E0
+BAC6E0BAC6E0BAC6E0B9C5DFB8C4DEB8C4DEB7C3DDB7C3DDB7C3DDB6C2DCB6C2DCB6C2DCB6C2DC
+B6C2DCB8C3DFB0BBD7B3BFD9C0CCE4A9B3CCA4AFC57782986F7A8E757C8F757C8F747B8E747B8E
+747B8E737A8D737A8D737A8D727A8D727A8D727A8D71798C71798C70788B70788B70788B6C7789
+6C77896C77896B76886B76886A75876A75876A75876A758B6C778D6B768A687389636F8767738D
+818CAAA3AECE9FAFD09EAED09DADCF99ABCF99ABCF9AACD29AACD498ABD396A8D096A8D096A8D0
+95A7CF94A6CE93A5CD93A5CD92A4CC91A3CB91A3CB91A3CB90A2CA8FA1C98EA0C88EA0C88D9FC7
+8A9FCE8AA0C9899FC68B9EC68B9CC78E9BC5BFC6D8BDC5D8BDC5DCBCC3DDBCC3DFBAC4DFBAC4DD
+BAC4DDB9C5DFB9C5DFB9C5DFB9C5DFB8C4DEB8C4DEB7C3DDB7C3DDB6C2DCB5C1DBB5C1DBB5C1DB
+B5C1DBB5C1DBB5C1DBB5C1DBB2BDD9B4BFDBB0BBD7BDC9E3B6C0D9AEB8D1848FA56C778D747B8E
+747B8E747B8E747B8E737A8D737A8D737A8D72798C71798C71798C71798C70788B70788B70788B
+6F778A6F778A6C77896C77896C77896B76886B76886B76886A75876A75876A758B677286687387
+687389626E866E79958B96B4A4AED19FAFD19AAACC98ABCC9AACD098AAD099ABD199ACD498ABD3
+96A8D096A8D095A7CF94A6CE94A6CE93A5CD92A4CC92A4CC91A3CB91A3CB90A2CA8FA1C98FA1C9
+8EA0C88D9FC78D9FC78A9FCE8AA0C9899FC68A9DC58B9CC78E9BC5BEC5D7BCC4D7BCC4DBBBC2DC
+BBC2DEB8C2DDB9C3DCB9C3DCB8C4DEB8C4DEB8C4DEB8C4DEB7C3DDB7C3DDB6C2DCB5C1DBB4C0DA
+B4C0DAB4C0DAB4C0DAB4C0DAB4C0DAB3BFD9B3BFD9B0BEDBB8C3DFAEB9D5AFBBD5B6C2DAAEB8D1
+919CB26E798F747B8E747B8E747B8E737A8D737A8D737A8D72798C72798C70788B70788B70788B
+6F778A6F778A6F778A6E76896E76896C77896C77896C77896B76886B76886B76886A75876A7587
+6C778D646F8367728669748A647088747F9B929DBDA2ACCF9FAFD198A8CA97A9CD9AACD097A9CF
+95A9CE97AAD295A8D096A8D096A8D095A7CF94A6CE93A5CD93A5CD92A4CC92A4CC91A3CB91A3CB
+90A2CA8FA1C98EA0C88EA0C88D9FC78D9FC78A9FCE8AA0C9899FC68A9DC58B9CC78E9BC5C1C3D8
+B9C3DCB5C5DFB6C6E0BAC4DDBAC1DBB7C0DDB6C3E5B6C4DFB6C4DFB5C3DEB5C3DEB5C3DEB4C2DD
+B4C2DDB4C2DDB3C1DCB3C1DCB3C1DCB2C0DBB2C0DBB2C0DBB1BFDAB1BFDAB3BEDAB6C1DDABB6D4
+B3BEDCB1BCDAAFBAD6A5B1CB69758D757C8E737A8C687182737B8E6E798B6772847380916E7B8C
+6E798D6E798D6D788C6D788C6D788C6C778B6C778B6C778B6C778B6C778B6C778B6B768A6B768A
+6A75896A75896974886D788A6671856A768C69758F606E8B7885A597A6C79FADD09CABD49CABD4
+9BAAD39BAAD39AA9D29AA9D299A8D199A8D195A7CF94A6CE94A6CE93A5CD92A4CC92A4CC91A3CB
+91A3CB8FA2CC8FA2CC8FA2CC8EA1CB8DA0CA8C9FC98C9FC98B9EC8899DCF899EC9899FC68B9EC8
+8C9DC98F9CC8C1C3D8B9C3DCB5C5DFB6C6E0BAC4DDBAC1DBB7C0DDB6C3E5B5C3DEB5C3DEB4C2DD
+B4C2DDB4C2DDB3C1DCB3C1DCB3C1DCB2C0DBB2C0DBB2C0DBB1BFDAB1BFDAB1BFDAB0BED9B0BED9
+B3BEDAB5C0DCACB7D5B4BFDDB2BDDBAFBAD6AAB6D07A869E767E916F778A737B8E717C8E6C7789
+6C77896D7A8B6F7C8D6E798D6D788C6D788C6D788C6C778B6C778B6C778B6C778B6C778B6B768A
+6B768A6B768A6B768A6A75896A75896A75896B768A69748868748C64708A6573908190AF9CAACD
+9EACCF9BAAD39BAAD39AA9D29AA9D299A8D198A7D098A7D098A7D094A6CE94A6CE93A5CD92A4CC
+91A3CB91A3CB90A2CA90A2CA8FA2CC8FA2CC8EA1CB8EA1CB8DA0CA8C9FC98C9FC98B9EC8899DCF
+899EC9899FC68B9EC88C9DC98F9CC8C0C2D7B8C2DBB4C4DEB5C5DFB9C3DCB8BFD9B6BFDCB5C2E4
+B3C1DCB3C1DCB3C1DCB3C1DCB2C0DBB2C0DBB1BFDAB1BFDAB1BFDAB1BFDAB1BFDAB0BED9B0BED9
+B0BED9AFBDD8AFBDD8B4BFDBB4BFDDACB7D5B5C0E0B2BDDBAFBAD6B1BDD7929EB6767E93697186
+768195727D916D788C727D916774856E7B8C6D788C6D788C6D788C6C778B6C778B6C778B6B768A
+6B768A6A75896A75896A75896A75896A75896A75896A75896A75896873876A758B6470885E6C87
+707E9B8F9EBF9FADD09AAACE9AA9D29AA9D299A8D199A8D198A7D097A6CF97A6CF97A6CF93A5CD
+93A5CD92A4CC91A3CB90A2CA90A2CA8FA1C98FA1C98EA1CB8EA1CB8EA1CB8DA0CA8C9FC98C9FC9
+8B9EC88B9EC8899DCF899EC9899FC68B9EC88C9DC98F9CC8BEC0D5B6C0D9B2C2DCB3C3DDB7C1DA
+B6BDD7B4BDDAB3C0E2B3C1DCB3C1DCB2C0DBB2C0DBB1BFDAB1BFDAB1BFDAB1BFDAB1BFDAB1BFDA
+B0BED9B0BED9AFBDD8AFBDD8AFBDD8AFBDD8B2C0DBB0BEDBABB8D8B2BFDFAEBBDBACBAD7B2C0DA
+A4B2CC7B869C6772886C778B727D91727D91717C906774876B788B6D788C6D788C6C778B6C778B
+6B768A6B768A6B768A6B768A6974886974886A75896A75896A75896A75896A75896A7589657086
+657187616D8765738E7F8EAD98A6C99CACD098A8CC99A8D199A8D199A8D198A7D097A6CF97A6CF
+96A5CE96A5CE93A5CD92A4CC92A4CC91A3CB90A2CA8FA1C98FA1C98FA1C98DA0CA8DA0CA8DA0CA
+8DA0CA8C9FC98C9FC98B9EC88B9EC8899DCF899EC9899FC68B9EC88C9DC98F9CC8BEC0D5B6C0D9
+B1C1DBB3C3DDB6C0D9B6BDD7B4BDDAB2BFE1B2C0DBB2C0DBB2C0DBB2C0DBB1BFDAB1BFDAB0BED9
+B0BED9B1BFDAB0BED9B0BED9B0BED9AFBDD8AFBDD8AFBDD8AFBDD8B1BFDCAFBDDAACB9D9AFBCDC
+ACB9D9AAB8D5B0BED9AEBCD6919DB577839B636F87707C92727E946875886E798D6C778B6C778B
+6C778B6C778B6B768A6B768A6B768A6A75896A7589697488697488697488697488697488697488
+6A75896A7589647088636F8765738D7987A492A1C29CACCE9AA9D099A8CF99A8D199A8D199A8D1
+98A7D097A6CF97A6CF96A5CE96A5CE93A5CD93A5CD92A4CC91A3CB90A2CA90A2CA8FA1C98FA1C9
+8DA0CA8C9FC98C9FC98C9FC98C9FC98B9EC88B9EC88B9EC8899DCF899EC9899FC68B9EC88C9DC9
+8F9CC8BEC0D5B6C0D9B2C2DCB3C3DDB7C1DAB7BED8B4BDDAB3C0E2B2C0DBB2C0DBB1BFDAB1BFDA
+B0BED9B0BED9B0BED9B0BED9B0BED9B0BED9B0BED9AFBDD8AFBDD8AFBDD8AEBCD7AEBCD7AFBDDA
+AEBBDBADBADAACB9DBABB8D8A9B7D4ABB9D4AFBDD7A9B7D1909EB86F7B93707C946D798F647086
+737E926D788C6C778B6B768A6B768A6B768A6A75896A75896A75896A7589697488697488697488
+69748869748869748869748869748864708865718B74829D8E9DBC9EADCE9DADD19AA9D098AAD2
+99A8D199A8D198A7D098A7D097A6CF96A5CE96A5CE96A5CE93A5CD92A4CC92A4CC91A3CB90A2CA
+8FA1C98FA1C98FA1C98C9FC98C9FC98B9EC88B9EC88B9EC88B9EC88B9EC88B9EC8899DCF899EC9
+899FC68B9EC88C9DC98F9CC8BDBFD4B5BFD8B0C0DAB2C2DCB5BFD8B5BCD6B3BCD9B2BFE1B0BED9
+B0BED9B0BED9AFBDD8AFBDD8AFBDD8AEBCD7AEBCD7AFBDD8AFBDD8AFBDD8AEBCD7AEBCD7ADBBD6
+ADBBD6ADBBD6ACBAD7ADBADAADBADCA9B6D8AAB7D9ABB8D8A8B6D1ABB9D4AFBDD8A4B2CD8D9BB5
+77839B67738B69758B717C906B768A6B768A6B768A6B768A6A75896A75896A7589697488697488
+697488697488697488687387687387687387687387677286616D8767758F8593B09DACCB9EACCF
+9AAACE99ABD396A8D098A7D097A6CF97A6CF96A5CE96A5CE95A4CD95A4CD95A4CD92A4CC91A3CB
+91A3CB90A2CA8FA1C98FA1C98EA0C88EA0C88B9EC88B9EC88B9EC88B9EC88B9EC88B9EC88B9EC8
+8B9EC8899DCF899EC9899FC68B9EC88C9DC98F9CC8BABCD1B2BCD5AEBED8AFBFD9B3BDD6B3BAD4
+B1BAD7AFBCDEAFBDD8AFBDD8AFBDD8AEBCD7AEBCD7AEBCD7ADBBD6ADBBD6AEBCD7AEBCD7AEBCD7
+ADBBD6ADBBD6ACBAD5ACBAD5ACBAD5A9B8D5ABBAD9ACBBDCA7B6D7AAB9DAACBBDAA5B4D1A7B7D1
+A6B5D2A9B9D3A8B6D17D8BA5657189717D936D788C6671856B768A6B768A6B768A6A75896A7589
+6974886974886974886A75896974886974886873876873876772866772866772865B69836B7994
+8F9DBAA2B1D098A8CA97A6CD9BADD592A3CE97A6CF96A5CE96A5CE95A4CD95A4CD94A3CC94A3CC
+94A3CC91A3CB91A3CB90A2CA8FA1C98EA0C88EA0C88D9FC78D9FC78B9EC88B9EC88B9EC88B9EC8
+8B9EC88B9EC88B9EC88B9EC8899DCF899EC9899FC68B9EC88C9DC98F9CC8B3BED4B2BDD9B0BDDD
+AFBEDBAFBFD8AEBED5AFBDD8B1BBDEAFBDDAAFBDDAAFBDDAAEBCD9AEBCD9ADBBD8ADBBD8ADBBD8
+ACBBD8ACBBD8ACBBD8ACBBD8ACBBD8ABBAD7ABBAD7ABBAD7A9B8D7A9B8D7A9B8D7A9B8D7A8B7D6
+A8B7D6A8B7D6A8B7D6A5B5D7AAB9DAA5B3D07C86A16D788E6772866974886B788B6B768C6B768C
+6A758B6A758B69748A69748A69748A69748A687387687387677286677286677286677286677286
+67728662708B616F8C96A5C499A8C997A7CB97A9D197A8D397A8D494A6CE94A6CE94A6CE93A5CD
+92A4CC92A4CC91A3CB91A3CB8FA2CC8EA1CB8EA1CB8DA0CA8DA0CA8DA0CA8DA0CA8DA0CA8B9EC9
+8B9EC98B9EC98B9EC98B9EC98B9EC98B9EC98B9EC9899DCF899EC9899FC68B9EC88C9DC98F9CC8
+B2BDD3B1BCD8AFBCDCAEBDDAAEBED7ADBDD4AEBCD7B0BADDAFBDDAAFBDDAAEBCD9AEBCD9ADBBD8
+ADBBD8ADBBD8ADBBD8ACBBD8ABBAD7ABBAD7ABBAD7ABBAD7ABBAD7ABBAD7ABBAD7A9B8D7A9B8D7
+A9B8D7A8B7D6A8B7D6A8B7D6A8B7D6A8B7D69FAFD1A5B4D5A1AFCC78829D6C778D6A75896B768A
+6B788B6A758B6A758B6A758B6A758B69748A69748A69748A687389677286677286677286677286
+677286677286667185667185616F8A606E8993A2C19AA9CA98A8CC97A9D194A5D090A1CC94A6CE
+94A6CE93A5CD93A5CD92A4CC92A4CC91A3CB91A3CB8FA2CC8EA1CB8EA1CB8DA0CA8C9FC98C9FC9
+8DA0CA8DA0CA8B9EC98B9EC98B9EC98B9EC98B9EC98B9EC98B9EC98B9EC9899DCF899EC9899FC6
+8B9EC88C9DC98F9CC8B1BCD2B0BBD7AEBBDBADBCDBADBDD6ACBCD3ADBBD8AFB9DCAEBCD9AEBCD9
+AEBCD9ADBBD8ADBBD8ACBAD7ACBAD7ACBAD7AAB9D8AAB9D8AAB9D8AAB9D8AAB9D8AAB9D8A9B8D7
+A9B8D7A8B7D6A8B7D6A8B7D6A8B7D6A8B7D6A7B6D5A7B6D5A7B6D5A1B1D3A8B7D6A3B1CC78829D
+6B768C6B768C6B768C68748A6A758B6A758B6A758B69748A69748A687389687389687389677288
+67728867728867728866718766718766718766718764728D62708B8E9DBA9BAACB98A8CC98AAD0
+95A6D191A2CD94A6CE93A5CD93A5CD92A4CC92A4CC91A3CB91A3CB91A3CB8EA1CB8EA1CB8DA0CA
+8C9FC98C9FC98C9FC98C9FC98C9FC98B9EC98B9EC98B9EC98B9EC98B9EC98B9EC98B9EC98B9EC9
+899DCF899EC9899FC68B9EC88C9DC98F9CC8B1BBD4B0BBD7ADBADCACBBDAACBCD5ACBCD5ADBBD8
+AFB9DDADBBD8ADBBD8ADBBD8ACBAD7ACBAD7ACBAD7ABB9D6ABB9D6A9B8D7A9B8D7A9B8D7A9B8D7
+A9B8D7A8B7D6A8B7D6A8B7D6A7B6D5A7B6D5A7B6D5A7B6D5A7B6D5A7B6D5A6B5D4A6B5D4A1B1D2
+ABBAD9A6B4CF78829B69748A69748A6A758B6773896A758B69748A69748A69748A687389687389
+68738967728867728866718766718766718766718766718766718766718764728C63718C8897B4
+99A8C995A5C796A8CE98AAD296A7D293A5CD93A5CD93A5CD92A4CC91A3CB91A3CB90A2CA90A2CA
+8EA1CB8DA0CA8DA0CA8C9FC98C9FC98B9EC88C9FC98C9FC98B9EC98B9EC98B9EC98B9EC98B9EC9
+8B9EC98B9EC98B9EC9899DCF899EC9899FC68B9EC88C9DC98F9CC8B1BBD4B0BBD9ADBADCACBBDA
+ACBCD6ACBCD5ADBBD8AFB9DDADBADAACB9D9ACB9D9ACB9D9ABB8D8ABB8D8ABB8D8AAB7D7A8B7D6
+A8B7D6A8B7D6A8B7D6A8B7D6A8B7D6A7B6D5A7B6D5A7B6D5A7B6D5A6B5D4A6B5D4A6B5D4A6B5D4
+A6B5D4A6B5D49EAFCDA8B7D4A3B1CC7680996772886772886A748D6A768E69748A69748A69748A
+687389687389677288677288677288667187667187667187667187657086657086657086657086
+606E8863718C8493B09BAAC992A2C492A4CA95A7CF93A4CF93A5CD92A4CC92A4CC91A3CB91A3CB
+90A2CA90A2CA90A2CA8DA0CA8DA0CA8C9FC98B9EC88B9EC88B9EC88B9EC88B9EC88B9EC98B9EC9
+8B9EC98B9EC98B9EC98B9EC98B9EC98B9EC9899DCF899EC9899FC68B9EC88C9DC98F9CC8B0BAD3
+AFBAD8ADBADCACBBDCACBCD6ABBBD4ACB9D9AEB8DCACB9D9ACB9D9ABB8D8ABB8D8AAB7D7AAB7D7
+AAB7D7AAB7D7A8B7D8A8B7D8A8B7D8A8B7D8A7B6D7A7B6D7A7B6D7A7B6D7A6B5D4A6B5D4A6B5D4
+A5B4D3A5B4D3A5B4D3A5B4D3A5B4D3A6B7D5A8B7D49FADC8757F9868728B66708967718A68748C
+69748A687389687389687389677288677288677288667187656F88656F88656F88656F88656F88
+656F88656F88646E875F6D8764728C8090AA9FAECD95A5C794A6CA93A5CD8EA0C892A4CC92A4CC
+91A3CB91A3CB90A2CA90A2CA8FA1C98FA1C98DA0CA8C9FC98C9FC98B9EC88B9EC88A9DC78B9EC8
+8B9EC88B9EC98B9EC98B9EC98B9EC98B9EC98B9EC98B9EC98B9EC9899DCF899EC9899FC68B9EC8
+8C9DC98F9CC8AFB9D4AEB9D7ACB9DCABBADBAABAD4AABAD4ABB8D8ADB6DDABB8D8ABB8D8ABB8D8
+AAB7D7AAB7D7AAB7D7A9B6D6A9B6D6A8B7D8A8B7D8A8B7D8A8B7D8A7B6D7A7B6D7A7B6D7A7B6D7
+A5B4D3A5B4D3A5B4D3A5B4D3A5B4D3A4B3D2A4B3D2A4B3D2A7B8D69EADCA919FB96D779069738C
+67718A67718A67738D687389687389687389677288677288667187667187667187656F88656F88
+656F88656F88646E87646E87646E87646E875F6E85606E8873839D98A7C692A2C395A7CB96A8CE
+8EA0C892A4CC92A4CC91A3CB90A2CA90A2CA8FA1C98FA1C98FA1C98C9FC98C9FC98B9EC88B9EC8
+8A9DC78A9DC78A9DC78A9DC78B9EC98B9EC98B9EC98B9EC98B9EC98B9EC98B9EC98B9EC9899DCF
+899EC9899FC68B9EC88C9DC98F9CC8AEB8D3ADB8D6ABB8DBAAB9DAA9B8D5A9B9D3AAB7D7ACB5DC
+ABB8D8ABB8D8AAB7D7AAB7D7AAB7D7A9B6D6A9B6D6A9B6D6A8B7D8A8B7D8A8B7D8A8B7D8A7B6D7
+A7B6D7A7B6D7A7B6D7A5B4D3A5B4D3A5B4D3A5B4D3A4B3D2A4B3D2A4B3D2A4B3D298A9C58A9AB4
+7B89A3616B8467718A6A748D6A748D6B7791687389687389677288677288677288667187667187
+667187656F88656F88656F88646E87646E87646E87646E87646E875D6C8358668062728C8A99B8
+8898B993A5C997A9CF90A2CA92A4CC91A3CB91A3CB90A2CA90A2CA8FA1C98FA1C98EA0C88C9FC9
+8C9FC98B9EC88A9DC78A9DC78A9DC78A9DC78A9DC78B9EC98B9EC98B9EC98B9EC98B9EC98B9EC9
+8B9EC98B9EC9899DCF899EC9899FC68B9EC88C9DC98F9CC8AFB9D4ACB7D7A9B5DBA8B6DBA7B8D6
+A9B9D3A8B7D4A8B5D7A9B8D9A9B8D9A8B7D8A6B5D6A7B6D7AAB9DAABBADBA8B7D8A5B4D1A6B5D2
+A5B4D1A2B1CEA1B0CDA3B2CFA4B3D0A4B3D0A9B5DDACB8DEA8B4DAA0ADD0A0ADCFA5B2D2A1AFCC
+96A4C17F89A2717B9467718A69738C6D77906B758E67718A67718A67718A67718A667089667089
+667089656F88656F88656F8865718B64708A64708A64708A636F89636F89636F89636F89617087
+617087616F8964728D6B7A977A89A88C9BBA99A8C98EA0C88FA1C78EA0C68D9FC590A2CA92A3CE
+8FA0CC8A9BC98A9ACB8A9ACB8A9ACB8B9BCC8D9DCE8D9DCE8C9CCD8C9CCD8A9DC78A9DC78B9EC8
+8B9EC88B9EC88B9EC88A9DC78A9DC7889CCE8A9FCC8AA0C98A9DC78B9CC88F9CC8AEB8D3ABB6D6
+A8B4DAA7B5DAA6B7D5A8B8D2A7B6D3A7B4D6A8B7D8A9B8D9A8B7D8A6B5D6A5B4D5A6B5D6A5B4D5
+A2B1D2A9B8D7ABBAD9ABBAD9A8B7D6A7B6D5A7B6D5A6B5D4A4B3D29DAACDA0ADD0A2AFD1A3B0D2
+A4B1D19CAAC78694B16F7D98707A9368728B646E8767718A69738C667089646E8766708967718A
+67718A667089667089656F88656F88656F88656F8864708A64708A636F89636F89626E88626E88
+626E88626E8864738A606F865B69835765805968856473907584A38190AF8A9CC291A3C994A6CA
+90A2C68B9DC38B9DC58C9DC98D9ECC91A2CE90A1CD8E9FCB8C9DC98C9DC98B9CC88B9CC88B9CC8
+8B9EC88B9EC88B9EC88B9EC88B9EC88B9EC88B9EC88B9EC8889CCE8A9FCC8AA0C98B9EC88C9DC9
+909DC9ADB7D2AAB5D5A7B3D9A6B4D9A5B6D4A6B6D0A6B5D2A6B3D5A3B2D3A6B5D6A8B7D8A6B5D6
+A6B5D6A6B5D6A6B5D6A4B3D49FAECDA1B0CFA2B1D0A2B1D0A3B2D1A5B4D3A6B5D4A4B3D2ACB9D9
+A9B6D6A3B0D097A5C28593AE72809B62708A58668067718A656F8867718A6A748D69738C646E87
+646E8768728B667089667089667089656F88656F88656F88646E87646E87636F89636F89626E88
+626E88626E88616D87616D87616D875967815C6A845F6D87606E895D6C895C6B885C6B8A5C6B8A
+6E80A47B8DB1899BBF8FA2C38FA1C58D9FC58B9CC7899AC6879AC2889BC3899CC48B9EC68A9DC5
+899CC4879AC28699C18B9EC88B9EC88B9EC88A9DC78A9DC78B9EC88B9EC88B9EC8889CCE8A9FCC
+8AA0C98A9DC78C9DC9919ECAACB6D1AAB5D5A6B2D8A5B3D8A5B6D4A6B6D0A5B4D1A6B3D5A2B1D2
+A6B5D6A7B6D7A5B4D5A5B4D5A6B5D6A7B6D7A6B5D6A8B7D8A8B7D8A7B6D7A4B3D4A4B3D4A5B4D5
+A4B3D4A2B1D2A2ADC996A1BD8691AD77839D68748E606C846571896E7A9269738C69738C6A748D
+6C768F69738C656F88646E8767718A667089667089656F88656F88656F88646E87646E87646E87
+636F89626E88626E88626E88616D87616D87616D87606C86606E88606E885E6C875C6A85586882
+5867845A69865C6B8858688A6070926D7D9E7C8CAD8A9ABC91A1C591A0C98E9DC88B9EC98B9EC9
+8B9EC98B9EC98A9DC88B9EC98C9FCA8DA0CB8C9FC98B9EC88A9DC78A9DC78A9DC78A9DC78B9EC8
+8C9FC9889CCE8A9FCC8AA0C98A9DC78B9CC8909DC9ACB6D1AAB5D5A6B2D8A5B3D8A5B6D4A6B6D0
+A5B4D1A6B3D5A5B4D5A7B6D7A6B5D6A3B2D3A2B1D2A3B2D3A3B2D3A2B1D2A5B2D2A6B3D3A7B4D4
+A6B3D3A5B2D2A4B1D19FACCC9AA7C7828EA8707C94626E86626E8667738B69758D6A768C6C788E
+6B758E69738C68728B68728B67718A656F88646E87656F88656F88656F88656F88646E87646E87
+646E87636D86636D86636F89636F89626E88626E88626E88616D87616D87616D875E6C875E6C87
+5D6B865B69845969835968855B6A875C6B885B6A8B5867865867865F6E8D6D7C9D7D8BAE8A98BD
+919FC68FA1D18EA0D08C9ECE889ACA8698C88799C98A9CCC8D9FCF8C9DC88C9DC88C9DC88B9CC7
+8B9CC78C9DC88C9DC88C9DC8899DCF8A9FCC8AA0C9899CC68A9BC78F9CC8ACB6D1A9B4D4A6B2D8
+A5B3D8A4B5D3A5B5CFA5B4D1A5B2D4A4B3D4A5B4D5A4B3D4A3B2D3A4B3D4A7B6D7A6B5D6A3B2D3
+A1AFCCA1AFCC9FADCA9BA9C695A3C08D9BB88290AD7886A36F7B9367738B636F8767738B6A768E
+66728A626E86606C846A748D67718A656F88656F8866708967718A67718A667089656F88656F88
+646E87646E87646E87636D86636D86636D86636F89626E88626E88626E88616D87616D87616D87
+606C865866815B69845F6D88616F8A60708A5D6D875969835666805B6A875A6986586784566582
+5665825C6B8C6A789B7785AA798AB88091BF899AC88FA0CE90A1CF8E9FCD8B9CCA8A9BC98B9CC7
+8C9DC88C9DC88C9DC88C9DC88C9DC88C9DC88B9CC7899DCF8BA0CD8AA0C9899CC68A9BC78F9CC8
+ABB5D0A8B3D3A5B1D7A3B1D6A3B4D2A4B4CEA4B3D0A4B1D3A2B1D2A3B2D3A2B1D2A3B2D3A5B4D5
+A6B5D6A1B0D19BAACBA2B0CB9DABC692A0BB8593AE7A88A3707E9964728D5B6984636D86667089
+6A748D6A748D667089656F8868728B6C768F68728B67718A66708966708967718A68728B68728B
+67718A646E87646E87646E87646E87636D86636D86626C85626C85626E88616D87616D87616D87
+606C86606C86606C86606C8663718E606E8B5B69845866815767815969835D6D875F6F89596782
+5967825B69845A688355637E525F7F5562845C698C6170996C7BA47A89B28695BE8C9BC48E9DC6
+8F9EC78F9EC78A9BC68B9CC78C9DC88D9EC98D9EC98C9DC88B9CC78A9BC6899DCF8A9FCC8AA0C9
+8A9DC78B9CC8919ECAA9B3CEA7B2D2A4B0D6A2B0D5A2B3D1A3B3CDA3B2CFA3B0D2A5B4D5A4B3D4
+A2B1D2A0AFD0A0AFD09BAACB909FC08695B67984A0727D9967728E5F6A86606B8765708C697490
+69749068728B68728B667089656F8866708967718A66708B646E89646E8766708967718A667089
+646E87646E87646E87636D86646E87646E87646E87636D86636D86636D86626C85626C85616D87
+616D87606C86606C865F6B855F6B855F6B855F6B855A68855B69865C6A875D6B865D6D875B6B85
+5868825666805F6D8859678256647E5967815B69845A68855966865B688A526182536283546384
+5766875F6E8F6D7C9D7D8CAD8998B9899AC58B9CC78D9EC98E9FCA8E9FCA8D9EC98B9CC7899AC5
+889CCE8A9FCC8AA0C98A9DC78D9ECA94A1CDA6B3D5A3B2D3A0B3D49FB3D4A1B4D4A3B4D2A5B3CE
+A8B2CDACB7D3A0ABC7929DB98792AE7C87A3727D996E79956E799568728B68728B68728B68728B
+69738C69738C69738C69738C67718C67718C67718C67718C66708B66708B66708B66708B65718B
+65718B64708A64708A636F89636F89636F89636F89636C89636C89636C89626B88626B88626B88
+616A87616A87606B87606B87606B875F6A865F6A865F6A865F6A865F6A865B69865B69865B6986
+5B69865B69865A68855A68855A68855A68855A68855A68855A68855A68855A68855A68855A6885
+5966885966885A67895A67895B688A5C698B5C698B5D6A8C6776977382A37987AA7D8BB08896BD
+909DC78F9CC68F9CC88C9ECC899BC98B9CC894A3CE8996C094A0C8A9B6D8A1B0D199ACCD9AAECF
+9FB2D2A2B3D1A5B0CCA5AFCA838EAA76819D6A759167728E68738F66718D616C885F6A86667089
+66708966708966708966708966708966708966708967718A67718A67718A667089667089667089
+667089667089647088647088647088647088636F87636F87636F87626E86636D88636D88636D88
+626C87626C87616B86616B86616B86606B87606B875F6A865F6A865F6A865F6A865F6A865F6A86
+5B69865B69865B69865B69865A68855A68855A68855A68855A68855A68855A68855A68855A6885
+5A68855A68855A68855764845764845764845865855865855865855865855865855261805A6988
+5C6B8C5E6D8E6A789B7987AC8795BC94A2C98B9EC98C9FCA8B9CC892A0CD8A97C1939FC7A6B0D3
+A4B3D4A1B1D39DB0D1A1B4D4A4B3D296A1BD828CA76E7A9266728A616D85626E8667738B69758D
+68748C68748C67718A67718A67718A67718A667089667089667089667089667187667187667187
+667187667187667187657086657086647086647086647086636F85636F85626E84626E84626E84
+636D88626C87626C87626C87616B86616B86616B86606A855F6A865F6A865F6A865F6A865F6A86
+5E69855E69855E69855B69865B69865B69865B69865A68855A68855A68855A68855A68855A6885
+5A68855A68855A68855A68855A68855A68855B69865A68855A6885596784596784586683586683
+57658255657F57678152617E4F5E7B5362815D6C8D6F7E9F8493B4899CC690A3CE8B9CC88F9DCA
+8C99C5939FC79EA8CBA8B5D7A6B6D89AADCE9CAFCFA1B0CF8893AF646B8766728868748A6A768C
+68748A64708664708668748A6D798F67718A67718A67718A67718A667089667089667089656F88
+667187667187667187667187657086657086657086657086647086636F85636F85636F85626E84
+626E84626E84616D83626C85626C85626C85616B84616B84606A83606A83606A835F6A865F6A86
+5E69855E69855E69855E69855E69855E69855B69865B69865A68855A68855A68855A68855A6885
+5A68855A68855A68855A68855A68855A68855A68855A68855A68855D6B865C6A855C6A855B6984
+5B69845A68835A68835967825E6E875F6F885A6A8357678155657F52617E5A69866B7A978194BC
+8FA2CC8A9BC78D9BC88E9BC794A0C8A3ADD0A3B0D29EAED097AACB98A8C992A1C07D88A4666D89
+65708669748A6B768C687389626D83606B81636E84677288656F88656F88646E87646E87646E87
+636D86636D86636D86657086657086657086657086657086657086646F85646F85646F85646F85
+646F85636E84636E84626D83626D83626D83626C87616B86616B86616B86606A85606A85606A85
+5F69845E69855E69855E69855E69855D68845D68845D68845D68845A67875A67875A67875A6787
+5A67875A67875966865966865A67875A67875A67875A67875A67875A67875A67875A6787596782
+59678259678259678259678259678259678259678257657F5967815967815C6A855F6D88596782
+576580606E897589AC8A9EC38A9BC68F9DCA8E9BC895A1CBAAB2D69BA8CA9AA8CBA5B5D79BABCC
+7D8AAA69728F69708C6A758B69748A6772886671876873896B768C687389646F85656F88656F88
+656F88656F88646E87646E87646E87646E87656F88656F88656F88646E87646E87646E87646E87
+646E87646E87636D86636D86636D86626C85626C85626C85616B84616A87616A87616A87606986
+6069865F68855F68855F68855E69855E69855D68845D68845D68845D68845D68845D68845A6787
+5A67875A67875A67875966865966865966865966865A67875A67875A67875A67875A67875A6787
+5A67875A6787586683586683586683586683596784596784596784596784576582596784586683
+5A68855E6C895A6885556380586683677B9C7F93B68A9BC692A0CD8C99C694A0CAA6AED29BA5C8
+9EACCFAABADC97A7C86E7B9B5C6582666B88667089656F88636D86626C856670896A748D68728B
+626C85667089667089667089667089667089667089667089667089646D8A646D8A646D8A646D8A
+646D8A646D8A636C89636C89636C89636C89636C89626B88626B88616A87616A87616A87616A89
+6069886069886069885F68875F68875F68875F68875D68845D68845D68845D68845D68845C6783
+5C67835C67835A67875A67875A67875A67875966865966865966865966865A67875A67875A6787
+5A67875A67875A67875A67875A67875966865966865A67875A67875A67875A67875A67875B6888
+5D6A8C606D8F5C698B5764845966865865855461815562825A6F8C7488AB899AC595A3D28996C3
+919DC79FA7CB9DA7CA9EACCF9BABCD8494B5697696626B886C718E636D8867718C69738E656F8A
+626C87646E8966708B656F8A636D86646E87646E87646E87656F88656F88656F88656F88646D8A
+646D8A646D8A646D8A646D8A636C89636C89636C89636C89636C89626B88626B88626B88616A87
+616A87616A8760698A60698A60698A60698A5F68895F68895E67885E67885D68845D68845D6884
+5D68845C67835C67835C67835C67835A67875A67875A6787596686596686596686596686596686
+5A67875A67875A67875A67875A67875A67875A67875A6787596688596688596688596688596688
+5966885966885966885862865F698D5C668A5660845A64875E688B5E688B5F698C5368856D81A2
+899BC397A5D48591C18E9AC4A1ADC59FADCAA1B0D199A8C78898AF617181657285667187656F88
+656F88646E87646E87646E87646E87646E87646E87646E89646E89646E89646E89646E89646E89
+646E89646E89636E84636E84636E84626D83626D83626D83626D83626D83616C82616C82616C82
+616C82616C82616C82616C82606B81616C82616C82606B81606B81606B815F6A805F6A805F6A80
+58687F58687F58687F58687F58687F58687F58687F58687F57687C57687C57687C57687C57687C
+57687C57687C57687C57687C57687C57687C57687C57687C57687C57687C57687C57687C57687C
+57687C57687C57687C57687C57687C57687C57677E57677E57677E57677E57677E57677E57677E
+57677E546873677C91889BBC8B9FC2869AB58FA1B59CAAC49CA9C99EACCF95A4C58292AB5D6C7F
+616E81636D86657189657189657189647088647088647088647088647088616D87616D87616D87
+616D87616D87616D87616D87616D87636F87636F87626E86626E86626E86626E86626E86626E86
+616D85616D85616D85616D85616D85606C84606C84606C84606C84606C84606C84606C845F6B83
+5F6B835E6A825E6A825B6B845B6B845B6B845B6B845B6B845B6B845B6B845B6B845C6C835C6C83
+5C6C835C6C835C6C835C6C835C6C835C6C835C6C835C6C835C6C835C6C835C6C835C6C835C6C83
+5C6C835C6C835C6C835C6C835C6C835C6C835C6C835C6C835C6C835C6C855C6C855C6C855C6C85
+5C6C855C6C855C6C855C6C8556687C6B7C9A8A9BC68FA0CC8A9CC093A4C09CAAC59AA9CA9CACD0
+94A4C67B8CA65A6B7F626E86636F89606C84606C84606C84606C845F6B835F6B835F6B835F6B83
+616D87616D87616D87616D87616D87616D87616D87616D875E69855D68845D68845D68845D6884
+5D68845D68845D68845C67835C67835B66825B66825B66825B66825B66825B66825B66825B6682
+5A65815A65815A6581596480596480596480556380556380556380556380556380556380556380
+556380576580576580576580576580576580576580576580576580576580576580576580576580
+576580576580576580576580576580576580576580576580576580576580576580576580576580
+57658057658057658057658057658057658057658054638067759C8896C78C9CCF8B99C693A1C6
+9CAAC79AA9CA9AA9D094A4C67687A15B6B82647088646F8B67738B67738B67738B67738B67738B
+66728A66728A66728A616D85616D85616D85616D85616D85616D85616D85616D8565708C65708C
+646F8B646F8B646F8B646F8B646F8B646F8B636E8A626D89626D89626D89626D89626D89626D89
+616C88626D89626D89616C88616C88616C88606B87606B87606B875E69895E69895E69895E6989
+5E69895E69895E69895E69895E69855E69855E69855E69855E69855E69855E69855E69855E6985
+5E69855E69855E69855E69855E69855E69855E69855E69855E69855E69855E69855E69855E6985
+5E69855E69855E69875E69875E69875E69875E69875E69875E69875E698752607D627097838FC1
+8B98CC8A97C4919EC19BA9C499A6C698A6CB94A3C471819A5D6C81657187646E875F6C7F5F6C7F
+5F6C7F5F6C7F5F6C7F5F6C7F5E6B7E5E6B7E616D83616D83616D83616D83616D83616D83616D83
+616D835D69835D69835D69835D69835C68825C68825C68825C68825B67815B67815B67815B6781
+5B67815A66805A66805A66805B66825A65815A65815A658159648059648059648058637F5C6584
+5C65845C65845C65845C65845C65845C65845C65845B64815B64815B64815B64815B64815B6481
+5B64815B64815B64815B64815B64815B64815B64815B64815B64815B64815B64815B64815B6481
+5B64815B64815B64815B64815B64815B64815B64815B64815B64815B64815B64815B64815B6481
+59657B6873938692BC8E9BC78F9CBF97A2BEA0ABC19BA6C297A4C498A6C37281966471816D7588
+6870856E77886E77886D76876D76876D76876D76876D76876D7687687083687083687083687083
+6870836870836870836870836C748B6C748B6C748B6B738A6B738A6B738A6B738A6B738A6B738A
+6B738A6B738A6A72896A72896A72896A72896A72896A718B6A718B6A718B69708A69708A686F89
+686F89686F896A718B6A718B6A718B6A718B6A718B6A718B6A718B6A718B6A718B6A718B6A718B
+6A718B6A718B6A718B6A718B6A718B6A718B6A718B6A718B6A718B6A718B6A718B6A718B6A718B
+6A718B6A718B6A718B6A718B6A718B6A718B6A718B6A718B6A72896A72896A72896A72896A7289
+6A72896A72896A7289616D796C788E8993B6919EC1949FBB9BA6BA
+
+end
+%%PageTrailer
+%%Trailer
+%%EOF
diff --git a/macros/latex/contrib/moderncv/examples/picture.jpg b/macros/latex/contrib/moderncv/examples/picture.jpg
new file mode 100644
index 0000000000..6b54f4d090
--- /dev/null
+++ b/macros/latex/contrib/moderncv/examples/picture.jpg
Binary files differ
diff --git a/macros/latex/contrib/moderncv/examples/publications.bib b/macros/latex/contrib/moderncv/examples/publications.bib
new file mode 100644
index 0000000000..2b97096793
--- /dev/null
+++ b/macros/latex/contrib/moderncv/examples/publications.bib
@@ -0,0 +1,44 @@
+%% start of file `publications.bib'.
+%% Copyright 2006-2012 Xavier Danaux (xdanaux at gmail.com).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+@BOOK{book1,
+ author = {John Doe and Author 1},
+ title = {Title},
+ publisher = {Publisher},
+ edition = {edition},
+ year = {year},
+}
+
+@BOOK{book2,
+ author = {John Doe and Author 2},
+ title = {Title},
+ publisher = {Publisher},
+ edition = {edition},
+ year = {year},
+}
+
+@MISC{misc1,
+ author = {John Doe},
+ title = {Title},
+ year = {year},
+}
+
+@MISC{misc2,
+ author = {John Doe and Author 3},
+ title = {Title},
+ year = {year},
+}
+
+@MISC{misc3,
+ author = {John Doe},
+ title = {Title},
+ year = {year},
+}
+
+
+%% end of file `publications.bib'.
diff --git a/macros/latex/contrib/moderncv/examples/template-es.pdf b/macros/latex/contrib/moderncv/examples/template-es.pdf
new file mode 100644
index 0000000000..450ce70e3a
--- /dev/null
+++ b/macros/latex/contrib/moderncv/examples/template-es.pdf
Binary files differ
diff --git a/macros/latex/contrib/moderncv/examples/template-es.tex b/macros/latex/contrib/moderncv/examples/template-es.tex
new file mode 100644
index 0000000000..e2dae8651c
--- /dev/null
+++ b/macros/latex/contrib/moderncv/examples/template-es.tex
@@ -0,0 +1,131 @@
+%% Inicio del archivo `template-es.tex'.
+%% Copyright 2006-2013 Xavier Danaux (xdanaux@gmail.com).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+\documentclass[11pt,a4paper,sans]{moderncv} % opciones posibles incluyen tamaño de fuente ('10pt', '11pt' and '12pt'), tamaño de papel ('a4paper', 'letterpaper', 'a5paper', 'legalpaper', 'executivepaper' y 'landscape') y familia de fuentes ('sans' y 'roman')
+
+% temas de moderncv
+\moderncvstyle{casual} % las opciones de estilo son 'casual' (por omision),'classic', 'oldstyle' y 'banking'
+\moderncvcolor{blue} % opciones de color 'blue' (por omision), 'orange', 'green', 'red', 'purple', 'grey' y 'black'
+%\renewcommand{\familydefault}{\sfdefault} % para seleccionar la fuente por omision, use '\sfdefault' para la fuente sans serif, '\rmdefault' para la fuente roman, o cualquier nombre de fuente
+%\nopagenumbers{} % elimine el comentario para suprimir la numeracion automatica de las paginas para CVs mayores a una pagina
+
+% codificacion de caracteres
+%\usepackage[utf8]{inputenc} % reemplace con su codificacion
+%\usepackage{CJKutf8} % si necesita usa CJK para redactar su CV en chino, japones o coreano
+
+% ajustes para los margenes de pagina
+\usepackage[scale=0.75]{geometry}
+%\setlength{\hintscolumnwidth}{3cm} % si desea cambiar el ando de la columna para las fechas
+
+% datos personales
+\name{John}{Doe}
+\title{T\'itulo del CV (opcional)} % dato opcional, elimine la linea si no desea el dato
+\address{calle y n\'umero}{c\'odigo postal y ciudad} % dato opcional, elimine la linea si no desea el dato
+\phone[mobile]{+1~(234)~567~890} % dato opcional, elimine la linea si no desea el dato
+\phone[fixed]{+2~(345)~678~901} % dato opcional, elimine la linea si no desea el dato
+\phone[fax]{+3~(456)~789~012} % dato opcional, elimine la linea si no desea el dato
+\email{john@doe.org} % dato opcional, elimine la linea si no desea el dato
+\homepage{www.johndoe.com} % dato opcional, elimine la linea si no desea el dato
+\extrainfo{informacion adicional} % dato opcional, elimine la linea si no desea el dato
+\photo[64pt][0.4pt]{picture} % '64pt' es la altura a la que la imagen debe ser ajustada, 0.4pt es grosor del marco que lo contiene (eliga 0pt para eliminar el marco) y 'picture' es el nombre del archivo; dato opcional, elimine la linea si no desea el dato
+\quote{Alguna cita (opcional)} % dato opcional, elimine la linea si no desea el dato
+
+% para mostrar etiquetas numericas en la bibliografia (por omision no se muestran etiquetas), solo es util si desea incluir citas en en CV
+%\makeatletter
+%\renewcommand*{\bibliographyitemlabel}{\@biblabel{\arabic{enumiv}}}
+%\makeatother
+
+% bibliografia con varias fuentes
+%\usepackage{multibib}
+%\newcites{book,misc}{{Libros},{Otros}}
+%----------------------------------------------------------------------------------
+% contenido
+%----------------------------------------------------------------------------------
+\begin{document}
+%\begin{CJK*}{UTF8}{gbsn} % para redactar el CV en chino usando CJK
+\maketitle
+
+\section{Formaci\'on acad\'emica}
+\cventry{a\~no--a\~no}{Grado}{Instituci\'on}{Ciudad}{\textit{Grade}}{Descripci\'on} % Los argumentos del 3 al 6 pueden permanecer vacios
+\cventry{a\~no--a\~no}{Grado}{Instituci\'on}{Ciudad}{\textit{Grade}}{Descripci\'on}
+
+\section{Tesis de maestr\'ia}
+\cvitem{t\'itulo}{\emph{T\'itulo}}
+\cvitem{sinodares}{Sinodales}
+\cvitem{descripci\'on}{Una breve descripci\'on de la tesis}
+
+\section{Experiencia}
+\subsection{Vocacional}
+\cventry{a\~no--a\~no}{t\'itulo del puesto}{Empleador}{Ciudad}{}{Descripci\'on general, no m\'as de 1 \'o 2 l\'ineas.\newline{}%
+Detalle de logros:%
+\begin{itemize}%
+\item Logro 1;
+\item Logro 2, con sub-logros:
+ \begin{itemize}%
+ \item Sub-logro (a);
+ \item Sub-logro (b), con sub-sub-logros (¡evite hacer esto!);
+ \begin{itemize}
+ \item Sub-sub-logro i;
+ \item Sub-sub-logro ii;
+ \item Sub-sub-logro iii;
+ \end{itemize}
+ \item Sub-logro (c);
+ \end{itemize}
+\item Logro 3.
+\end{itemize}}
+\cventry{a\~no--a\~no}{t\'itulo del puesto}{Empleador}{Ciudad}{}{Descripci\'on l\'inea 1\newline{}Descripci\'on l\'inea 2}
+\subsection{Miscel\'aneo}
+\cventry{a\~no--a\~no}{t\'itulo del puesto}{Empleador}{Ciudad}{}{Descripci\'on}
+
+\section{Idiomas}
+\cvitemwithcomment{Idioma 1}{nivel}{Comentario}
+\cvitemwithcomment{Idioma 2}{nivel}{Comentario}
+\cvitemwithcomment{Idioma 3}{nivel}{Comentario}
+
+\section{Conocimientos de computaci\'on}
+\cvdoubleitem{categor\'ia 1}{XXX, YYY, ZZZ}{categor\'ia 4}{XXX, YYY, ZZZ}
+\cvdoubleitem{categor\'ia 2}{XXX, YYY, ZZZ}{categor\'ia 5}{XXX, YYY, ZZZ}
+\cvdoubleitem{categor\'ia 3}{XXX, YYY, ZZZ}{categor\'ia 6}{XXX, YYY, ZZZ}
+
+\section{Interests}
+\cvitem{hobby 1}{Descripci\'on}
+\cvitem{hobby 2}{Descripci\'on}
+\cvitem{hobby 3}{Descripci\'on}
+
+\section{Extra 1}
+\cvlistitem{Tema 1}
+\cvlistitem{Tema 2}
+\cvlistitem{Tema 3}
+
+\renewcommand{\listitemsymbol}{-~} % para cambiar el simbolo para las listas
+
+\section{Extra 2}
+\cvlistdoubleitem{Tema 1}{Tema 4}
+\cvlistdoubleitem{Tema 2}{Tema 5\cite{book1}}
+\cvlistdoubleitem{Tema 3}{}
+
+% Las publicaciones tomadas de un archivo de BibTeX sin usar multibib\renewcommand*{\bibliographyitemlabel}{\@biblabel{\arabic{enumiv}}}
+
+\nocite{*}
+\bibliographystyle{plain}
+\bibliography{publications} % 'publications' es el nombre del archivo BibTeX
+
+% Las publicaciones tomadas de un archivo BibTeX usando el paquete multibib
+%\section{Publicaciones}
+%\nocitebook{book1,book2}
+%\bibliographystylebook{plain}
+%\bibliographybook{publications} % 'publications' es el nombre del archivo BibTeX
+%\nocitemisc{misc1,misc2,misc3}
+%\bibliographystylemisc{plain}
+%\bibliographymisc{publications} % 'publications' es el nombre del archivo BibTeX
+
+%\clearpage\end{CJK*} % si esta redactando su CV en chino usando CJK, \clearpage es requerido por fancyhdr para que funcione correctamente con CJK, aunque esto eliminara la numeracion de pagina al dejar \lastpage como no definido
+\end{document}
+
+
+%% fin del archivo `template-es.tex'.
diff --git a/macros/latex/contrib/moderncv/examples/template-multibib.pdf b/macros/latex/contrib/moderncv/examples/template-multibib.pdf
new file mode 100644
index 0000000000..2346de10d7
--- /dev/null
+++ b/macros/latex/contrib/moderncv/examples/template-multibib.pdf
Binary files differ
diff --git a/macros/latex/contrib/moderncv/examples/template-multibib.tex b/macros/latex/contrib/moderncv/examples/template-multibib.tex
new file mode 100644
index 0000000000..cade26db91
--- /dev/null
+++ b/macros/latex/contrib/moderncv/examples/template-multibib.tex
@@ -0,0 +1,165 @@
+%% start of file `template.tex'.
+%% Copyright 2006-2013 Xavier Danaux (xdanaux@gmail.com).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+\documentclass[11pt,a4paper,sans]{moderncv} % possible options include font size ('10pt', '11pt' and '12pt'), paper size ('a4paper', 'letterpaper', 'a5paper', 'legalpaper', 'executivepaper' and 'landscape') and font family ('sans' and 'roman')
+
+% moderncv themes
+\moderncvstyle{casual} % style options are 'casual' (default), 'classic', 'oldstyle' and 'banking'
+\moderncvcolor{blue} % color options 'blue' (default), 'orange', 'green', 'red', 'purple', 'grey' and 'black'
+%\renewcommand{\familydefault}{\sfdefault} % to set the default font; use '\sfdefault' for the default sans serif font, '\rmdefault' for the default roman one, or any tex font name
+%\nopagenumbers{} % uncomment to suppress automatic page numbering for CVs longer than one page
+
+% character encoding
+%\usepackage[utf8]{inputenc} % if you are not using xelatex ou lualatex, replace by the encoding you are using
+%\usepackage{CJKutf8} % if you need to use CJK to typeset your resume in Chinese, Japanese or Korean
+
+% adjust the page margins
+\usepackage[scale=0.75]{geometry}
+%\setlength{\hintscolumnwidth}{3cm} % if you want to change the width of the column with the dates
+%\setlength{\makecvtitlenamewidth}{10cm} % for the 'classic' style, if you want to force the width allocated to your name and avoid line breaks. be careful though, the length is normally calculated to avoid any overlap with your personal info; use this at your own typographical risks...
+
+% personal data
+\name{John}{Doe}
+\title{Resumé title} % optional, remove / comment the line if not wanted
+\address{street and number}{postcode city}{country}% optional, remove / comment the line if not wanted; the "postcode city" and "country" arguments can be omitted or provided empty
+\phone[mobile]{+1~(234)~567~890} % optional, remove / comment the line if not wanted; the optional "type" of the phone can be "mobile" (default), "fixed" or "fax"
+\phone[fixed]{+2~(345)~678~901}
+\phone[fax]{+3~(456)~789~012}
+\email{john@doe.org} % optional, remove / comment the line if not wanted
+\homepage{www.johndoe.com} % optional, remove / comment the line if not wanted
+\social[linkedin]{john.doe} % optional, remove / comment the line if not wanted
+\social[twitter]{jdoe} % optional, remove / comment the line if not wanted
+\social[github]{jdoe} % optional, remove / comment the line if not wanted
+\extrainfo{additional information} % optional, remove / comment the line if not wanted
+\photo[64pt][0.4pt]{picture} % optional, remove / comment the line if not wanted; '64pt' is the height the picture must be resized to, 0.4pt is the thickness of the frame around it (put it to 0pt for no frame) and 'picture' is the name of the picture file
+\quote{Some quote} % optional, remove / comment the line if not wanted
+
+% to show numerical labels in the bibliography (default is to show no labels); only useful if you make citations in your resume
+%\makeatletter
+%\renewcommand*{\bibliographyitemlabel}{\@biblabel{\arabic{enumiv}}}
+%\makeatother
+%\renewcommand*{\bibliographyitemlabel}{[\arabic{enumiv}]}% CONSIDER REPLACING THE ABOVE BY THIS
+
+% bibliography with mutiple entries
+\usepackage{multibib}
+\newcites{book,misc}{{Books},{Others}}
+%----------------------------------------------------------------------------------
+% content
+%----------------------------------------------------------------------------------
+\begin{document}
+%\begin{CJK*}{UTF8}{gbsn} % to typeset your resume in Chinese using CJK
+%----- resume ---------------------------------------------------------
+\makecvtitle
+
+\section{Education}
+\cventry{year--year}{Degree}{Institution}{City}{\textit{Grade}}{Description} % arguments 3 to 6 can be left empty
+\cventry{year--year}{Degree}{Institution}{City}{\textit{Grade}}{Description}
+
+\section{Master thesis}
+\cvitem{title}{\emph{Title}}
+\cvitem{supervisors}{Supervisors}
+\cvitem{description}{Short thesis abstract}
+
+\section{Experience}
+\subsection{Vocational}
+\cventry{year--year}{Job title}{Employer}{City}{}{General description no longer than 1--2 lines.\newline{}%
+Detailed achievements:%
+\begin{itemize}%
+\item Achievement 1;
+\item Achievement 2, with sub-achievements:
+ \begin{itemize}%
+ \item Sub-achievement (a);
+ \item Sub-achievement (b), with sub-sub-achievements (don't do this!);
+ \begin{itemize}
+ \item Sub-sub-achievement i;
+ \item Sub-sub-achievement ii;
+ \item Sub-sub-achievement iii;
+ \end{itemize}
+ \item Sub-achievement (c);
+ \end{itemize}
+\item Achievement 3.
+\end{itemize}}
+\cventry{year--year}{Job title}{Employer}{City}{}{Description line 1\newline{}Description line 2}
+\subsection{Miscellaneous}
+\cventry{year--year}{Job title}{Employer}{City}{}{Description}
+
+\section{Languages}
+\cvitemwithcomment{Language 1}{Skill level}{Comment}
+\cvitemwithcomment{Language 2}{Skill level}{Comment}
+\cvitemwithcomment{Language 3}{Skill level}{Comment}
+
+\section{Computer skills}
+\cvdoubleitem{category 1}{XXX, YYY, ZZZ}{category 4}{XXX, YYY, ZZZ}
+\cvdoubleitem{category 2}{XXX, YYY, ZZZ}{category 5}{XXX, YYY, ZZZ}
+\cvdoubleitem{category 3}{XXX, YYY, ZZZ}{category 6}{XXX, YYY, ZZZ}
+
+\section{Interests}
+\cvitem{hobby 1}{Description}
+\cvitem{hobby 2}{Description}
+\cvitem{hobby 3}{Description}
+
+\section{Extra 1}
+\cvlistitem{Item 1}
+\cvlistitem{Item 2}
+\cvlistitem{Item 3. This item is particularly long and therefore normally spans over several lines. Did you notice the indentation when the line wraps?}
+
+\section{Extra 2}
+\cvlistdoubleitem{Item 1}{Item 4}
+\cvlistdoubleitem{Item 2}{Item 5\cite{book1}}
+\cvlistdoubleitem{Item 3}{Item 6. Like item 3 in the single column list before, this item is particularly long to wrap over several lines.}
+
+\section{References}
+\begin{cvcolumns}
+ \cvcolumn{Category 1}{\begin{itemize}\item Person 1\item Person 2\item Person 3\end{itemize}}
+ \cvcolumn{Category 2}{Amongst others:\begin{itemize}\item Person 1, and\item Person 2\end{itemize}(more upon request)}
+ \cvcolumn[0.5]{All the rest \& some more}{\textit{That} person, and \textbf{those} also (all available upon request).}
+\end{cvcolumns}
+
+% Publications from a BibTeX file without multibib
+% for numerical labels: \renewcommand{\bibliographyitemlabel}{\@biblabel{\arabic{enumiv}}}% CONSIDER MERGING WITH PREAMBLE PART
+% to redefine the heading string ("Publications"): \renewcommand{\refname}{Articles}
+%\nocite{*}
+%\bibliographystyle{plain}
+%\bibliography{publications} % 'publications' is the name of a BibTeX file
+
+% Publications from a BibTeX file using the multibib package
+\section{Publications}
+\nocitebook{book1,book2}
+\bibliographystylebook{plain}
+\bibliographybook{publications} % 'publications' is the name of a BibTeX file
+\nocitemisc{misc1,misc2,misc3}
+\bibliographystylemisc{plain}
+\bibliographymisc{publications} % 'publications' is the name of a BibTeX file
+
+\clearpage
+%----- letter ---------------------------------------------------------
+% recipient data
+\recipient{Company Recruitment team}{Company, Inc.\\123 somestreet\\some city}
+\date{January 01, 1984}
+\opening{Dear Sir or Madam,}
+\closing{Yours faithfully,}
+\enclosure[Attached]{curriculum vit\ae{}} % use an optional argument to use a string other than "Enclosure", or redefine \enclname
+\makelettertitle
+
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ullamcorper neque sit amet lectus facilisis sed luctus nisl iaculis. Vivamus at neque arcu, sed tempor quam. Curabitur pharetra tincidunt tincidunt. Morbi volutpat feugiat mauris, quis tempor neque vehicula volutpat. Duis tristique justo vel massa fermentum accumsan. Mauris ante elit, feugiat vestibulum tempor eget, eleifend ac ipsum. Donec scelerisque lobortis ipsum eu vestibulum. Pellentesque vel massa at felis accumsan rhoncus.
+
+Suspendisse commodo, massa eu congue tincidunt, elit mauris pellentesque orci, cursus tempor odio nisl euismod augue. Aliquam adipiscing nibh ut odio sodales et pulvinar tortor laoreet. Mauris a accumsan ligula. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Suspendisse vulputate sem vehicula ipsum varius nec tempus dui dapibus. Phasellus et est urna, ut auctor erat. Sed tincidunt odio id odio aliquam mattis. Donec sapien nulla, feugiat eget adipiscing sit amet, lacinia ut dolor. Phasellus tincidunt, leo a fringilla consectetur, felis diam aliquam urna, vitae aliquet lectus orci nec velit. Vivamus dapibus varius blandit.
+
+Duis sit amet magna ante, at sodales diam. Aenean consectetur porta risus et sagittis. Ut interdum, enim varius pellentesque tincidunt, magna libero sodales tortor, ut fermentum nunc metus a ante. Vivamus odio leo, tincidunt eu luctus ut, sollicitudin sit amet metus. Nunc sed orci lectus. Ut sodales magna sed velit volutpat sit amet pulvinar diam venenatis.
+
+Albert Einstein discovered that $e=mc^2$ in 1905.
+
+\[ e=\lim_{n \to \infty} \left(1+\frac{1}{n}\right)^n \]
+
+\makeletterclosing
+
+%\clearpage\end{CJK*} % if you are typesetting your resume in Chinese using CJK; the \clearpage is required for fancyhdr to work correctly with CJK, though it kills the page numbering by making \lastpage undefined
+\end{document}
+
+
+%% end of file `template.tex'.
diff --git a/macros/latex/contrib/moderncv/examples/template-zh.pdf b/macros/latex/contrib/moderncv/examples/template-zh.pdf
new file mode 100644
index 0000000000..de7171771c
--- /dev/null
+++ b/macros/latex/contrib/moderncv/examples/template-zh.pdf
Binary files differ
diff --git a/macros/latex/contrib/moderncv/examples/template-zh.tex b/macros/latex/contrib/moderncv/examples/template-zh.tex
new file mode 100644
index 0000000000..6d29b828aa
--- /dev/null
+++ b/macros/latex/contrib/moderncv/examples/template-zh.tex
@@ -0,0 +1,130 @@
+%% start of file `template-zh.tex'.
+%% Copyright 2006-2013 Xavier Danaux (xdanaux@gmail.com).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+\documentclass[11pt,a4paper,sans]{moderncv} % possible options include font size ('10pt', '11pt' and '12pt'), paper size ('a4paper', 'letterpaper', 'a5paper', 'legalpaper', 'executivepaper' and 'landscape') and font family ('sans' and 'roman')
+
+% moderncv 主题
+\moderncvstyle{casual} % 选项参数是 ‘casual’, ‘classic’, ‘oldstyle’ 和 ’banking’
+\moderncvcolor{blue} % 选项参数是 ‘blue’ (默认)、‘orange’、‘green’、‘red’、‘purple’ 和 ‘grey’
+%\nopagenumbers{} % 消除注释以取消自动页码生成功能
+
+% 字符编码
+\usepackage[utf8]{inputenc} % 替换你正在使用的编码
+\usepackage{CJKutf8}
+
+% 调整页面出血
+\usepackage[scale=0.75]{geometry}
+%\setlength{\hintscolumnwidth}{3cm} % 如果你希望改变日期栏的宽度
+
+% 个人信息
+\name{小龙}{李}
+\title{简历题目 (可选项)} % 可选项、如不需要可删除本行
+\address{街道及门牌号}{邮编及城市} % 可选项、如不需要可删除本行
+\phone[mobile]{+1~(234)~567~890} % 可选项、如不需要可删除本行
+\phone[fixed]{+2~(345)~678~901} % 可选项、如不需要可删除本行
+\phone[fax]{+3~(456)~789~012} % 可选项、如不需要可删除本行
+\email{xiaolong@li.com.cn} % 可选项、如不需要可删除本行
+\homepage{www.xialongli.com} % 可选项、如不需要可删除本行
+\extrainfo{附加信息 (可选项)} % 可选项、如不需要可删除本行
+\photo[64pt][0.4pt]{picture} % ‘64pt’是图片必须压缩至的高度、‘0.4pt‘是图片边框的宽度 (如不需要可调节至0pt)、’picture‘ 是图片文件的名字;可选项、如不需要可删除本行
+\quote{引言(可选项)} % 可选项、如不需要可删除本行
+
+% 显示索引号;仅用于在简历中使用了引言
+%\makeatletter
+%\renewcommand*{\bibliographyitemlabel}{\@biblabel{\arabic{enumiv}}}
+%\makeatother
+
+% 分类索引
+%\usepackage{multibib}
+%\newcites{book,misc}{{Books},{Others}}
+%----------------------------------------------------------------------------------
+% 内容
+%----------------------------------------------------------------------------------
+\begin{document}
+\begin{CJK}{UTF8}{gbsn} % 详情参阅CJK文件包
+\maketitle
+
+\section{教育背景}
+\cventry{年 -- 年}{学位}{院校}{城市}{\textit{成绩}}{说明} % 第3到第6编码可留白
+\cventry{年 -- 年}{学位}{院校}{城市}{\textit{成绩}}{说明}
+
+\section{毕业论文}
+\cvitem{题目}{\emph{题目}}
+\cvitem{导师}{导师}
+\cvitem{说明}{\small 论文简介}
+
+\section{工作背景}
+\subsection{专业}
+\cventry{年 -- 年}{职位}{公司}{城市}{}{不超过1--2行的概况说明\newline{}%
+工作内容:%
+\begin{itemize}%
+\item 工作内容 1;
+\item 工作内容 2、 含二级内容:
+ \begin{itemize}%
+ \item 二级内容 (a);
+ \item 二级内容 (b)、含三级内容 (不建议使用);
+ \begin{itemize}
+ \item 三级内容 i;
+ \item 三级内容 ii;
+ \item 三级内容 iii;
+ \end{itemize}
+ \item 二级内容 (c);
+ \end{itemize}
+\item 工作内容 3。
+\end{itemize}}
+\cventry{年 -- 年}{职位}{公司}{城市}{}{说明行1\newline{}说明行2}
+\subsection{其他}
+\cventry{年 -- 年}{职位}{公司}{城市}{}{说明}
+
+\section{语言技能}
+\cvitemwithcomment{语言 1}{水平}{评价}
+\cvitemwithcomment{语言 2}{水平}{评价}
+\cvitemwithcomment{语言 3}{水平}{评价}
+
+\section{计算机技能}
+\cvdoubleitem{类别 1}{XXX, YYY, ZZZ}{类别 4}{XXX, YYY, ZZZ}
+\cvdoubleitem{类别 2}{XXX, YYY, ZZZ}{类别 5}{XXX, YYY, ZZZ}
+\cvdoubleitem{类别 3}{XXX, YYY, ZZZ}{类别 6}{XXX, YYY, ZZZ}
+
+\section{个人兴趣}
+\cvitem{爱好 1}{\small 说明}
+\cvitem{爱好 2}{\small 说明}
+\cvitem{爱好 3}{\small 说明}
+
+\section{其他 1}
+\cvlistitem{项目 1}
+\cvlistitem{项目 2}
+\cvlistitem{项目 3}
+
+\renewcommand{\listitemsymbol}{-} % 改变列表符号
+
+\section{其他 2}
+\cvlistdoubleitem{项目 1}{项目 4}
+\cvlistdoubleitem{项目 2}{项目 5\cite{book1}}
+\cvlistdoubleitem{项目 3}{}
+
+% 来自BibTeX文件但不使用multibib包的出版物
+%\renewcommand*{\bibliographyitemlabel}{\@biblabel{\arabic{enumiv}}}% BibTeX的数字标签
+\nocite{*}
+\bibliographystyle{plain}
+\bibliography{publications} % 'publications' 是BibTeX文件的文件名
+
+% 来自BibTeX文件并使用multibib包的出版物
+%\section{出版物}
+%\nocitebook{book1,book2}
+%\bibliographystylebook{plain}
+%\bibliographybook{publications} % 'publications' 是BibTeX文件的文件名
+%\nocitemisc{misc1,misc2,misc3}
+%\bibliographystylemisc{plain}
+%\bibliographymisc{publications} % 'publications' 是BibTeX文件的文件名
+
+\clearpage\end{CJK}
+\end{document}
+
+
+%% 文件结尾 `template-zh.tex'.
diff --git a/macros/latex/contrib/moderncv/examples/template.tex b/macros/latex/contrib/moderncv/examples/template.tex
new file mode 100644
index 0000000000..fbfd3477f4
--- /dev/null
+++ b/macros/latex/contrib/moderncv/examples/template.tex
@@ -0,0 +1,165 @@
+%% start of file `template.tex'.
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+\documentclass[11pt,a4paper,sans]{moderncv} % possible options include font size ('10pt', '11pt' and '12pt'), paper size ('a4paper', 'letterpaper', 'a5paper', 'legalpaper', 'executivepaper' and 'landscape') and font family ('sans' and 'roman')
+
+% moderncv themes
+\moderncvstyle{casual} % style options are 'casual' (default), 'classic', 'banking', 'oldstyle' and 'fancy'
+\moderncvcolor{blue} % color options 'black', 'blue' (default), 'burgundy', 'green', 'grey', 'orange', 'purple' and 'red'
+%\renewcommand{\familydefault}{\sfdefault} % to set the default font; use '\sfdefault' for the default sans serif font, '\rmdefault' for the default roman one, or any tex font name
+%\nopagenumbers{} % uncomment to suppress automatic page numbering for CVs longer than one page
+
+% character encoding
+%\usepackage[utf8]{inputenc} % if you are not using xelatex ou lualatex, replace by the encoding you are using
+%\usepackage{CJKutf8} % if you need to use CJK to typeset your resume in Chinese, Japanese or Korean
+
+% adjust the page margins
+\usepackage[scale=0.75]{geometry}
+%\setlength{\hintscolumnwidth}{3cm} % if you want to change the width of the column with the dates
+%\setlength{\makecvtitlenamewidth}{10cm} % for the 'classic' style, if you want to force the width allocated to your name and avoid line breaks. be careful though, the length is normally calculated to avoid any overlap with your personal info; use this at your own typographical risks...
+
+% personal data
+\name{John}{Doe}
+\title{Resumé title} % optional, remove / comment the line if not wanted
+\address{street and number}{postcode city}{country}% optional, remove / comment the line if not wanted; the "postcode city" and "country" arguments can be omitted or provided empty
+\phone[mobile]{+1~(234)~567~890} % optional, remove / comment the line if not wanted; the optional "type" of the phone can be "mobile" (default), "fixed" or "fax"
+\phone[fixed]{+2~(345)~678~901}
+\phone[fax]{+3~(456)~789~012}
+\email{john@doe.org} % optional, remove / comment the line if not wanted
+\homepage{www.johndoe.com} % optional, remove / comment the line if not wanted
+\social[linkedin]{john.doe} % optional, remove / comment the line if not wanted
+\social[twitter]{jdoe} % optional, remove / comment the line if not wanted
+\social[github]{jdoe} % optional, remove / comment the line if not wanted
+\extrainfo{additional information} % optional, remove / comment the line if not wanted
+\photo[64pt][0.4pt]{picture} % optional, remove / comment the line if not wanted; '64pt' is the height the picture must be resized to, 0.4pt is the thickness of the frame around it (put it to 0pt for no frame) and 'picture' is the name of the picture file
+\quote{Some quote} % optional, remove / comment the line if not wanted
+
+% bibliography adjustements (only useful if you make citations in your resume, or print a list of publications using BibTeX)
+% to show numerical labels in the bibliography (default is to show no labels)
+\makeatletter\renewcommand*{\bibliographyitemlabel}{\@biblabel{\arabic{enumiv}}}\makeatother
+% to redefine the bibliography heading string ("Publications")
+%\renewcommand{\refname}{Articles}
+
+% bibliography with mutiple entries
+%\usepackage{multibib}
+%\newcites{book,misc}{{Books},{Others}}
+%----------------------------------------------------------------------------------
+% content
+%----------------------------------------------------------------------------------
+\begin{document}
+%\begin{CJK*}{UTF8}{gbsn} % to typeset your resume in Chinese using CJK
+%----- resume ---------------------------------------------------------
+\makecvtitle
+
+\section{Education}
+\cventry{year--year}{Degree}{Institution}{City}{\textit{Grade}}{Description} % arguments 3 to 6 can be left empty
+\cventry{year--year}{Degree}{Institution}{City}{\textit{Grade}}{Description}
+
+\section{Master thesis}
+\cvitem{title}{\emph{Title}}
+\cvitem{supervisors}{Supervisors}
+\cvitem{description}{Short thesis abstract}
+
+\section{Experience}
+\subsection{Vocational}
+\cventry{year--year}{Job title}{Employer}{City}{}{General description no longer than 1--2 lines.\newline{}%
+Detailed achievements:%
+\begin{itemize}%
+\item Achievement 1;
+\item Achievement 2, with sub-achievements:
+ \begin{itemize}%
+ \item Sub-achievement (a);
+ \item Sub-achievement (b), with sub-sub-achievements (don't do this!);
+ \begin{itemize}
+ \item Sub-sub-achievement i;
+ \item Sub-sub-achievement ii;
+ \item Sub-sub-achievement iii;
+ \end{itemize}
+ \item Sub-achievement (c);
+ \end{itemize}
+\item Achievement 3.
+\end{itemize}}
+\cventry{year--year}{Job title}{Employer}{City}{}{Description line 1\newline{}Description line 2}
+\subsection{Miscellaneous}
+\cventry{year--year}{Job title}{Employer}{City}{}{Description}
+
+\section{Languages}
+\cvitemwithcomment{Language 1}{Skill level}{Comment}
+\cvitemwithcomment{Language 2}{Skill level}{Comment}
+\cvitemwithcomment{Language 3}{Skill level}{Comment}
+
+\section{Computer skills}
+\cvdoubleitem{category 1}{XXX, YYY, ZZZ}{category 4}{XXX, YYY, ZZZ}
+\cvdoubleitem{category 2}{XXX, YYY, ZZZ}{category 5}{XXX, YYY, ZZZ}
+\cvdoubleitem{category 3}{XXX, YYY, ZZZ}{category 6}{XXX, YYY, ZZZ}
+
+\section{Interests}
+\cvitem{hobby 1}{Description}
+\cvitem{hobby 2}{Description}
+\cvitem{hobby 3}{Description}
+
+\section{Extra 1}
+\cvlistitem{Item 1}
+\cvlistitem{Item 2}
+\cvlistitem{Item 3. This item is particularly long and therefore normally spans over several lines. Did you notice the indentation when the line wraps?}
+
+\section{Extra 2}
+\cvlistdoubleitem{Item 1}{Item 4}
+\cvlistdoubleitem{Item 2}{Item 5\cite{book1}}
+\cvlistdoubleitem{Item 3}{Item 6. Like item 3 in the single column list before, this item is particularly long to wrap over several lines.}
+
+\section{References}
+\begin{cvcolumns}
+ \cvcolumn{Category 1}{\begin{itemize}\item Person 1\item Person 2\item Person 3\end{itemize}}
+ \cvcolumn{Category 2}{Amongst others:\begin{itemize}\item Person 1, and\item Person 2\end{itemize}(more upon request)}
+ \cvcolumn[0.5]{All the rest \& some more}{\textit{That} person, and \textbf{those} also (all available upon request).}
+\end{cvcolumns}
+
+% Publications from a BibTeX file without multibib
+% for numerical labels: \renewcommand{\bibliographyitemlabel}{\@biblabel{\arabic{enumiv}}}% CONSIDER MERGING WITH PREAMBLE PART
+% to redefine the heading string ("Publications"): \renewcommand{\refname}{Articles}
+\nocite{*}
+\bibliographystyle{plain}
+\bibliography{publications} % 'publications' is the name of a BibTeX file
+
+% Publications from a BibTeX file using the multibib package
+%\section{Publications}
+%\nocitebook{book1,book2}
+%\bibliographystylebook{plain}
+%\bibliographybook{publications} % 'publications' is the name of a BibTeX file
+%\nocitemisc{misc1,misc2,misc3}
+%\bibliographystylemisc{plain}
+%\bibliographymisc{publications} % 'publications' is the name of a BibTeX file
+
+\clearpage
+%----- letter ---------------------------------------------------------
+% recipient data
+\recipient{Company Recruitment team}{Company, Inc.\\123 somestreet\\some city}
+\date{January 01, 1984}
+\opening{Dear Sir or Madam,}
+\closing{Yours faithfully,}
+\enclosure[Attached]{curriculum vit\ae{}} % use an optional argument to use a string other than "Enclosure", or redefine \enclname
+\makelettertitle
+
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis ullamcorper neque sit amet lectus facilisis sed luctus nisl iaculis. Vivamus at neque arcu, sed tempor quam. Curabitur pharetra tincidunt tincidunt. Morbi volutpat feugiat mauris, quis tempor neque vehicula volutpat. Duis tristique justo vel massa fermentum accumsan. Mauris ante elit, feugiat vestibulum tempor eget, eleifend ac ipsum. Donec scelerisque lobortis ipsum eu vestibulum. Pellentesque vel massa at felis accumsan rhoncus.
+
+Suspendisse commodo, massa eu congue tincidunt, elit mauris pellentesque orci, cursus tempor odio nisl euismod augue. Aliquam adipiscing nibh ut odio sodales et pulvinar tortor laoreet. Mauris a accumsan ligula. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Suspendisse vulputate sem vehicula ipsum varius nec tempus dui dapibus. Phasellus et est urna, ut auctor erat. Sed tincidunt odio id odio aliquam mattis. Donec sapien nulla, feugiat eget adipiscing sit amet, lacinia ut dolor. Phasellus tincidunt, leo a fringilla consectetur, felis diam aliquam urna, vitae aliquet lectus orci nec velit. Vivamus dapibus varius blandit.
+
+Duis sit amet magna ante, at sodales diam. Aenean consectetur porta risus et sagittis. Ut interdum, enim varius pellentesque tincidunt, magna libero sodales tortor, ut fermentum nunc metus a ante. Vivamus odio leo, tincidunt eu luctus ut, sollicitudin sit amet metus. Nunc sed orci lectus. Ut sodales magna sed velit volutpat sit amet pulvinar diam venenatis.
+
+Albert Einstein discovered that $e=mc^2$ in 1905.
+
+\[ e=\lim_{n \to \infty} \left(1+\frac{1}{n}\right)^n \]
+
+\makeletterclosing
+
+%\clearpage\end{CJK*} % if you are typesetting your resume in Chinese using CJK; the \clearpage is required for fancyhdr to work correctly with CJK, though it kills the page numbering by making \lastpage undefined
+\end{document}
+
+
+%% end of file `template.tex'.
diff --git a/macros/latex/contrib/moderncv/examples/template_banking_red-fullrules-center.pdf b/macros/latex/contrib/moderncv/examples/template_banking_red-fullrules-center.pdf
new file mode 100644
index 0000000000..5e4ed3adbf
--- /dev/null
+++ b/macros/latex/contrib/moderncv/examples/template_banking_red-fullrules-center.pdf
Binary files differ
diff --git a/macros/latex/contrib/moderncv/examples/template_banking_red-norules.pdf b/macros/latex/contrib/moderncv/examples/template_banking_red-norules.pdf
new file mode 100644
index 0000000000..212e81cec3
--- /dev/null
+++ b/macros/latex/contrib/moderncv/examples/template_banking_red-norules.pdf
Binary files differ
diff --git a/macros/latex/contrib/moderncv/examples/template_banking_red-shortrules-right.pdf b/macros/latex/contrib/moderncv/examples/template_banking_red-shortrules-right.pdf
new file mode 100644
index 0000000000..a1303b4f83
--- /dev/null
+++ b/macros/latex/contrib/moderncv/examples/template_banking_red-shortrules-right.pdf
Binary files differ
diff --git a/macros/latex/contrib/moderncv/examples/template_banking_red.pdf b/macros/latex/contrib/moderncv/examples/template_banking_red.pdf
new file mode 100644
index 0000000000..fed8f9e52e
--- /dev/null
+++ b/macros/latex/contrib/moderncv/examples/template_banking_red.pdf
Binary files differ
diff --git a/macros/latex/contrib/moderncv/examples/template_casual_orange-left.pdf b/macros/latex/contrib/moderncv/examples/template_casual_orange-left.pdf
new file mode 100644
index 0000000000..f770841377
--- /dev/null
+++ b/macros/latex/contrib/moderncv/examples/template_casual_orange-left.pdf
Binary files differ
diff --git a/macros/latex/contrib/moderncv/examples/template_casual_orange.pdf b/macros/latex/contrib/moderncv/examples/template_casual_orange.pdf
new file mode 100644
index 0000000000..372f62e7bc
--- /dev/null
+++ b/macros/latex/contrib/moderncv/examples/template_casual_orange.pdf
Binary files differ
diff --git a/macros/latex/contrib/moderncv/examples/template_classic_green-right.pdf b/macros/latex/contrib/moderncv/examples/template_classic_green-right.pdf
new file mode 100644
index 0000000000..250643fcc7
--- /dev/null
+++ b/macros/latex/contrib/moderncv/examples/template_classic_green-right.pdf
Binary files differ
diff --git a/macros/latex/contrib/moderncv/examples/template_classic_green.pdf b/macros/latex/contrib/moderncv/examples/template_classic_green.pdf
new file mode 100644
index 0000000000..988f94304c
--- /dev/null
+++ b/macros/latex/contrib/moderncv/examples/template_classic_green.pdf
Binary files differ
diff --git a/macros/latex/contrib/moderncv/examples/template_fancy_purple.pdf b/macros/latex/contrib/moderncv/examples/template_fancy_purple.pdf
new file mode 100644
index 0000000000..eb447daa9b
--- /dev/null
+++ b/macros/latex/contrib/moderncv/examples/template_fancy_purple.pdf
Binary files differ
diff --git a/macros/latex/contrib/moderncv/examples/template_oldstyle_grey.pdf b/macros/latex/contrib/moderncv/examples/template_oldstyle_grey.pdf
new file mode 100644
index 0000000000..4d914260e2
--- /dev/null
+++ b/macros/latex/contrib/moderncv/examples/template_oldstyle_grey.pdf
Binary files differ
diff --git a/macros/latex/contrib/moderncv/moderncv.cls b/macros/latex/contrib/moderncv/moderncv.cls
new file mode 100644
index 0000000000..193f8e2bb6
--- /dev/null
+++ b/macros/latex/contrib/moderncv/moderncv.cls
@@ -0,0 +1,691 @@
+%% start of file `moderncv.cls'.
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{moderncv}[2015/07/28 v2.0.0 modern curriculum vitae and letter document class]
+
+
+%-------------------------------------------------------------------------------
+% class options
+%
+% (need to be done before the external package loading, for example because
+% we need \paperwidth, \paperheight and \@ptsize to be defined before loading
+% geometry and fancyhdr)
+%-------------------------------------------------------------------------------
+% paper size option
+\DeclareOption{a4paper}{
+ \setlength\paperheight{297mm}
+ \setlength\paperwidth{210mm}}
+\DeclareOption{a5paper}{
+ \setlength\paperheight{210mm}
+ \setlength\paperwidth{148mm}}
+\DeclareOption{b5paper}{
+ \setlength\paperheight{250mm}
+ \setlength\paperwidth{176mm}}
+\DeclareOption{letterpaper}{
+ \setlength\paperheight{11in}
+ \setlength\paperwidth{8.5in}}
+\DeclareOption{legalpaper}{
+ \setlength\paperheight{14in}
+ \setlength\paperwidth{8.5in}}
+\DeclareOption{executivepaper}{
+ \setlength\paperheight{10.5in}
+ \setlength\paperwidth{7.25in}}
+\DeclareOption{landscape}{
+ \setlength\@tempdima{\paperheight}
+ \setlength\paperheight{\paperwidth}
+ \setlength\paperwidth{\@tempdima}}
+
+% font size options
+\newcommand\@ptsize{}
+\DeclareOption{10pt}{\renewcommand\@ptsize{0}}
+\DeclareOption{11pt}{\renewcommand\@ptsize{1}}
+\DeclareOption{12pt}{\renewcommand\@ptsize{2}}
+
+% font type options
+\DeclareOption{sans}{\AtBeginDocument{\renewcommand{\familydefault}{\sfdefault}}}
+\DeclareOption{roman}{\AtBeginDocument{\renewcommand{\familydefault}{\rmdefault}}}
+
+% draft/final option
+\DeclareOption{draft}{\setlength\overfullrule{5pt}}
+\DeclareOption{final}{\setlength\overfullrule{0pt}}
+
+% execute default options
+\ExecuteOptions{a4paper,11pt,final}
+
+% process given options
+\ProcessOptions\relax
+\input{size1\@ptsize.clo}
+
+
+%-------------------------------------------------------------------------------
+% required packages
+%-------------------------------------------------------------------------------
+% \AtEndPreamble hook (loading etoolbox instead of defining the macro, as to avoid incompatibilities with etoolbox (and packages relying on it) defining the macro too)
+\RequirePackage{etoolbox}
+%\let\@endpreamblehook\@empty
+%\def\AtEndPreamble{\g@addto@macro\@endpreamblehook}
+%\let\document@original\document
+%\def\document{\endgroup\@endpreamblehook\begingroup\document@original}
+
+% if... then... else... constructs
+\RequirePackage{ifthen}
+% TODO: move to xifthen and \isempty{<arg>} instead of \equal{<arg>}{}
+
+% color
+\RequirePackage[table]{xcolor}
+
+% font loading
+\RequirePackage{ifxetex,ifluatex}
+\newif\ifxetexorluatex
+\ifxetex
+ \xetexorluatextrue
+\else
+ \ifluatex
+ \xetexorluatextrue
+ \else
+ \xetexorluatexfalse
+ \fi
+\fi
+% automatic loading of latin modern fonts
+%\ifxetexorluatex
+% \RequirePackage{fontspec}
+% \defaultfontfeatures{Ligatures=TeX}
+% \RequirePackage{unicode-math}
+% \setmainfont{Latin Modern}
+% \setsansfont{Latin Modern Sans}
+% \setmathfont{Latin Modern Math}
+%\else
+ \RequirePackage[T1]{fontenc}
+ \IfFileExists{lmodern.sty}%
+ {\RequirePackage{lmodern}}%
+ {}
+%\fi
+
+% hyper links (hyperref is loaded at the end of the preamble to pass options required by loaded packages such as CJK)
+\newcommand*\pdfpagemode{UseNone}% do not show thumbnails or bookmarks on opening (on supporting browsers); set \pdfpagemode to "UseOutlines" to show bookmarks
+\RequirePackage{url}
+\urlstyle{tt}
+\AtEndPreamble{
+ \pagenumbering{arabic}% has to be issued before loading hyperref, as to set \thepage and hence to avoid hyperref issuing a warning and setting pdfpagelabels=false
+ \RequirePackage[unicode]{hyperref}% unicode is required for unicode pdf metadata
+ \hypersetup{
+ breaklinks,
+ baseurl = http://,
+ pdfborder = 0 0 0,
+ pdfpagemode = \pdfpagemode,
+ pdfstartpage = 1,
+ pdfcreator = {\LaTeX{} with 'moderncv' package},
+% pdfproducer = {\LaTeX{}},% will/should be set automatically to the correct TeX engine used
+ bookmarksopen = true,
+ bookmarksdepth= 2,% to show sections and subsections
+ pdfauthor = {\@firstname{}~\@lastname{}},
+ pdftitle = {\@firstname{}~\@lastname{}\notblank{\@title}{ -- \@title}{}},
+ pdfsubject = {Resum\'{e} of \@firstname{}~\@lastname{}},
+ pdfkeywords = {\@firstname{}~\@lastname{}, curriculum vit\ae{}, resum\'{e}}}}
+
+% graphics
+\RequirePackage{graphicx}
+
+% headers and footers
+\RequirePackage{fancyhdr}
+\fancypagestyle{plain}{
+ \renewcommand{\headrulewidth}{0pt}
+ \renewcommand{\footrulewidth}{0pt}
+ \fancyhf{}}
+% page numbers in footer if more than 1 page
+\newif\if@displaypagenumbers\@displaypagenumberstrue
+\newcommand*{\nopagenumbers}{\@displaypagenumbersfalse}
+\AtEndPreamble{%
+ \AtBeginDocument{%
+ % fancyhdr length
+ \renewcommand{\headwidth}{\textwidth}
+ \if@displaypagenumbers%
+ \@ifundefined{r@lastpage}{}{%
+ \ifthenelse{\pageref{lastpage}>1}{%
+ \newlength{\pagenumberwidth}%
+ \settowidth{\pagenumberwidth}{\color{color2}\addressfont\itshape\strut\thepage/\pageref{lastpage}}%
+ \fancypagestyle{plain}{%
+ \fancyfoot[r]{\parbox[b]{\pagenumberwidth}{\color{color2}\pagenumberfont\strut\thepage/\pageref{lastpage}}}}% the parbox is required to ensure alignment with a possible center footer (e.g., as in the casual style)
+ \pagestyle{plain}}{}}%
+ \AtEndDocument{\label{lastpage}}\else\fi}}
+\pagestyle{plain}
+
+% reduced list spacing
+% package providing hooks into lists
+% originally developped by Jakob Schiøtz (see http://dcwww.camd.dtu.dk/~schiotz/comp/LatexTips/tweaklist.sty)
+% modified and distributed with moderncv(not available otherwise on ctan)
+\RequirePackage{tweaklist}
+\renewcommand*{\itemhook}{%
+ \@minipagetrue% removes spacing before lists as they use \addvspace, which doesn't add vertical space inside minipages
+ \@noparlisttrue% removes spacing at end of lists, caused by \par
+ \setlength{\topsep}{0pt}% normally not required thanks to \@minipagetrue
+ \setlength{\partopsep}{0pt}% normally not required thanks to \@minipagetrue
+ \setlength{\parsep}{0pt}% not required when \itemsep and \parskip are set to 0pt (?)
+ \setlength{\parskip}{0pt}%
+ \setlength{\itemsep}{0pt}}
+\renewcommand*{\enumhook}{\itemhook{}}
+\renewcommand*{\deschook}{\itemhook{}}
+
+% lengths calculations
+\RequirePackage{calc}
+
+% advanced command arguments (LaTeX 3)
+\RequirePackage{xparse}
+% TODO (?): replace all \newcommand by \NewDocumentCommand
+
+% micro-typography (e.g., character protrusion, font expansion, hyphenatable letterspacing)
+\RequirePackage{microtype}
+
+% stack of key-value elements, used to save personal information
+\RequirePackage{moderncvcollection}
+
+% compatibility package with older versions of moderncv
+\RequirePackageWithOptions{moderncvcompatibility}
+
+
+%-------------------------------------------------------------------------------
+% class definition
+%-------------------------------------------------------------------------------
+% minimal base settings
+\setlength\lineskip{1\p@}
+\setlength\normallineskip{1\p@}
+\renewcommand\baselinestretch{}
+\setlength{\parindent}{0\p@}
+\setlength{\parskip}{0\p@}
+\setlength\columnsep{10\p@}
+\setlength\columnseprule{0\p@}
+\setlength\fboxsep{3\p@}
+\setlength\fboxrule{.4\p@}
+\setlength\arrayrulewidth{.4\p@}
+\setlength\doublerulesep{2\p@}
+
+% not set on purpose
+%\setlength\arraycolsep{5\p@}
+%\setlength\tabcolsep{6\p@}
+%\setlength\tabbingsep{\labelsep}
+
+\raggedbottom
+\onecolumn
+
+
+%-------------------------------------------------------------------------------
+% overall design commands definitions
+%-------------------------------------------------------------------------------
+% elements
+%---------
+% defines one's name
+% usage: \name{<firstname>}{<lastname>}
+\newcommand*{\name}[2]{\def\@firstname{#1}\def\@lastname{#2}}
+
+% defines one's title (optional)
+% usage: \title{<title>}
+\renewcommand*{\title}[1]{\def\@title{#1}}
+
+% defines one's address (optional)
+% usage: \address{<street>}{<city>}{<country>}
+% where the <city> and <country> arguments can be omitted or provided empty
+\NewDocumentCommand{\address}{mG{}G{}}{\def\@addressstreet{#1}\def\@addresscity{#2}\def\@addresscountry{#3}}
+
+% defines one's email (optional)
+% usage: \email{<email adress>}
+\newcommand*{\email}[1]{\def\@email{#1}}
+
+% defines one's home page (optional)
+% usage: \homepage{<url>}
+\newcommand*{\homepage}[1]{\def\@homepage{#1}}
+
+% adds a fixed/mobile/fax number to one's personal information (optional)
+% usage: \phone[<optional type>]{<number>}
+% where <optional type> should be either "fixed" (default), "mobile" or "fax
+\collectionnew{phones}
+\newcommand*{\phone}[2][fixed]{\collectionadd[#1]{phones}{#2}}
+
+% adds a social link to one's personal information (optional)
+% usage: \social[<optional type>][<optional url>]{<account name>}
+% where <optional type> should be either "linkedin", "twitter" or "github"
+\collectionnew{socials}
+\NewDocumentCommand{\social}{O{}O{}m}{%
+ \ifthenelse{\equal{#2}{}}%
+ {%
+ \ifthenelse{\equal{#1}{linkedin}}{\collectionadd[linkedin]{socials}{\protect\httplink[#3]{www.linkedin.com/in/#3}}}{}%
+ \ifthenelse{\equal{#1}{twitter}} {\collectionadd[twitter]{socials} {\protect\httplink[#3]{www.twitter.com/#3}}} {}%
+ \ifthenelse{\equal{#1}{github}} {\collectionadd[github]{socials} {\protect\httplink[#3]{www.github.com/#3}}} {}%
+ }
+ {\collectionadd[#1]{socials}{\protect\httplink[#3]{#2}}}}
+
+% defines additional personal information (optional)
+% usage: \extrainfo{<text>}
+\newcommand*{\extrainfo}[1]{\def\@extrainfo{#1}}
+
+% colors
+%-------
+\definecolor{color0}{rgb}{0,0,0}% main default color, normally left to black
+\definecolor{color1}{rgb}{0,0,0}% primary scheme color
+\definecolor{color2}{rgb}{0,0,0}% secondary scheme color
+\definecolor{color3}{rgb}{0,0,0}% tertiary scheme color
+
+% symbols
+%--------
+% itemize labels (the struts were added to correct inter-item spacing (works for single line items, until a solution is found for multi-line ones...)
+\newcommand*{\labelitemi} {\strut\textcolor{color1}{\large\rmfamily\textbullet}}% the \rmfamily is required to force Latin Modern fonts when using sans serif, as OMS/lmss/m/n is not defined and gets substituted by OMS/cmsy/m/n
+\newcommand*{\labelitemii} {\strut\textcolor{color1}{\large\bfseries-}}
+\newcommand*{\labelitemiii} {\strut\textcolor{color1}{\rmfamily\textperiodcentered}}% alternative: \textasteriskcentered; the \rmfamily is required to force Latin Modern fonts when using sans serif, as OMS/lmss/m/n is not defined and gets substituted by OMS/cmsy/m/n
+\newcommand*{\labelitemiv} {\labelitemiii}
+
+% enumerate labels
+\renewcommand{\theenumi} {\@arabic\c@enumi}
+\renewcommand{\theenumii} {\@alph\c@enumii}
+\renewcommand{\theenumiii} {\@roman\c@enumiii}
+\renewcommand{\theenumiv} {\@Alph\c@enumiv}
+
+% other symbols
+\newcommand*{\listitemsymbol} {\labelitemi~}
+\newcommand*{\addresssymbol} {}
+\newcommand*{\mobilephonesymbol} {}
+\newcommand*{\fixedphonesymbol} {}
+\newcommand*{\faxphonesymbol} {}
+\newcommand*{\emailsymbol} {}
+\newcommand*{\homepagesymbol} {}
+\newcommand*{\linkedinsocialsymbol}{}
+\newcommand*{\twittersocialsymbol} {}
+\newcommand*{\githubsocialsymbol} {}
+
+% other
+%------
+% fonts
+\AtBeginDocument{\normalfont\color{color0}}
+
+% strings for internationalisation
+\newcommand*{\refname}{Publications}
+\newcommand*{\enclname}{Enclosure}
+
+% makes the footer (normally used both for the resume and the letter)
+% usage: \makefooter
+\newcommand*{\makefooter}{}%
+
+% loads a style variant (a combination of header, body and footer)
+% usage: \moderncvstyle{<style variant name>}
+\newcommand*{\moderncvstyle}[2][]{
+ \RequirePackage[#1]{moderncvstyle#2}}
+
+% loads a header variant
+% usage: \moderncvhead[<optional head option>]{<header variant number>}
+\newcommand*{\moderncvhead}[2][]{
+ \expandafter\RequirePackage\expandafter[\expandafter#1\expandafter]{\expandafter moderncvhead\romannumeral #2}}
+
+% loads a body variant
+% usage: \moderncvbody[<optional body option>]{<body variant number>}
+\newcommand*{\moderncvbody}[2][]{
+ \expandafter\RequirePackage\expandafter[\expandafter#1\expandafter]{\expandafter moderncvbody\romannumeral #2}}
+
+% loads a footer variant
+% usage: \moderncvfoot{<footer variant number>}
+\newcommand*{\moderncvfoot}[1]{
+ \expandafter\RequirePackage\expandafter{\expandafter moderncvfoot\romannumeral #1}}
+
+% loads a color scheme
+% usage: \moderncvcolor{<color scheme name>}
+\newcommand*{\moderncvcolor}[1]{
+ \RequirePackage{moderncvcolor#1}}
+
+% loads an icons set
+% usage: \moderncvicons{<icon set name>}
+\newcommand*{\moderncvicons}[1]{
+ \RequirePackage{moderncvicons#1}}
+
+% recomputes all automatic lengths
+\newcommand*{\recomputeheadlengths}{\recomputecvheadlengths}
+\newcommand*{\recomputebodylengths}{\recomputecvbodylengths}
+\newcommand*{\recomputefootlengths}{\recomputecvfootlengths}
+\newcommand*{\recomputelengths}{\recomputecvlengths}
+\AtBeginDocument{\recomputelengths{}}
+
+% creates a command if not yet defined
+\newcommand*{\@initializecommand}[2]{%
+ \ifdefined#1
+ \renewcommand{#1}{#2}%
+ \else%
+ \newcommand*{#1}{#2}\fi}
+
+% creates a length if not yet defined
+\newcommand*{\@initializelength}[1]{%
+ \ifdefined#1
+ \else%
+ \newlength{#1}\fi%
+ \setlength{#1}{0pt}}
+
+% creates a box if not yet defined
+\newcommand*{\@initializebox}[1]{%
+ \ifdefined#1
+ \savebox{#1}{}%
+ \else%
+ \newsavebox{#1}\fi}
+
+% creates an if switch if not yet defined
+\newcommand*{\@initializeif}[1]{%
+% \ifdefined#1% not working due to the nested \if
+% \else%
+ \newif#1%\fi
+ }
+
+% custom strut for spacing; the first argument is the vertical offset of the strut, the second its total height
+\newcommand*{\@moderncvstrut}[2]{%
+ \rule[-#1]{0pt}{#2}}
+
+
+%-------------------------------------------------------------------------------
+% resume design commands definitions
+%-------------------------------------------------------------------------------
+% elements
+% defines one's picture (optional)
+% usage: photo[<picture width>][<picture frame thickness>]{<picture filename>}
+\NewDocumentCommand{\photo}{O{64pt}O{0.4pt}m}{\def\@photowidth{#1}\def\@photoframewidth{#2}\def\@photo{#3}}
+\newcommand*{\quote}[1]{\def\@quote{#1}}
+
+% fonts
+\newcommand*{\namefont}{}
+\newcommand*{\titlefont}{}
+\newcommand*{\addressfont}{}
+\newcommand*{\quotefont}{}
+\newcommand*{\sectionfont}{}
+\newcommand*{\subsectionfont}{}
+\newcommand*{\hintfont}{}
+\newcommand*{\pagenumberfont}{\addressfont\itshape}
+% fake small caps - cfr http://tex.stackexchange.com/questions/55664/fake-small-caps-with-xetex-fontspec
+%\def\fakesc{\bgroup\obeyspaces\fakescaux}
+%\def\fakescaux#1{\fakescauxii #1\relax\relax\egroup}
+%\def\fakescauxii#1{%
+%\ifx\relax#1\else \ifcat#1\@sptoken{} \expandafter\expandafter\expandafter\fakescauxii\else
+%\ifnum`#1=\uccode`#1 {\normalsize #1}\else {\footnotesize \uppercase{#1}}\fi \expandafter\expandafter\expandafter\fakescauxii\expandafter\fi\fi}
+
+% styles
+\newcommand*{\namestyle}[1]{{\namefont#1}}
+\newcommand*{\titlestyle}[1]{{\titlefont#1}}
+\newcommand*{\addressstyle}[1]{{\addressfont#1}}
+\newcommand*{\quotestyle}[1]{{\quotefont#1}}
+\newcommand*{\sectionstyle}[1]{{\sectionfont#1}}
+\newcommand*{\subsectionstyle}[1]{{\subsectionfont#1}}
+\newcommand*{\hintstyle}[1]{{\hintfont#1}}
+\newcommand*{\pagenumberstyle}[1]{{\pagenumberfont#1}}
+
+% recompute all resume lengths
+\newcommand*{\recomputecvheadlengths}{}
+\newcommand*{\recomputecvbodylengths}{}
+\newcommand*{\recomputecvfootlengths}{}
+\newcommand*{\recomputecvlengths}{%
+ \recomputecvheadlengths%
+ \recomputecvbodylengths%
+ \recomputecvfootlengths}
+
+% internal maketitle command to issue a new line only when required
+\newif\if@firstdetailselement\@firstdetailselementtrue
+\newcommand*{\makenewline}[1][0pt]{%
+ \if@firstdetailselement%
+ \strut% to ensure baseline alignment, e.g. with when put in the margin vs sections that also contains a \strut
+ \else%
+ \\[#1]\fi%
+ \@firstdetailselementfalse}
+
+% makes the resume title
+% usage: \makecvtitle
+\newcommand*{\makecvtitle}{%
+ \makecvhead%
+ \makecvfoot}
+\newcommand*{\makecvhead}{}
+\newcommand*{\makecvfoot}{}
+
+% makes a resume section
+% usage: \section{<title>}
+% identical starred and non-starred variants should be defined for compatibility with other packages (e.g. with natbib, that uses \section*{} for the bibliography header)
+\NewDocumentCommand{\section}{sm}{}
+
+% makes a resume subsection
+% usage: \subsection{title}
+\NewDocumentCommand{\subsection}{sm}{}
+
+% makes a resume line with a header and a corresponding text
+% usage: \cvitem[spacing]{header}{text}
+\newcommand*{\cvitem}[3][.25em]{}
+
+% makes a resume line 2 headers and their corresponding text
+% usage: \cvdoubleitem[spacing]{header1}{text1}{header2}{text2}
+\newcommand*{\cvdoubleitem}[5][.25em]{}
+
+% makes a resume line with a list item
+% usage: \cvlistitem[label]{item}
+\newcommand*{\cvlistitem}[2][\listitemsymbol]{}
+
+% makes a resume line with 2 list items
+% usage: \cvlistdoubleitem[label]{item1}{item2}
+\newcommand*{\cvlistdoubleitem}[3][\listitemsymbol]{}
+
+% makes a typical resume job / education entry
+% usage: \cventry[spacing]{years}{degree/job title}{institution/employer}{localization}{optionnal: grade/...}{optional: comment/job description}
+\newcommand*{\cventry}[7][.25em]{}
+
+% makes a resume entry with a proficiency comment
+% usage: \cvitemwithcomment[spacing]{header}{text}{comment}
+\newcommand*{\cvitemwithcomment}[4][.25em]{}
+
+% makes a generic hyperlink
+% usage: \link[optional text]{link}
+\newcommand*{\link}[2][]{%
+ \ifthenelse{\equal{#1}{}}%
+ {\href{#2}{#2}}%
+ {\href{#2}{#1}}}
+
+% makes a http hyperlink
+% usage: \httplink[optional text]{link}
+\newcommand*{\httplink}[2][]{%
+ \ifthenelse{\equal{#1}{}}%
+ {\href{http://#2}{#2}}%
+ {\href{http://#2}{#1}}}
+
+% makes an email hyperlink
+% usage: \emaillink[optional text]{link}
+\newcommand*{\emaillink}[2][]{%
+ \ifthenelse{\equal{#1}{}}%
+ {\href{mailto:#2}{#2}}%
+ {\href{mailto:#2}{#1}}}
+
+% cvcolumns environment, where every column is created through \cvcolumn
+% usage: \begin{cvcolumns}
+% \cvcolumn[width]{head}{content}
+% \cvcolumn[width]{head}{content}
+% ...
+% \end{cvcolumns}
+% where "width" is the width as a fraction of the line length (between 0 and 1), "head" is the column header and "content" its content
+\newcounter{cvcolumnscounter}% counter for the number of columns
+\newcounter{cvcolumnsautowidthcounter}% counter for the number of columns with no column width provided, and which will then be equally distributed
+\newcounter{tmpiteratorcounter}% counter for any temporary purpose (e.g., iterating loops)
+\newlength{\cvcolumnsdummywidth}\setlength{\cvcolumnsdummywidth}{1000pt}% dummy width for total width, in order to enable arithmetics (TeX has no float variables, only integer counters or lengths)
+\newlength{\cvcolumnswidth}% total width available for head / content
+\newlength{\cvcolumnsautowidth}% total width of columns with no explicit width provided
+\newlength{\cvcolumnautowidth}% width of one of the columns with no explicit width provided (based on equal distribution of remaining space)
+\newif\if@cvcolumns@head@empty% whether or not at least one of the columns has a header
+\newenvironment*{cvcolumns}%
+ {% at environment opening: reset counters, lengths and ifs
+ \setcounter{cvcolumnscounter}{0}%
+ \setcounter{cvcolumnsautowidthcounter}{0}%
+ \setlength{\cvcolumnsautowidth}{\cvcolumnsdummywidth}%
+ \setlength{\cvcolumnautowidth}{0pt}%
+ \@cvcolumns@head@emptytrue\ignorespaces}%
+ {% at environment closing: typeset environment
+ % compute the width of each cvcolumn, considering a spacing of \separatorcolumnwidth and the columns with set width
+ \ifnum\thecvcolumnscounter>0%
+ \setlength{\cvcolumnswidth}{\maincolumnwidth-\value{cvcolumnscounter}\separatorcolumnwidth+\separatorcolumnwidth}%
+ \setlength{\cvcolumnautowidth}{\cvcolumnswidth*\ratio{\cvcolumnsautowidth}{\cvcolumnsdummywidth}/\value{cvcolumnsautowidthcounter}}\fi%
+ % pre-aggregate the tabular definition, heading and content (required before creating the tabular, as the tabular environment doesn't like loops --- probably because "&" generates a \endgroup)
+ % - the tabular definition is the aggregation of the different "\cvcolumn<i>@def" (by default "p{\cvcolumnautowidth}"), separated by "@{\hspace*{\separatorcolumnwidth}}"
+ % - the tabular heading is the aggregation of the different "\cvcolumn<i>@head", separated by "&"
+ % - the tabular content is the aggregation of the different "\cvcolumn<i>@content", separated by "&"
+ % to aggregate the different elements, \protected@edef or \g@addto@macro is required to avoid that \cvcolumns@def, -@head and -@content get expanded in subsequent redefinitions, which would cause errors due to the expansions of \hspace, of \subsectionstyle and possibly of user content/argument such as font commands
+ \def\cvcolumns@def{}%
+ \def\cvcolumns@head{}%
+ \def\cvcolumns@content{}%
+ \setcounter{tmpiteratorcounter}{0}%
+ % loop based on \g@addto@macro
+ \loop\ifnum\thetmpiteratorcounter<\thecvcolumnscounter%
+ \ifnum\thetmpiteratorcounter=0\else%
+ \g@addto@macro\cvcolumns@def{@{\hspace*{\separatorcolumnwidth}}}%
+ \g@addto@macro\cvcolumns@head{&}%
+ \g@addto@macro\cvcolumns@content{&}\fi%
+% \expandafter\g@addto@macro\expandafter\cvcolumns@def\expandafter{\csname cvcolumn\roman{tmpiteratorcounter}@def\endcsname}% % this creates issues with the colortbl" package (loaded by xcolor when passing the "table" option) as the column definitions passed to \begin{tabular} contains \cvcolumn<i>@def references that it doesn't understand; the next 2 lines expand \cvcolumn@def to the point it doesn't
+ \edef\tmpcvcolumn@def{\csname cvcolumn\roman{tmpiteratorcounter}@def\endcsname}%
+ \expandafter\g@addto@macro\expandafter\cvcolumns@def\expandafter{\tmpcvcolumn@def}%
+ \expandafter\g@addto@macro\expandafter\cvcolumns@head\expandafter{\csname cvcolumn\roman{tmpiteratorcounter}@head\endcsname}%
+ \expandafter\g@addto@macro\expandafter\cvcolumns@content\expandafter{\csname cvcolumn\roman{tmpiteratorcounter}@content\endcsname}%
+ \stepcounter{tmpiteratorcounter}%
+ \repeat%
+% % same loop based on \protected@edef
+% \loop\ifnum\thetmpiteratorcounter<\thecvcolumnscounter%
+% \ifnum\thetmpiteratorcounter=0\else%
+% \protected@edef\cvcolumns@def{\cvcolumns@def @{\hspace*{\separatorcolumnwidth}}}%
+% \protected@edef\cvcolumns@head{\cvcolumns@head &}%
+% \protected@edef\cvcolumns@content{\cvcolumns@content &}\fi%
+% \expandafter\protected@edef\expandafter\cvcolumns@def\expandafter{\expandafter\cvcolumns@def\expandafter\protect\csname cvcolumn\roman{tmpiteratorcounter}@def\endcsname}%
+% \expandafter\protected@edef\expandafter\cvcolumns@head\expandafter{\expandafter\cvcolumns@head\expandafter\protect\csname cvcolumn\roman{tmpiteratorcounter}@head\endcsname}%
+% \expandafter\protected@edef\expandafter\cvcolumns@content\expandafter{\expandafter\cvcolumns@content\expandafter\protect\csname cvcolumn\roman{tmpiteratorcounter}@content\endcsname}%
+% \stepcounter{tmpiteratorcounter}%
+% \repeat%
+ % create the tabular
+ \cvitem{}{%
+% \begin{tabular}{\cvcolumns@def}% this conflicts with the "colortbl" package (loaded by xcolor when passing the "table" option), and requires the below 2 lines to expand \cvcolumns@def
+ \def\begincvcolumns{\begin{tabular}[t]}% "[t]" is required for some body styles; the default alignment is "[c]"
+ \expandafter\begincvcolumns\expandafter{\cvcolumns@def}%
+ \if@cvcolumns@head@empty\else%
+ \cvcolumns@head%\\[-.8em]%
+% {\color{color1}\rule{\maincolumnwidth}{.25pt}}%
+ \\\fi%
+ \cvcolumns@content%
+ \end{tabular}}}
+
+% cvcolumn command, to create a column inside a cvcolumns environment
+% usage: \cvcolumn[width]{head}{content}
+% where "width" is the width as a fraction of the line length (between 0 and 1), "head" is the column header and "content" its content ("head" and "content" can contain "\\", "\newline" or any other paragraph command such as "itemize")
+\newcommand*{\cvcolumn}[3][\cvcolumnautowidth]{%
+% \def\cvcolumn@width{}%
+ \ifthenelse{\equal{#1}{\cvcolumnautowidth}}%
+ {% if no width fraction is provided, count this column as auto-adjusted and set its width to \cvcolumnsautowidth
+ \stepcounter{cvcolumnsautowidthcounter}%
+ \expandafter\expandafter\expandafter\def\expandafter\csname cvcolumn\roman{cvcolumnscounter}@def\endcsname{p{\cvcolumnautowidth}}%
+ \expandafter\expandafter\expandafter\def\expandafter\csname cvcolumn\roman{cvcolumnscounter}@head\endcsname{\protect\parbox[b]{\cvcolumnautowidth}{\protect\subsectionstyle{#2}}}}%
+ {% if a width is provided, set the width of the column to it and decrease the available space for auto-adjusted columns
+ \addtolength{\cvcolumnsautowidth}{-#1\cvcolumnsdummywidth}%
+ \expandafter\expandafter\expandafter\def\expandafter\csname cvcolumn\roman{cvcolumnscounter}@def\endcsname{p{#1\cvcolumnswidth}}%
+ \expandafter\expandafter\expandafter\def\expandafter\csname cvcolumn\roman{cvcolumnscounter}@head\endcsname{\protect\parbox[b]{#1\cvcolumnswidth}{\protect\subsectionstyle{#2}}}}%
+ \ifthenelse{\equal{#2}{}}{}{\@cvcolumns@head@emptyfalse}%
+ \expandafter\expandafter\expandafter\def\expandafter\csname cvcolumn\roman{cvcolumnscounter}@content\endcsname{\protect\cvcolumncell{#3}}%
+ \stepcounter{cvcolumnscounter}%
+ \ignorespaces}
+
+% internal cvcolumncell command, that enables a cvcolumn cell to contain paragraph commands (lists, newlines, etc)
+\newcommand*{\cvcolumncell}[1]{{% put cell inside a group, so that command redefinitions are only local
+ % roughly restore \\ to its regular definition (outside of tabular)
+ \renewcommand*{\\}{\newline}%
+ % enclose the contents of the cell inside a vertical box, to allow paragraph commands
+ \protect\vtop{#1}}}
+
+% thebibliography environment, for use with BibTeX and possibly multibib
+\newlength{\bibindent}
+\setlength{\bibindent}{1.5em}
+% bibliography item label
+\newcommand*{\bibliographyitemlabel}{}% use \@biblabel{\arabic{enumiv}} for BibTeX labels
+%\newif\if@multibibfirstbib\@multibibfirstbibfalse
+% bibliography head (section, etc}, depending on whether multibib is used
+\newcommand*{\bibliographyhead}[1]{\section{#1}}
+\AtEndPreamble{\@ifpackageloaded{multibib}{\renewcommand*{\bibliographyhead}[1]{\subsection{#1}}}{}}
+% thebibliography environment definition
+\newenvironment{thebibliography}[1]{}{}
+\newcommand*{\newblock}{\hskip .11em\@plus.33em\@minus.07em}
+\let\@openbib@code\@empty
+%% fix a bug (hardcoded bib label) in \@bibitem
+%\renewcommand\@bibitem[1]{%
+% \item\if@filesw \immediate\write\@auxout
+% {\string\bibcite{#1}{\theenumiv}}\fi\ignorespaces}% replaced "\the\value{\@listctr}" with "\theenumiv"
+
+% itemize, enumerate and description environment
+\setlength{\leftmargini} {1em}
+\leftmargin\leftmargini
+\setlength{\leftmarginii} {\leftmargini}
+\setlength{\leftmarginiii} {\leftmargini}
+\setlength{\leftmarginiv} {\leftmargini}
+\setlength{\leftmarginv} {\leftmargini}
+\setlength{\leftmarginvi} {\leftmargini}
+\setlength{\labelsep} {.5em}% this is the distance between the label and the body, but it pushes the label to the left rather than pushing the body to the right (to do the latter, modify \leftmargin(i)
+\setlength{\labelwidth} {\leftmargini}% unfortunately, \labelwidth is not defined by item level (i.e. no \labeliwidth, \labeliiwidth, etc)
+\addtolength{\labelwidth} {-\labelsep}
+\@beginparpenalty -\@lowpenalty
+\@endparpenalty -\@lowpenalty
+\@itempenalty -\@lowpenalty
+\newcommand\labelenumi{\theenumi.}
+\newcommand\labelenumii{(\theenumii)}
+\newcommand\labelenumiii{\theenumiii.}
+\newcommand\labelenumiv{\theenumiv.}
+\renewcommand\p@enumii{\theenumi}
+\renewcommand\p@enumiii{\p@enumii(\theenumii)}
+\renewcommand\p@enumiv{\p@enumiii\theenumiii}
+% description label
+\newcommand*\descriptionlabel[1]{\hspace\labelsep\normalfont\bfseries#1}
+
+% classical \today definition
+\def\today{\ifcase\month\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
+ \space\number\day, \number\year}
+
+%\newcommand{\widthofautobox}[1]{%
+% \widthof{\begin{tabular}{@{}l@{}}#1\end{tabular}}}
+
+%\newcommand{\autobox}[2][b]{%
+% \parbox[#1]{\widthofautobox{#2}}{#2}}
+
+
+%-------------------------------------------------------------------------------
+% letter design commands definitions
+%-------------------------------------------------------------------------------
+% elements
+\newcommand*{\recipient}[2]{\def\@recipientname{#1}\def\@recipientaddress{#2}}
+\renewcommand*{\date}[1]{\def\@date{#1}}\date{\today}
+\newcommand*{\opening}[1]{\def\@opening{#1}}
+\newcommand*{\closing}[1]{\def\@closing{#1}}
+\newcommand*{\enclosure}[2][]{%
+ % if an optional argument is provided, use it to redefine \enclname
+ \ifthenelse{\equal{#1}{}}{}{\renewcommand*{\enclname}{#1}}%
+ \def\@enclosure{#2}}
+
+% recompute all letter lengths
+\newcommand*{\recomputeletterheadlengths}{}
+\newcommand*{\recomputeletterbodylengths}{}
+\newcommand*{\recomputeletterfootlengths}{}
+\newcommand*{\recomputeletterlengths}{%
+ \recomputeletterheadlengths%
+ \recomputeletterbodylengths%
+ \recomputeletterfootlengths}
+
+% makes the letter title
+% usage: \makelettertitle
+\newcommand*{\makelettertitle}{%
+ \makeletterhead%
+ \makeletterfoot}
+\newcommand*{\makeletterhead}{}
+\newcommand*{\makeletterfoot}{}
+
+% makes the letter closing
+% usage: \makeletterclosing
+\newcommand*{\makeletterclosing}{}
+
+
+\endinput
+
+
+%% end of file `moderncv.cls'.
diff --git a/macros/latex/contrib/moderncv/moderncvbodyi.sty b/macros/latex/contrib/moderncv/moderncvbodyi.sty
new file mode 100644
index 0000000000..a86bcf2425
--- /dev/null
+++ b/macros/latex/contrib/moderncv/moderncvbodyi.sty
@@ -0,0 +1,174 @@
+%% start of file `moderncvbodyi.sty'.
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncvbodyi}[2015/07/28 v2.0.0 modern curriculum vitae and letter body variant: 1]
+
+
+%-------------------------------------------------------------------------------
+% required packages
+%-------------------------------------------------------------------------------
+
+
+%-------------------------------------------------------------------------------
+% overall body definition
+%-------------------------------------------------------------------------------
+% fonts
+\renewcommand*{\sectionfont}{\Large\mdseries\upshape}
+\renewcommand*{\subsectionfont}{\large\mdseries\upshape}
+\renewcommand*{\hintfont}{}
+
+% styles
+\renewcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{color1}{#1}}}
+\renewcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{color1}{#1}}}
+\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{color0}{#1}}}
+
+
+%-------------------------------------------------------------------------------
+% resume body definition
+%-------------------------------------------------------------------------------
+% lengths
+% used by \cvitem (and all children command)
+\@initializelength{\hintscolumnwidth} \setlength{\hintscolumnwidth}{0.175\textwidth}
+\@initializelength{\separatorcolumnwidth} \setlength{\separatorcolumnwidth}{0.025\textwidth}
+\@initializelength{\maincolumnwidth}
+% used by \cvdoubleitem
+\@initializelength{\doubleitemcolumnwidth}
+% used by \cvlistitem
+\@initializelength{\listitemsymbolwidth} \settowidth{\listitemsymbolwidth}{\listitemsymbol}
+\@initializelength{\listitemcolumnwidth}
+% used by \cvlistdoubleitem
+\@initializelength{\listdoubleitemcolumnwidth}
+% default moderncv \photo (change the definition such that by default the photo and its box align with the section bars
+\RenewDocumentCommand{\photo}{O{\hintscolumnwidth-0.8pt-2\fboxsep}O{0.4pt}m}{\def\@photowidth{#1}\def\@photoframewidth{#2}\def\@photo{#3}}%
+
+% commands
+\renewcommand*{\recomputecvbodylengths}{%
+ % body lengths
+ \setlength{\maincolumnwidth}{\textwidth-\leftskip-\rightskip-\separatorcolumnwidth-\hintscolumnwidth}%
+ \setlength{\listitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth}%
+ \setlength{\doubleitemcolumnwidth}{\maincolumnwidth-\hintscolumnwidth-\separatorcolumnwidth-\separatorcolumnwidth}%
+ \setlength{\doubleitemcolumnwidth}{0.5\doubleitemcolumnwidth}%
+ \setlength{\listdoubleitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth-\separatorcolumnwidth-\listitemsymbolwidth}%
+ \setlength{\listdoubleitemcolumnwidth}{0.5\listdoubleitemcolumnwidth}%
+ % regular lengths
+ \setlength{\parskip}{0\p@}}
+
+\@initializelength{\baseletterheight}
+\settoheight{\baseletterheight}{\sectionstyle{o}}
+\setlength{\baseletterheight}{\baseletterheight-0.95ex}
+\RenewDocumentCommand{\section}{sm}{%
+ \par\addvspace{2.5ex}%
+ \phantomsection{}% reset the anchor for hyperrefs
+ \addcontentsline{toc}{section}{#2}%
+ \cvitem[0ex]{\strut\raggedleft\raisebox{\baseletterheight}{\color{color1}\rule{\hintscolumnwidth}{0.95ex}}}{\strut\sectionstyle{#2}}%
+ \par\nobreak\addvspace{1ex}\@afterheading}% to avoid a pagebreak after the heading
+
+\RenewDocumentCommand{\subsection}{sm}{%
+ \par\addvspace{1ex}%
+ \phantomsection{}% reset the anchor for hyperrefs
+ \addcontentsline{toc}{subsection}{#2}%
+ \cvitem[0ex]{}{\strut\subsectionstyle{#2}}%
+ \par\nobreak\addvspace{.5ex}\@afterheading}% to avoid a pagebreak after the heading
+
+\renewcommand*{\cvitem}[3][.25em]{%
+ \begin{tabular}{@{}p{\hintscolumnwidth}@{\hspace{\separatorcolumnwidth}}p{\maincolumnwidth}@{}}%
+ \raggedleft\hintstyle{#2} &{#3}%
+ \end{tabular}%
+ \par\addvspace{#1}}
+
+\renewcommand*{\cvdoubleitem}[5][.25em]{%
+ \cvitem[#1]{#2}{%
+ \begin{minipage}[t]{\doubleitemcolumnwidth}#3\end{minipage}%
+ \hfill% fill of \separatorcolumnwidth
+ \begin{minipage}[t]{\hintscolumnwidth}\raggedleft\hintstyle{#4}\end{minipage}%
+ \hspace*{\separatorcolumnwidth}%
+ \begin{minipage}[t]{\doubleitemcolumnwidth}#5\end{minipage}}}
+
+\renewcommand*{\cvlistitem}[2][.25em]{%
+ \cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listitemcolumnwidth}#2\end{minipage}}}
+
+\renewcommand*{\cvlistdoubleitem}[3][.25em]{%
+ \cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#2\end{minipage}%
+ \hfill% fill of \separatorcolumnwidth
+ \ifthenelse{\equal{#3}{}}%
+ {}%
+ {\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#3\end{minipage}}}}
+
+\renewcommand*{\cventry}[7][.25em]{%
+ \cvitem[#1]{#2}{%
+ {\bfseries#3}%
+ \ifthenelse{\equal{#4}{}}{}{, {\slshape#4}}%
+ \ifthenelse{\equal{#5}{}}{}{, #5}%
+ \ifthenelse{\equal{#6}{}}{}{, #6}%
+ .\strut%
+ \ifx&#7&%
+ \else{\newline{}\begin{minipage}[t]{\linewidth}\small#7\end{minipage}}\fi}}
+
+\@initializebox{\cvitemwithcommentbox}
+\@initializelength{\cvitemwithcommentskilllength}
+\@initializelength{\cvitemwithcommentcommentlength}
+\renewcommand*{\cvitemwithcomment}[4][.25em]{%
+ \savebox{\cvitemwithcommentbox}{{#3}}%
+ \setlength{\cvitemwithcommentskilllength}{\widthof{\usebox{\cvitemwithcommentbox}}}%
+ \setlength{\cvitemwithcommentcommentlength}{\maincolumnwidth-\separatorcolumnwidth-\cvitemwithcommentskilllength}%
+ \cvitem[#1]{#2}{%
+ \begin{minipage}[t]{\cvitemwithcommentskilllength}\usebox{\cvitemwithcommentbox}\end{minipage}%
+ \hfill% fill of \separatorcolumnwidth
+ \begin{minipage}[t]{\cvitemwithcommentcommentlength}\raggedleft\small\itshape#4\end{minipage}}}
+
+\renewenvironment{thebibliography}[1]%
+ {%
+ \bibliographyhead{\refname}%
+% \small%
+ \begin{list}{\bibliographyitemlabel}%
+ {%
+ \setlength{\topsep}{0pt}%
+ \setlength{\labelwidth}{\hintscolumnwidth}%
+ \setlength{\labelsep}{\separatorcolumnwidth}%
+ \leftmargin\labelwidth%
+ \advance\leftmargin\labelsep%
+ \@openbib@code%
+ \usecounter{enumiv}%
+ \let\p@enumiv\@empty%
+ \renewcommand\theenumiv{\@arabic\c@enumiv}}%
+ \sloppy%
+ \clubpenalty4000%\@clubpenalty \clubpenalty%
+ \widowpenalty4000%
+ \sfcode`\.\@m%
+ \sfcode `\=1000\relax}%
+ {%
+ \def\@noitemerr{\@latex@warning{Empty `thebibliography' environment}}%
+ \end{list}}
+
+
+%-------------------------------------------------------------------------------
+% letter style definition
+%-------------------------------------------------------------------------------
+% commands
+\renewcommand*{\recomputeletterbodylengths}{%
+ \recomputecvlengths%
+ \setlength{\parskip}{6\p@}}
+
+\renewcommand*{\makeletterclosing}{
+ \@closing\\[3em]%
+ {\bfseries\@firstname~\@lastname}%
+ \ifthenelse{\isundefined{\@enclosure}}{}{%
+ \\%
+ \vfil%
+ {\color{color2}\itshape\enclname: \@enclosure}}%
+ \vfil}
+
+
+\endinput
+
+
+%% end of file `moderncvbodyi.sty'.
diff --git a/macros/latex/contrib/moderncv/moderncvbodyii.sty b/macros/latex/contrib/moderncv/moderncvbodyii.sty
new file mode 100644
index 0000000000..a86bcf2425
--- /dev/null
+++ b/macros/latex/contrib/moderncv/moderncvbodyii.sty
@@ -0,0 +1,174 @@
+%% start of file `moderncvbodyi.sty'.
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncvbodyi}[2015/07/28 v2.0.0 modern curriculum vitae and letter body variant: 1]
+
+
+%-------------------------------------------------------------------------------
+% required packages
+%-------------------------------------------------------------------------------
+
+
+%-------------------------------------------------------------------------------
+% overall body definition
+%-------------------------------------------------------------------------------
+% fonts
+\renewcommand*{\sectionfont}{\Large\mdseries\upshape}
+\renewcommand*{\subsectionfont}{\large\mdseries\upshape}
+\renewcommand*{\hintfont}{}
+
+% styles
+\renewcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{color1}{#1}}}
+\renewcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{color1}{#1}}}
+\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{color0}{#1}}}
+
+
+%-------------------------------------------------------------------------------
+% resume body definition
+%-------------------------------------------------------------------------------
+% lengths
+% used by \cvitem (and all children command)
+\@initializelength{\hintscolumnwidth} \setlength{\hintscolumnwidth}{0.175\textwidth}
+\@initializelength{\separatorcolumnwidth} \setlength{\separatorcolumnwidth}{0.025\textwidth}
+\@initializelength{\maincolumnwidth}
+% used by \cvdoubleitem
+\@initializelength{\doubleitemcolumnwidth}
+% used by \cvlistitem
+\@initializelength{\listitemsymbolwidth} \settowidth{\listitemsymbolwidth}{\listitemsymbol}
+\@initializelength{\listitemcolumnwidth}
+% used by \cvlistdoubleitem
+\@initializelength{\listdoubleitemcolumnwidth}
+% default moderncv \photo (change the definition such that by default the photo and its box align with the section bars
+\RenewDocumentCommand{\photo}{O{\hintscolumnwidth-0.8pt-2\fboxsep}O{0.4pt}m}{\def\@photowidth{#1}\def\@photoframewidth{#2}\def\@photo{#3}}%
+
+% commands
+\renewcommand*{\recomputecvbodylengths}{%
+ % body lengths
+ \setlength{\maincolumnwidth}{\textwidth-\leftskip-\rightskip-\separatorcolumnwidth-\hintscolumnwidth}%
+ \setlength{\listitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth}%
+ \setlength{\doubleitemcolumnwidth}{\maincolumnwidth-\hintscolumnwidth-\separatorcolumnwidth-\separatorcolumnwidth}%
+ \setlength{\doubleitemcolumnwidth}{0.5\doubleitemcolumnwidth}%
+ \setlength{\listdoubleitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth-\separatorcolumnwidth-\listitemsymbolwidth}%
+ \setlength{\listdoubleitemcolumnwidth}{0.5\listdoubleitemcolumnwidth}%
+ % regular lengths
+ \setlength{\parskip}{0\p@}}
+
+\@initializelength{\baseletterheight}
+\settoheight{\baseletterheight}{\sectionstyle{o}}
+\setlength{\baseletterheight}{\baseletterheight-0.95ex}
+\RenewDocumentCommand{\section}{sm}{%
+ \par\addvspace{2.5ex}%
+ \phantomsection{}% reset the anchor for hyperrefs
+ \addcontentsline{toc}{section}{#2}%
+ \cvitem[0ex]{\strut\raggedleft\raisebox{\baseletterheight}{\color{color1}\rule{\hintscolumnwidth}{0.95ex}}}{\strut\sectionstyle{#2}}%
+ \par\nobreak\addvspace{1ex}\@afterheading}% to avoid a pagebreak after the heading
+
+\RenewDocumentCommand{\subsection}{sm}{%
+ \par\addvspace{1ex}%
+ \phantomsection{}% reset the anchor for hyperrefs
+ \addcontentsline{toc}{subsection}{#2}%
+ \cvitem[0ex]{}{\strut\subsectionstyle{#2}}%
+ \par\nobreak\addvspace{.5ex}\@afterheading}% to avoid a pagebreak after the heading
+
+\renewcommand*{\cvitem}[3][.25em]{%
+ \begin{tabular}{@{}p{\hintscolumnwidth}@{\hspace{\separatorcolumnwidth}}p{\maincolumnwidth}@{}}%
+ \raggedleft\hintstyle{#2} &{#3}%
+ \end{tabular}%
+ \par\addvspace{#1}}
+
+\renewcommand*{\cvdoubleitem}[5][.25em]{%
+ \cvitem[#1]{#2}{%
+ \begin{minipage}[t]{\doubleitemcolumnwidth}#3\end{minipage}%
+ \hfill% fill of \separatorcolumnwidth
+ \begin{minipage}[t]{\hintscolumnwidth}\raggedleft\hintstyle{#4}\end{minipage}%
+ \hspace*{\separatorcolumnwidth}%
+ \begin{minipage}[t]{\doubleitemcolumnwidth}#5\end{minipage}}}
+
+\renewcommand*{\cvlistitem}[2][.25em]{%
+ \cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listitemcolumnwidth}#2\end{minipage}}}
+
+\renewcommand*{\cvlistdoubleitem}[3][.25em]{%
+ \cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#2\end{minipage}%
+ \hfill% fill of \separatorcolumnwidth
+ \ifthenelse{\equal{#3}{}}%
+ {}%
+ {\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#3\end{minipage}}}}
+
+\renewcommand*{\cventry}[7][.25em]{%
+ \cvitem[#1]{#2}{%
+ {\bfseries#3}%
+ \ifthenelse{\equal{#4}{}}{}{, {\slshape#4}}%
+ \ifthenelse{\equal{#5}{}}{}{, #5}%
+ \ifthenelse{\equal{#6}{}}{}{, #6}%
+ .\strut%
+ \ifx&#7&%
+ \else{\newline{}\begin{minipage}[t]{\linewidth}\small#7\end{minipage}}\fi}}
+
+\@initializebox{\cvitemwithcommentbox}
+\@initializelength{\cvitemwithcommentskilllength}
+\@initializelength{\cvitemwithcommentcommentlength}
+\renewcommand*{\cvitemwithcomment}[4][.25em]{%
+ \savebox{\cvitemwithcommentbox}{{#3}}%
+ \setlength{\cvitemwithcommentskilllength}{\widthof{\usebox{\cvitemwithcommentbox}}}%
+ \setlength{\cvitemwithcommentcommentlength}{\maincolumnwidth-\separatorcolumnwidth-\cvitemwithcommentskilllength}%
+ \cvitem[#1]{#2}{%
+ \begin{minipage}[t]{\cvitemwithcommentskilllength}\usebox{\cvitemwithcommentbox}\end{minipage}%
+ \hfill% fill of \separatorcolumnwidth
+ \begin{minipage}[t]{\cvitemwithcommentcommentlength}\raggedleft\small\itshape#4\end{minipage}}}
+
+\renewenvironment{thebibliography}[1]%
+ {%
+ \bibliographyhead{\refname}%
+% \small%
+ \begin{list}{\bibliographyitemlabel}%
+ {%
+ \setlength{\topsep}{0pt}%
+ \setlength{\labelwidth}{\hintscolumnwidth}%
+ \setlength{\labelsep}{\separatorcolumnwidth}%
+ \leftmargin\labelwidth%
+ \advance\leftmargin\labelsep%
+ \@openbib@code%
+ \usecounter{enumiv}%
+ \let\p@enumiv\@empty%
+ \renewcommand\theenumiv{\@arabic\c@enumiv}}%
+ \sloppy%
+ \clubpenalty4000%\@clubpenalty \clubpenalty%
+ \widowpenalty4000%
+ \sfcode`\.\@m%
+ \sfcode `\=1000\relax}%
+ {%
+ \def\@noitemerr{\@latex@warning{Empty `thebibliography' environment}}%
+ \end{list}}
+
+
+%-------------------------------------------------------------------------------
+% letter style definition
+%-------------------------------------------------------------------------------
+% commands
+\renewcommand*{\recomputeletterbodylengths}{%
+ \recomputecvlengths%
+ \setlength{\parskip}{6\p@}}
+
+\renewcommand*{\makeletterclosing}{
+ \@closing\\[3em]%
+ {\bfseries\@firstname~\@lastname}%
+ \ifthenelse{\isundefined{\@enclosure}}{}{%
+ \\%
+ \vfil%
+ {\color{color2}\itshape\enclname: \@enclosure}}%
+ \vfil}
+
+
+\endinput
+
+
+%% end of file `moderncvbodyi.sty'.
diff --git a/macros/latex/contrib/moderncv/moderncvbodyiii.sty b/macros/latex/contrib/moderncv/moderncvbodyiii.sty
new file mode 100644
index 0000000000..a2de047a55
--- /dev/null
+++ b/macros/latex/contrib/moderncv/moderncvbodyiii.sty
@@ -0,0 +1,238 @@
+%% start of file `moderncvbodyiii.sty'.
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncvbodyiii}[2015/07/28 v2.0.0 modern curriculum vitae and letter body variant: 3]
+
+% rules type options: "fullrules", "shortrules", "mixedrules" (default) or "norules"
+\@initializeif{\if@fullrules}\@fullrulesfalse
+\DeclareOption{fullrules} {\@fullrulestrue\@shortrulesfalse\@mixedrulesfalse\@norulesfalse}
+\@initializeif{\if@shortrules}\@shortrulesfalse
+\DeclareOption{shortrules}{\@fullrulesfalse\@shortrulestrue\@mixedrulesfalse\@norulesfalse}
+\@initializeif{\if@mixedrules}\@mixedrulesfalse
+\DeclareOption{mixedrules}{\@fullrulesfalse\@shortrulesfalse\@mixedrulestrue\@norulesfalse}
+\@initializeif{\if@norules}\@norulesfalse
+\DeclareOption{norules} {\@fullrulesfalse\@shortrulesfalse\@mixedrulesfalse\@norulestrue}
+
+% section alignment options: "left" (default), "center" or "right"
+\@initializeif{\if@left}\@leftfalse
+\DeclareOption{left} {\@lefttrue\@centerfalse\@rightfalse}
+\@initializeif{\if@center}\@centerfalse
+\DeclareOption{center} {\@leftfalse\@centertrue\@rightfalse}
+\@initializeif{\if@right}\@rightfalse
+\DeclareOption{right} {\@leftfalse\@centerfalse\@righttrue}
+
+\DeclareOption*{}% avoid choking on unknown options
+\ExecuteOptions{mixedrules,left}
+\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
+
+%-------------------------------------------------------------------------------
+% required packages
+%-------------------------------------------------------------------------------
+
+
+%-------------------------------------------------------------------------------
+% overall body definition
+%-------------------------------------------------------------------------------
+% fonts
+\renewcommand*{\sectionfont}{%
+ \if@norules%
+ \Large\bfseries\scshape%
+ \else%
+ \Large\bfseries\upshape\fi}
+\renewcommand*{\subsectionfont}{%
+ \if@norules%
+ \large\mdseries\itshape%
+ \else%
+ \large\upshape\fontseries{sb}\selectfont\fi}
+\renewcommand*{\hintfont}{\bfseries}
+
+% styles
+\renewcommand*{\sectionstyle}[1]{{%
+ \if@center\centering\else%
+ \if@right\raggedleft\fi\fi%
+ \sectionfont\textcolor{color1}{#1}%
+ \if@shortrules\else%
+ \par\fi}}
+\renewcommand*{\subsectionstyle}[1]{{%
+ \if@center\centering\else%
+ \if@right\raggedleft\fi\fi%
+ \subsectionfont\textcolor{color1}{#1}%
+ \if@shortrules\else\if@mixedrules\else%
+ \par\fi\fi}}
+\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{color0}{#1}}}
+
+
+%-------------------------------------------------------------------------------
+% resume body definition
+%-------------------------------------------------------------------------------
+% lengths
+% used by \cvitem (and all children command)
+\@initializelength{\hintscolumnwidth} \setlength{\hintscolumnwidth}{0.3\textwidth}
+\@initializelength{\separatorcolumnwidth} \setlength{\separatorcolumnwidth}{0.025\textwidth}
+\@initializelength{\maincolumnwidth}
+% used by \cvdoubleitem
+\@initializelength{\doubleitemcolumnwidth}
+% used by \cvlistitem
+\@initializelength{\listitemsymbolwidth} \settowidth{\listitemsymbolwidth}{\listitemsymbol}
+\@initializelength{\listitemcolumnwidth}
+% used by \cvlistdoubleitem
+\@initializelength{\listdoubleitemcolumnwidth}
+
+% commands
+\renewcommand*{\recomputecvbodylengths}{%
+ % body lengths
+ \setlength{\maincolumnwidth}{\textwidth-\leftskip-\rightskip}%
+ \setlength{\listitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth}%
+ \setlength{\doubleitemcolumnwidth}{\maincolumnwidth-\separatorcolumnwidth}%
+ \setlength{\doubleitemcolumnwidth}{0.5\doubleitemcolumnwidth}%
+ \setlength{\listdoubleitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth-\separatorcolumnwidth-\listitemsymbolwidth}%
+ \setlength{\listdoubleitemcolumnwidth}{0.5\listdoubleitemcolumnwidth}%
+ % regular lengths
+ \setlength{\parskip}{0\p@}}
+
+\RenewDocumentCommand{\section}{sm}{%
+ \par\addvspace{2.5ex}%
+ \phantomsection{}% reset the anchor for hyperrefs
+ \addcontentsline{toc}{section}{#2}%
+ \if@left\else\if@fullrules\else\if@mixedrules\else%
+ \sectionrule\fi\fi\fi%
+ \strut\sectionstyle{#2}%
+ \if@fullrules%
+ \sectionrule%
+ \else\if@mixedrules%
+ \sectionrule%
+ \else\if@right\else%
+ \sectionrule\fi\fi\fi%
+ \par\nobreak\addvspace{1ex}\@afterheading}
+
+\RenewDocumentCommand{\subsection}{sm}{%
+ \par\addvspace{1ex}%
+ \phantomsection{}%
+ \addcontentsline{toc}{subsection}{#2}%
+ \if@left\else\if@fullrules\else%
+ \subsectionrule\fi\fi%
+ \strut\subsectionstyle{#2}%
+ \if@fullrules%
+ \subsectionrule%
+ \else\if@right\else%
+ \subsectionrule\fi\fi%
+ \par\nobreak\addvspace{0.5ex}\@afterheading}
+
+\newcommand*{\sectionrule}{}
+\newcommand*{\subsectionrule}{}
+\if@fullrules%
+ \renewcommand*{\sectionrule}{\par\nobreak\vspace*{-.7\baselineskip}\leavevmode{\color{color1}\leaders\hbox{\rule{1pt}{0.4pt}}\hfill\kern0pt}}
+ \renewcommand*{\subsectionrule}{\par\nobreak\vspace*{-.7\baselineskip}\leavevmode{\color{color1}\xleaders\hbox to 0.35em{\scriptsize.}\hfill}}\fi% different subsectionrules will not be perfectly aligned, but remaining space at the end of the fill will be distributed evenly between leaders, so it will be barely visible}
+\if@shortrules%
+ \renewcommand*{\sectionrule}{\leavevmode{\color{color1}\leaders\hbox{\rule{1pt}{0.4pt}}\hfill\kern0pt}}
+ \renewcommand*{\subsectionrule}{\leavevmode{\color{color1}\xleaders\hbox to 0.35em{\scriptsize.}\hfill}}\fi% different subsectionrules will not be perfectly aligned, but remaining space at the end of the fill will be distributed evenly between leaders, so it will be barely visible}}
+\if@mixedrules%
+ \renewcommand*{\sectionrule}{\par\nobreak\vspace*{-.7\baselineskip}\leavevmode{\color{color1}\leaders\hbox{\rule{1pt}{0.4pt}}\hfill\kern0pt}}
+ \renewcommand*{\subsectionrule}{\leavevmode{\color{color1}\xleaders\hbox to 0.35em{\scriptsize.}\hfill}}\fi% different subsectionrules will not be perfectly aligned, but remaining space at the end of the fill will be distributed evenly between leaders, so it will be barely visible}}
+\if@norules%
+ \renewcommand*{\sectionrule}{}
+ \renewcommand*{\subsectionrule}{}\fi
+
+\renewcommand*{\cvitem}[3][.25em]{%
+ \ifthenelse{\equal{#2}{}}{}{\hintstyle{#2}: }{#3}%
+ \par\addvspace{#1}}
+
+\renewcommand*{\cvdoubleitem}[5][.25em]{%
+ \begin{minipage}[t]{\doubleitemcolumnwidth}\hintstyle{#2}: #3\end{minipage}%
+ \hfill% fill of \separatorcolumnwidth
+ \begin{minipage}[t]{\doubleitemcolumnwidth}\ifthenelse{\equal{#4}{}}{}{\hintstyle{#4}: }#5\end{minipage}%
+ \par\addvspace{#1}}
+
+\renewcommand*{\cvlistitem}[2][.25em]{%
+ \listitemsymbol\begin{minipage}[t]{\listitemcolumnwidth}#2\end{minipage}%
+ \par\addvspace{#1}}
+
+\renewcommand*{\cvlistdoubleitem}[3][.25em]{%
+ \cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#2\end{minipage}%
+ \hfill% fill of \separatorcolumnwidth
+ \ifthenelse{\equal{#3}{}}%
+ {}%
+ {\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#3\end{minipage}}}}
+
+\renewcommand*{\cventry}[7][.25em]{
+ \begin{tabular*}{\maincolumnwidth}{l@{\extracolsep{\fill}}r}%
+ {\bfseries #4} & {\bfseries #5}\\%
+ {\itshape #3\ifthenelse{\equal{#6}{}}{}{, #6}} & {\itshape #2}\\%
+ \end{tabular*}%
+ \ifx&#7&%
+ \else{\\%
+ \begin{minipage}{\maincolumnwidth}%
+ \small#7%
+ \end{minipage}}\fi%
+ \par\addvspace{#1}}
+
+\@initializebox{\cvitemwithcommentmainbox}
+\@initializelength{\cvitemwithcommentmainlength}
+\@initializelength{\cvitemwithcommentcommentlength}
+\renewcommand*{\cvitemwithcomment}[4][.25em]{%
+ \savebox{\cvitemwithcommentmainbox}{\ifthenelse{\equal{#2}{}}{}{\hintstyle{#2}: }#3}%
+ \setlength{\cvitemwithcommentmainlength}{\widthof{\usebox{\cvitemwithcommentmainbox}}}%
+ \setlength{\cvitemwithcommentcommentlength}{\maincolumnwidth-\separatorcolumnwidth-\cvitemwithcommentmainlength}%
+ \begin{minipage}[t]{\cvitemwithcommentmainlength}\usebox{\cvitemwithcommentmainbox}\end{minipage}%
+ \hfill% fill of \separatorcolumnwidth
+ \begin{minipage}[t]{\cvitemwithcommentcommentlength}\raggedleft\small\itshape#4\end{minipage}%
+ \par\addvspace{#1}}
+
+\renewenvironment{thebibliography}[1]%
+ {%
+ \bibliographyhead{\refname}%
+% \small%
+ \begin{list}{\bibliographyitemlabel}%
+ {%
+ \setlength{\topsep}{0pt}%
+ \setlength{\labelwidth}{0pt}%
+ \ifthenelse{\equal{\bibliographyitemlabel}{}}%
+ {\setlength{\labelsep}{0pt}}%
+ {\setlength{\labelsep}{\separatorcolumnwidth}}%
+ \leftmargin\labelwidth%
+ \advance\leftmargin\labelsep%
+ \@openbib@code%
+ \usecounter{enumiv}%
+ \let\p@enumiv\@empty%
+ \renewcommand\theenumiv{\@arabic\c@enumiv}}%
+ \sloppy%
+ \clubpenalty4000%\@clubpenalty \clubpenalty%
+ \widowpenalty4000%
+ \sfcode`\.\@m%
+ \sfcode `\=1000\relax}%
+ {%
+ \def\@noitemerr{\@latex@warning{Empty `thebibliography' environment}}%
+ \end{list}}
+
+
+%-------------------------------------------------------------------------------
+% letter style definition
+%-------------------------------------------------------------------------------
+% commands
+\renewcommand*{\recomputeletterbodylengths}{%
+ \recomputecvbodylengths%
+ \setlength{\parskip}{6\p@}}
+
+\renewcommand*{\makeletterclosing}{
+ \@closing\\[3em]%
+ {\bfseries\@firstname~\@lastname}%
+ \ifthenelse{\isundefined{\@enclosure}}{}{%
+ \\%
+ \vfil%
+ {\color{color2}\itshape\enclname: \@enclosure}}%
+ \vfil}
+
+
+\endinput
+
+
+%% end of file `moderncvbodyiii.sty'.
diff --git a/macros/latex/contrib/moderncv/moderncvbodyiv.sty b/macros/latex/contrib/moderncv/moderncvbodyiv.sty
new file mode 100644
index 0000000000..20af5e48d3
--- /dev/null
+++ b/macros/latex/contrib/moderncv/moderncvbodyiv.sty
@@ -0,0 +1,183 @@
+%% start of file `moderncvbodyiv.sty'.
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncvbodyiv}[2015/07/28 v2.0.0 modern curriculum vitae and letter body variant: 4]
+
+
+%-------------------------------------------------------------------------------
+% required packages
+%-------------------------------------------------------------------------------
+
+
+%-------------------------------------------------------------------------------
+% overall body definition
+%-------------------------------------------------------------------------------
+% fonts
+\renewcommand*{\sectionfont}{\Large\bfseries\upshape}
+\renewcommand*{\subsectionfont}{\large\bfseries\itshape}
+\renewcommand*{\hintfont}{\bfseries}
+
+% styles
+\renewcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{color1}{#1}}}
+\renewcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{color1}{#1}}}
+\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{color0}{#1}}}
+
+
+%-------------------------------------------------------------------------------
+% resume body definition
+%-------------------------------------------------------------------------------
+% lengths
+% used by \cvitem (and all children command)
+\@initializelength{\hintscolumnwidth} \setlength{\hintscolumnwidth}{0.3\textwidth}
+\@initializelength{\separatorcolumnwidth} \setlength{\separatorcolumnwidth}{0.025\textwidth}
+\@initializelength{\maincolumnwidth}
+% used by \cvdoubleitem
+\@initializelength{\doubleitemcolumnwidth}
+% used by \cvlistitem
+\@initializelength{\listitemsymbolwidth} \settowidth{\listitemsymbolwidth}{\listitemsymbol}
+\@initializelength{\listitemcolumnwidth}
+% used by \cvlistdoubleitem
+\@initializelength{\listdoubleitemcolumnwidth}
+
+% commands
+\renewcommand*{\recomputecvbodylengths}{%
+ % body lengths
+ \setlength{\maincolumnwidth}{\textwidth-\leftskip-\rightskip}%
+ \setlength{\listitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth}%
+ \setlength{\doubleitemcolumnwidth}{\maincolumnwidth-\separatorcolumnwidth}%
+ \setlength{\doubleitemcolumnwidth}{0.5\doubleitemcolumnwidth}%
+ \setlength{\listdoubleitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth-\separatorcolumnwidth-\listitemsymbolwidth}%
+ \setlength{\listdoubleitemcolumnwidth}{0.5\listdoubleitemcolumnwidth}%
+ % regular lengths
+ \setlength{\parskip}{0\p@}}
+
+\RenewDocumentCommand{\section}{sm}{%
+ \par\addvspace{2.5ex}%
+ \phantomsection{}% reset the anchor for hyperrefs
+ \addcontentsline{toc}{section}{#2}%
+ \strut\sectionstyle{#2}%
+ \par\nobreak\addvspace{1ex}\@afterheading}
+
+\RenewDocumentCommand{\subsection}{sm}{%
+ \par\addvspace{1ex}%
+ \phantomsection{}%
+ \addcontentsline{toc}{subsection}{#2}%
+ \strut\subsectionstyle{#2}%
+ \par\nobreak\addvspace{0.5ex}\@afterheading}
+
+\renewcommand*{\cvitem}[3][.25em]{%
+ \ifthenelse{\equal{#2}{}}{}{\hintstyle{#2}: }{#3}%
+ \par\addvspace{#1}}
+
+\renewcommand*{\cvdoubleitem}[5][.25em]{%
+ \begin{minipage}[t]{\doubleitemcolumnwidth}\hintstyle{#2}: #3\end{minipage}%
+ \hfill% fill of \separatorcolumnwidth
+ \begin{minipage}[t]{\doubleitemcolumnwidth}\ifthenelse{\equal{#4}{}}{}{\hintstyle{#4}: }#5\end{minipage}%
+ \par\addvspace{#1}}
+
+\renewcommand*{\cvlistitem}[2][.25em]{%
+ \cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listitemcolumnwidth}#2\end{minipage}}}
+
+\renewcommand*{\cvlistdoubleitem}[3][.25em]{%
+ \cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#2\end{minipage}%
+ \hfill% fill of \separatorcolumnwidth
+ \ifthenelse{\equal{#3}{}}%
+ {}%
+ {\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#3\end{minipage}}}}
+
+\@initializebox{\cventryyearbox}
+\@initializelength{\cventrytitleboxwidth}
+\renewcommand*{\cventry}[7][.25em]{%
+ \savebox{\cventryyearbox}{%
+ \hspace*{2\separatorcolumnwidth}%
+ \hintstyle{#2}}%
+ \setlength{\cventrytitleboxwidth}{\widthof{\usebox{\cventryyearbox}}}%
+ \setlength{\cventrytitleboxwidth}{\maincolumnwidth-\cventrytitleboxwidth}%
+ \begin{minipage}{\maincolumnwidth}%
+ \parbox[t]{\cventrytitleboxwidth}{%
+ \strut%
+ {\bfseries#3}%
+ \ifthenelse{\equal{#4}{}}{}{, {\slshape#4}}%
+ \ifthenelse{\equal{#5}{}}{}{, #5}%
+ \ifthenelse{\equal{#6}{}}{}{, #6}%
+ .\strut}%
+ \usebox{\cventryyearbox}%
+ \end{minipage}\strut%
+ \ifx&#7&%
+ \else{%
+ \newline{}%
+ \strut%
+ \begin{minipage}[t]{\maincolumnwidth}%
+ \small%
+ #7%
+ \end{minipage}}\fi%
+ \par\addvspace{#1}}
+
+\@initializebox{\cvitemwithcommentmainbox}
+\@initializelength{\cvitemwithcommentmainlength}
+\@initializelength{\cvitemwithcommentcommentlength}
+\renewcommand*{\cvitemwithcomment}[4][.25em]{%
+ \savebox{\cvitemwithcommentmainbox}{\ifthenelse{\equal{#2}{}}{}{\hintstyle{#2}: }#3}%
+ \setlength{\cvitemwithcommentmainlength}{\widthof{\usebox{\cvitemwithcommentmainbox}}}%
+ \setlength{\cvitemwithcommentcommentlength}{\maincolumnwidth-\separatorcolumnwidth-\cvitemwithcommentmainlength}%
+ \begin{minipage}[t]{\cvitemwithcommentmainlength}\usebox{\cvitemwithcommentmainbox}\end{minipage}%
+ \hfill% fill of \separatorcolumnwidth
+ \begin{minipage}[t]{\cvitemwithcommentcommentlength}\raggedleft\small\itshape#4\end{minipage}%
+ \par\addvspace{#1}}
+
+\renewenvironment{thebibliography}[1]%
+ {%
+ \bibliographyhead{\refname}%
+% \small%
+ \begin{list}{\bibliographyitemlabel}%
+ {%
+ \setlength{\topsep}{0pt}%
+ \setlength{\labelwidth}{\hintscolumnwidth}%
+ \setlength{\labelsep}{\separatorcolumnwidth}%
+ \leftmargin\labelwidth%
+ \advance\leftmargin\labelsep%
+ \@openbib@code%
+ \usecounter{enumiv}%
+ \let\p@enumiv\@empty%
+ \renewcommand\theenumiv{\@arabic\c@enumiv}}%
+ \sloppy%
+ \clubpenalty4000%\@clubpenalty \clubpenalty%
+ \widowpenalty4000%
+ \sfcode`\.\@m%
+ \sfcode `\=1000\relax}%
+ {%
+ \def\@noitemerr{\@latex@warning{Empty `thebibliography' environment}}%
+ \end{list}}
+
+
+%-------------------------------------------------------------------------------
+% letter style definition
+%-------------------------------------------------------------------------------
+% commands
+\renewcommand*{\recomputeletterbodylengths}{%
+ \recomputecvbodylengths%
+ \setlength{\parskip}{6\p@}}
+
+\renewcommand*{\makeletterclosing}{
+ \@closing\\[3em]%
+ {\bfseries\@firstname~\@lastname}%
+ \ifthenelse{\isundefined{\@enclosure}}{}{%
+ \\%
+ \vfil%
+ {\color{color2}\itshape\enclname: \@enclosure}}%
+ \vfil}
+
+
+\endinput
+
+
+%% end of file `moderncvbodyiv.sty'.
diff --git a/macros/latex/contrib/moderncv/moderncvbodyv.sty b/macros/latex/contrib/moderncv/moderncvbodyv.sty
new file mode 100644
index 0000000000..8888fe5ed5
--- /dev/null
+++ b/macros/latex/contrib/moderncv/moderncvbodyv.sty
@@ -0,0 +1,210 @@
+%% start of file `moderncvbodyv.sty'.
+%% Copyright 2015-2015 Xavier Danaux (xdanaux@gmail.com).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncvbodyv}[2015/07/28 v2.0.0 modern curriculum vitae and letter body variant: 5]
+
+
+%-------------------------------------------------------------------------------
+% required packages
+%-------------------------------------------------------------------------------
+
+
+%-------------------------------------------------------------------------------
+% overall style definition
+%-------------------------------------------------------------------------------
+
+
+%-------------------------------------------------------------------------------
+% resume style definition
+%-------------------------------------------------------------------------------
+% fonts
+\renewcommand*{\sectionfont}{\Large\mdseries\upshape}
+\renewcommand*{\subsectionfont}{\large\mdseries\slshape}
+\renewcommand*{\hintfont}{\bfseries}
+
+% styles
+\renewcommand*{\sectionstyle}[1]{{\sectionfont\textcolor{color1}{#1}}}
+\renewcommand*{\subsectionstyle}[1]{{\subsectionfont\textcolor{color1}{#1}}}
+\renewcommand*{\hintstyle}[1]{{\hintfont\textcolor{color0}{#1}}}
+
+% lengths
+% used by \cvitem (and all children command)
+\@initializelength{\hintscolumnwidth} \setlength{\hintscolumnwidth}{0.25\textwidth}
+\@initializelength{\separatorcolumnwidth} \setlength{\separatorcolumnwidth}{0.025\textwidth}
+\@initializelength{\separatorrulewidth} \setlength{\separatorrulewidth}{1.2\p@}%
+\@initializelength{\maincolumnwidth}
+% used by \cvdoubleitem
+\@initializelength{\doubleitemcolumnwidth}
+% used by \cvlistitem
+\@initializelength{\listitemsymbolwidth} \settowidth{\listitemsymbolwidth}{\listitemsymbol}
+\@initializelength{\listitemcolumnwidth}
+%\@initializelength{\listitemmaincolumnwidth}
+% used by \cvlistdoubleitem
+\@initializelength{\listdoubleitemcolumnwidth}
+%\@initializelength{\listdoubleitemmaincolumnwidth}
+
+% commands
+\@initializecommand{\recomputecvbodylengths}{%
+ % body lengths
+ \setlength{\maincolumnwidth}{\textwidth-\leftskip-\rightskip-\separatorcolumnwidth-\separatorcolumnwidth-\hintscolumnwidth-\separatorrulewidth}%
+ \setlength{\listitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth}%
+ \setlength{\doubleitemcolumnwidth}{\maincolumnwidth-\separatorcolumnwidth}%
+ \setlength{\doubleitemcolumnwidth}{0.5\doubleitemcolumnwidth}%
+ \setlength{\listdoubleitemcolumnwidth}{\maincolumnwidth-\listitemsymbolwidth-\separatorcolumnwidth-\listitemsymbolwidth}%
+ \setlength{\listdoubleitemcolumnwidth}{0.5\listdoubleitemcolumnwidth}%
+ % regular lengths
+ \setlength{\parskip}{0\p@}}
+
+\@initializeif{\if@aftersection}\@aftersectionfalse%
+\RenewDocumentCommand{\section}{sm}{%
+ \addvspace{2.5ex}%
+ \phantomsection{}% reset the anchor for hyperrefs
+ \addcontentsline{toc}{section}{#2}%
+ \noindent\rlap{\@cvitem{\raggedleft\sectionstyle{#2}}{}}%
+ \nobreak\@afterheading\@aftersectiontrue\ignorespaces}
+
+%\@initializeif{\if@aftersubsection}\@aftersubsectionfalse%
+\RenewDocumentCommand{\subsection}{sm}{%
+ %\addvspace{1ex}%
+ \vspace*{-\arrayrulewidth}% HACK; I don't understand where the space is coming from, nor what it's exact value is :(
+ \if@aftersection%
+ \par\ignorespaces\fi%
+ \phantomsection{}% reset the anchor for hyperrefs
+ \addcontentsline{toc}{subsection}{#2}%
+ \noindent\rlap{\@cvitem{\if@aftersection\else\@moderncvstrut{4pt}{24pt}\fi\raggedleft\subsectionstyle{#2}}{}}%
+ \nobreak\@afterheading\@aftersectiontrue\ignorespaces}
+
+\renewcommand*{\cvitem}[3][.5ex]{%
+ \@cvitem[#1]{}{\ifthenelse{\equal{#2}{}}{}{\hintstyle{#2}: }{#3}}}
+
+% underlying command to implement \cvitem, \subsection and \section
+\newcommand*{\@cvitem}[3][.5ex]{%
+ \arrayrulecolor{color1}%
+ \setlength\arrayrulewidth{\separatorrulewidth}%
+ \if@aftersection\else%
+ \vspace*{-\separatorrulewidth}\fi% HACK; I don't understand where the space is coming from, nor what it's exact value is :(
+ \noindent%
+% \setlength{\fboxsep}{0pt}\framebox{% start of debuging
+ \begin{tabular}[t]{@{}p{\hintscolumnwidth}@{\hspace{\separatorcolumnwidth}}|@{\hspace{\separatorcolumnwidth}}p{\maincolumnwidth}@{}}%
+ \@moderncvstrut{4pt}{16pt}#2 &#3\\[#1]% the spacing needs to be inside the cell for the vertical rule to extend correctly
+ \end{tabular}%
+% }% end of debuging
+ \par\@aftersectionfalse\ignorespaces}
+
+\renewcommand*{\cvdoubleitem}[5][.5ex]{%
+ \@cvitem[#1]{}{%
+ \begin{minipage}[t]{\doubleitemcolumnwidth}\hintstyle{#2}: #3\end{minipage}%
+ \hfill% fill of \separatorcolumnwidth
+ \begin{minipage}[t]{\doubleitemcolumnwidth}\ifthenelse{\equal{#4}{}}{}{\hintstyle{#4}: }#5\end{minipage}}}
+
+\renewcommand*{\cvlistitem}[2][.5ex]{%
+ \@cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listitemcolumnwidth}#2\end{minipage}}}
+
+\renewcommand*{\cvlistdoubleitem}[3][.5ex]{%
+ \@cvitem[#1]{}{\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#2\end{minipage}%
+ \hfill% fill of \separatorcolumnwidth
+ \ifthenelse{\equal{#3}{}}%
+ {}%
+ {\listitemsymbol\begin{minipage}[t]{\listdoubleitemcolumnwidth}#3\end{minipage}}}}
+
+\@initializebox{\cventryyearbox}
+\@initializelength{\cventrytitleboxwidth}
+\renewcommand*{\cventry}[7][.5ex]{%
+ \savebox{\cventryyearbox}{%
+ \hspace*{2\separatorcolumnwidth}%
+ \hintstyle{#2}}%
+ \setlength{\cventrytitleboxwidth}{\widthof{\usebox{\cventryyearbox}}}%
+ \setlength{\cventrytitleboxwidth}{\maincolumnwidth-\cventrytitleboxwidth}%
+ \cvitem[#1]{}{%
+ \parbox[t]{\cventrytitleboxwidth}{%
+ \strut%
+ {\bfseries#3}%
+ \ifthenelse{\equal{#4}{}}{}{, {\slshape#4}}%
+ \ifthenelse{\equal{#5}{}}{}{, #5}%
+ \ifthenelse{\equal{#6}{}}{}{, #6}%
+ .\strut}%
+ \usebox{\cventryyearbox}}%
+ \ifx&#7&%
+ \else%
+ \vspace*{-4pt}%
+ \cvitem[#1]{}{\small#7}\fi}
+
+\@initializebox{\cvitemwithcommentmainbox}
+\@initializelength{\cvitemwithcommentmainlength}
+\@initializelength{\cvitemwithcommentcommentlength}
+\renewcommand*{\cvitemwithcomment}[4][.5ex]{%
+ \savebox{\cvitemwithcommentmainbox}{\ifthenelse{\equal{#2}{}}{}{\hintstyle{#2}: }#3}%
+ \setlength{\cvitemwithcommentmainlength}{\widthof{\usebox{\cvitemwithcommentmainbox}}}%
+ \setlength{\cvitemwithcommentcommentlength}{\maincolumnwidth-\separatorcolumnwidth-\cvitemwithcommentmainlength}%
+ \@cvitem[#1]{}{%
+ \begin{minipage}[t]{\cvitemwithcommentmainlength}\usebox{\cvitemwithcommentmainbox}\end{minipage}%
+ \hfill% fill of \separatorcolumnwidth
+ \begin{minipage}[t]{\cvitemwithcommentcommentlength}\raggedleft\small\itshape#4\end{minipage}}}
+
+\renewenvironment{thebibliography}[1]% BUG/TODO: remove extra space between heading and first bibliography entry, as well as after last one
+ {%
+ \bibliographyhead{\refname}%
+% \small%
+ \arrayrulecolor{color1}%
+ \setlength\arrayrulewidth{\separatorrulewidth}%
+ \noindent%
+ \begin{tabular}[t]{@{}p{\hintscolumnwidth}@{\hspace{\separatorcolumnwidth}}|@{\hspace{\separatorcolumnwidth}}p{\maincolumnwidth}@{}}%
+ \@moderncvstrut{4pt}{16pt} &%
+ \begin{list}{\bibliographyitemlabel}{%
+ \setlength{\topsep}{0pt}%
+ \setlength{\partopsep}{0pt}%
+ \setlength{\labelwidth}{0pt}%
+ \setlength{\itemsep}{0pt}%
+ \setlength{\parskip}{0pt}%
+ \ifthenelse{\equal{\bibliographyitemlabel}{}}%
+ {\setlength{\labelsep}{0pt}}%
+ {\setlength{\labelsep}{\separatorcolumnwidth}}%
+ \leftmargin\labelwidth%
+ \advance\leftmargin\labelsep%
+ \@openbib@code%
+ \usecounter{enumiv}%
+ \let\p@enumiv\@empty%
+ \renewcommand\theenumiv{\@arabic\c@enumiv}}%
+ \sloppy%
+ \clubpenalty4000%\@clubpenalty \clubpenalty%
+ \widowpenalty4000%
+ \sfcode`\.\@m%
+ \sfcode `\=1000\relax}%
+ {%
+ \def\@noitemerr{\@latex@warning{Empty `thebibliography' environment}}%
+ \end{list}%
+ \\[.5ex]%
+ \end{tabular}%
+ \par\@aftersectionfalse\ignorespaces}
+
+
+%-------------------------------------------------------------------------------
+% letter style definition
+%-------------------------------------------------------------------------------
+% commands
+\renewcommand*{\recomputeletterbodylengths}{%
+ \recomputecvbodylengths%
+ \setlength{\parskip}{6\p@}}
+
+\renewcommand*{\makeletterclosing}{
+ \@closing\\[3em]%
+ {\bfseries \@firstname~\@lastname}%
+ \ifthenelse{\isundefined{\@enclosure}}{}{%
+ \\%
+ \vfill%
+ {\color{color2}\itshape\enclname: \@enclosure}}}
+
+
+\endinput
+
+
+%% end of file `moderncvbodyv.sty'.
diff --git a/macros/latex/contrib/moderncv/moderncvcollection.sty b/macros/latex/contrib/moderncv/moderncvcollection.sty
new file mode 100644
index 0000000000..909d234933
--- /dev/null
+++ b/macros/latex/contrib/moderncv/moderncvcollection.sty
@@ -0,0 +1,85 @@
+%% start of file `moderncvcollection.sty'.
+%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncvcollection}[2015/07/28 v2.0.0 moderncv collections]
+
+
+%-------------------------------------------------------------------------------
+% requirements
+%-------------------------------------------------------------------------------
+
+
+\RequirePackage{ifthen}
+
+
+%-------------------------------------------------------------------------------
+% code
+%-------------------------------------------------------------------------------
+
+% creates a new collection
+% usage: \collectionnew{<collection name>}
+\newcommand*{\collectionnew}[1]{%
+ \newcounter{collection@#1@count}}
+
+% adds an item to a collection
+% usage: \collectionadd[<optional key>]{<collection name>}{<item to add>}
+\newcommand*{\collectionadd}[3][]{%
+ \expandafter\def\csname collection@#2@item\roman{collection@#2@count}\endcsname{#3}%
+ \if\relax\noexpand#1\relax% if #1 is empty
+ \else\expandafter\def\csname collection@#2@key\roman{collection@#2@count}\endcsname{#1}\fi%
+ \stepcounter{collection@#2@count}}
+
+% returns the number of items in a collection
+% usage: \collectioncount{<collection name>}
+\newcommand*{\collectioncount}[1]{%
+ \value{collection@#1@count}}
+
+% gets an item from a collection
+% usage: \collectiongetitem{<collection name>}{<element id>}
+% where <element id> is an integer between 0 and (collectioncount-1)
+\newcommand*{\collectiongetitem}[2]{%
+ \csname collection@#1@item\romannumeral #2\endcsname}
+
+% gets a key from a collection
+% usage: \collectiongetkey{<collection name>}{<element id>}
+% where <element id> is an integer between 0 and (collectioncount-1)
+\newcommand*{\collectiongetkey}[2]{%
+ \csname collection@#1@key\romannumeral #2\endcsname}
+
+% loops through a collection and perform the given operation on every element
+% usage: \collectionloop{<collection name>}{<operation sequence>}
+% where <operation sequence> is the code sequence to be evaluated for each collection item,
+% code which can refer to \collectionloopid, \collectionloopkey, \collectionloopitem and
+% \collectionloopbreak
+\newcounter{collection@iterator}
+\newcommand*{\collectionloopbreak}{\let\iterate\relax}
+\newcommand*{\collectionloop}[2]{%
+ \setcounter{collection@iterator}{0}%
+ \loop\ifnum\value{collection@iterator}<\value{collection@#1@count}%
+ \def\collectionloopid{\arabic{collection@iterator}}%
+ \def\collectionloopitem{\collectiongetitem{#1}{\collectionloopid}}%
+ \def\collectionloopkey{\collectiongetkey{#1}{\collectionloopid}}%
+ #2%
+ \stepcounter{collection@iterator}%
+ \repeat}
+
+% loops through a collection and finds the (first) element matching the given key
+% usage: \collectionfindbykey{<collection name>}{key>}
+\newcommand*{\collectionfindbykey}[2]{%
+ \collectionloop{#1}{%
+ \ifthenelse{\equal{\collectionloopkey}{#2}}{\collectionloopitem\collectionloopbreak}{}}}
+
+
+\endinput
+
+
+%% end of file `moderncvcollection.cls'.
diff --git a/macros/latex/contrib/moderncv/moderncvcolorblack.sty b/macros/latex/contrib/moderncv/moderncvcolorblack.sty
new file mode 100644
index 0000000000..24a911ed8e
--- /dev/null
+++ b/macros/latex/contrib/moderncv/moderncvcolorblack.sty
@@ -0,0 +1,27 @@
+%% start of file `moderncvcolorblack.sty'.
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncvcolorblack}[2015/07/28 v2.0.0 modern curriculum vitae and letter color scheme: black]
+
+
+%-------------------------------------------------------------------------------
+% color scheme definition
+%-------------------------------------------------------------------------------
+\definecolor{color0}{rgb}{0,0,0}% black
+\definecolor{color1}{rgb}{0,0,0}% black
+\definecolor{color2}{rgb}{0,0,0}% black
+
+
+\endinput
+
+
+%% end of file `moderncvcolorblack.sty'.
diff --git a/macros/latex/contrib/moderncv/moderncvcolorblue.sty b/macros/latex/contrib/moderncv/moderncvcolorblue.sty
new file mode 100644
index 0000000000..39f5f42d31
--- /dev/null
+++ b/macros/latex/contrib/moderncv/moderncvcolorblue.sty
@@ -0,0 +1,27 @@
+%% start of file `moderncvcolorblue.sty'.
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncvcolorblue}[2015/07/28 v2.0.0 modern curriculum vitae and letter color scheme: blue]
+
+
+%-------------------------------------------------------------------------------
+% color scheme definition
+%-------------------------------------------------------------------------------
+\definecolor{color0}{rgb}{0,0,0}% black
+\definecolor{color1}{rgb}{0.22,0.45,0.70}% light blue
+\definecolor{color2}{rgb}{0.45,0.45,0.45}% dark grey
+
+
+\endinput
+
+
+%% end of file `moderncvcolorblue.sty'.
diff --git a/macros/latex/contrib/moderncv/moderncvcolorburgundy.sty b/macros/latex/contrib/moderncv/moderncvcolorburgundy.sty
new file mode 100644
index 0000000000..28f5b2c1d5
--- /dev/null
+++ b/macros/latex/contrib/moderncv/moderncvcolorburgundy.sty
@@ -0,0 +1,27 @@
+%% start of file `moderncvcolorburgundy.sty'.
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncvcolorburgundy}[2015/07/28 v2.0.0 modern curriculum vitae and letter color scheme: burgundy]
+
+
+%-------------------------------------------------------------------------------
+% color scheme definition
+%-------------------------------------------------------------------------------
+\definecolor{color0}{rgb}{0,0,0}% black
+\definecolor{color1}{rgb}{0.596078,0,0}% burgundy: 139/255 (0.545098) or 152/255 (0.596078)
+\definecolor{color2}{rgb}{0.45,0.45,0.45}% dark grey
+
+
+\endinput
+
+
+%% end of file `moderncvcolorburgundy.sty'.
diff --git a/macros/latex/contrib/moderncv/moderncvcolorgreen.sty b/macros/latex/contrib/moderncv/moderncvcolorgreen.sty
new file mode 100644
index 0000000000..1e4eadcbed
--- /dev/null
+++ b/macros/latex/contrib/moderncv/moderncvcolorgreen.sty
@@ -0,0 +1,27 @@
+%% start of file `moderncvcolorgreen.sty'.
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncvcolorgreen}[2015/07/28 v2.0.0 modern curriculum vitae and letter color scheme: green]
+
+
+%-------------------------------------------------------------------------------
+% color scheme definition
+%-------------------------------------------------------------------------------
+\definecolor{color0}{rgb}{0,0,0}% black
+\definecolor{color1}{rgb}{0.35,0.70,0.30}% green
+\definecolor{color2}{rgb}{0.45,0.45,0.45}% dark grey
+
+
+\endinput
+
+
+%% end of file `moderncvcolorgreen.sty'.
diff --git a/macros/latex/contrib/moderncv/moderncvcolorgrey.sty b/macros/latex/contrib/moderncv/moderncvcolorgrey.sty
new file mode 100644
index 0000000000..8934deeeb0
--- /dev/null
+++ b/macros/latex/contrib/moderncv/moderncvcolorgrey.sty
@@ -0,0 +1,27 @@
+%% start of file `moderncvcolorgrey.sty'.
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncvcolorgrey}[2015/07/28 v2.0.0 modern curriculum vitae and letter color scheme: grey]
+
+
+%-------------------------------------------------------------------------------
+% color scheme definition
+%-------------------------------------------------------------------------------
+\definecolor{color0}{rgb}{0,0,0}% black
+\definecolor{color1}{rgb}{0.55,0.55,0.55}% dark grey
+\definecolor{color2}{rgb}{0.55,0.55,0.55}% dark grey
+
+
+\endinput
+
+
+%% end of file `moderncvcolorgrey.sty'.
diff --git a/macros/latex/contrib/moderncv/moderncvcolororange.sty b/macros/latex/contrib/moderncv/moderncvcolororange.sty
new file mode 100644
index 0000000000..cc0a62e346
--- /dev/null
+++ b/macros/latex/contrib/moderncv/moderncvcolororange.sty
@@ -0,0 +1,27 @@
+%% start of file `moderncvcolororange.sty'.
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncvcolororange}[2015/07/28 v2.0.0 modern curriculum vitae and letter color scheme: orange]
+
+
+%-------------------------------------------------------------------------------
+% color scheme definition
+%-------------------------------------------------------------------------------
+\definecolor{color0}{rgb}{0,0,0}% black
+\definecolor{color1}{rgb}{0.95,0.55,0.15}% orange
+\definecolor{color2}{rgb}{0.45,0.45,0.45}% dark grey
+
+
+\endinput
+
+
+%% end of file `moderncvcolororange.sty'.
diff --git a/macros/latex/contrib/moderncv/moderncvcolorpurple.sty b/macros/latex/contrib/moderncv/moderncvcolorpurple.sty
new file mode 100644
index 0000000000..2c63aaf351
--- /dev/null
+++ b/macros/latex/contrib/moderncv/moderncvcolorpurple.sty
@@ -0,0 +1,27 @@
+%% start of file `moderncvcolorpurple.sty'.
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncvcolorpurple}[2015/07/28 v2.0.0 modern curriculum vitae and letter color scheme: purple]
+
+
+%-------------------------------------------------------------------------------
+% color scheme definition
+%-------------------------------------------------------------------------------
+\definecolor{color0}{rgb}{0,0,0}% black
+\definecolor{color1}{rgb}{0.50,0.33,0.80}% purple
+\definecolor{color2}{rgb}{0.45,0.45,0.45}% dark grey
+
+
+\endinput
+
+
+%% end of file `moderncvcolorpurple.sty'.
diff --git a/macros/latex/contrib/moderncv/moderncvcolorred.sty b/macros/latex/contrib/moderncv/moderncvcolorred.sty
new file mode 100644
index 0000000000..be178aa9e5
--- /dev/null
+++ b/macros/latex/contrib/moderncv/moderncvcolorred.sty
@@ -0,0 +1,27 @@
+%% start of file `moderncvcolorred.sty'.
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncvcolorred}[2015/07/28 v2.0.0 modern curriculum vitae and letter color scheme: red]
+
+
+%-------------------------------------------------------------------------------
+% color scheme definition
+%-------------------------------------------------------------------------------
+\definecolor{color0}{rgb}{0,0,0}% black
+\definecolor{color1}{rgb}{0.95,0.20,0.20}% red
+\definecolor{color2}{rgb}{0.45,0.45,0.45}% dark grey
+
+
+\endinput
+
+
+%% end of file `moderncvcolorred.sty'.
diff --git a/macros/latex/contrib/moderncv/moderncvcompatibility.sty b/macros/latex/contrib/moderncv/moderncvcompatibility.sty
new file mode 100644
index 0000000000..681eaf4eb0
--- /dev/null
+++ b/macros/latex/contrib/moderncv/moderncvcompatibility.sty
@@ -0,0 +1,104 @@
+%% start of file `moderncvcompatibility.sty'.
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncvcompatibility}[2015/07/28 v2.0.0 modern curriculum vitae and letter compatibility patches]
+
+
+%-------------------------------------------------------------------------------
+% required packages
+%-------------------------------------------------------------------------------
+
+
+%-------------------------------------------------------------------------------
+% package options
+%-------------------------------------------------------------------------------
+% old casual option (version 0.1)
+%\DeclareOption{casual}{\input{moderncvstylecasual.sty}}
+
+% old classic option (version 0.1)
+%\DeclareOption{classic}{\input{moderncvstyleclassic.sty}}
+
+\DeclareOption*{}
+
+% process given options
+\ProcessOptions\relax
+
+%-------------------------------------------------------------------------------
+% definitions
+%-------------------------------------------------------------------------------
+% compatibility with version 0.1
+\newcommand*{\cvresume}[2]{\cvlistdoubleitem{#1}{#2}}
+
+% compatibility with versions <= 0.2
+% section, cvline, ... with width argument...
+%\newcommand*{\section}[2][0.825]{%
+% \closesection{}%
+% \@sectionopentrue%
+% \addcontentsline{toc}{part}{#2}
+% \begin{longtable}[t]{@{}r@{\hspace{.025\textwidth}}@{}p{#1\textwidth}@{}}%
+%% \colorrule{.15\textwidth}&\mbox{\color{sectiontitlecolor}\sectionfont#2}\\[1ex]}%
+% {\color{sectionrectanglecolor}\rule{0.15\textwidth}{1ex}}&\mbox{\color{sectiontitlecolor}\sectionfont#2}\\[1ex]}%
+%\newcommand*{\cvline}[3][.825]{%
+% \begin{minipage}[t]{\hintscolumnwidth}\raggedleft\small\sffamily#2\end{minipage}&\begin{minipage}[t]{\maincolumnwidth}#3\end{minipage}\\}
+%\newcommand*{\cvitem}[3][.825]{%
+% \cvline[#1]{#2}{#3\vspace*{.75em}}} % the \vspace*{} inside the cvline environment is a hack... (should conceptually be outside the environment)
+
+% compatibility with versions <= 0.5
+%\newcommand*{\cvitem}[2]{\cvline{#1}{#2}}
+%\newcommand*{\moderncvstyle}[1]{\moderncvtheme{#1}}
+
+% compatibility with versions <= 0.7
+\newcommand*{\closesection}{}
+\newcommand*{\emptysection}{}
+\newcommand*{\sethintscolumnlength}[1]{%
+ \setlength{\hintscolumnwidth}{#1}%
+ \recomputelengths}
+\newcommand*{\sethintscolumntowidth}[1]{%
+ \settowidth{\hintscolumnwidth}{#1}%
+ \recomputelengths}
+
+% compatibility with versions <= 0.15
+\newcommand*{\cvline}[2]{\cvitem{#1}{#2}}
+\newcommand*{\cvlanguage}[3]{\cvitemwithcomment{#1}{#2}{#3}}
+\newcommand*{\cvcomputer}[4]{\cvdoubleitem{#1}{\small#2}{#3}{\small#4}}
+\newcommand*{\moderncvtheme}[2][blue]{%
+ \moderncvcolor{#1}%
+ \moderncvstyle{#2}}
+
+% compatibility with versions <= 0.19
+\newcommand*{\maketitle}{\makecvtitle}%
+\title{}% to avoid LaTeX complaining that \maketitle is a called without first a call to \title
+\newcommand*{\maketitlenamewidth}{\makecvtitlenamewidth}
+
+% compatibility with versions <= 1.3.0
+\newcommand*{\firstname}[1]{\def\@firstname{#1}}
+\newcommand*{\lastname}[1]{\def\@lastname{#1}}
+\newcommand*{\givenname}[1]{\def\@firstname{#1}}
+\newcommand*{\familyname}[1]{\def\@lastname{#1}}
+\def\@familyname{\@lastname}
+
+% compatibility with versions <= 1.4.0
+\newcommand*{\mobile}[1]{\collectionadd[mobile]{phones}{#1}}
+%\newcommand*{\phone}[1]{\collectionadd[fixed]{phones}{#1}}% implicit, as \phone{...} defaults to \phone[fixed]{...}
+\newcommand*{\fax}[1]{\collectionadd[fax]{phones}{#1}}
+\newcommand*{\@mobile}{\collectionfindbykey{phones}{mobile}}
+\newcommand*{\@phone}{\collectionfindbykey{phones}{fixed}}
+\newcommand*{\@fax}{\collectionfindbykey{phones}{fax}}
+\newcommand*{\phonesymbol}{\fixedphonesymbol}
+\newcommand*{\mobilesymbol}{\mobilephonesymbol}
+\newcommand*{\faxsymbol}{\faxphonesymbol}
+
+
+\endinput
+
+
+%% end of file `moderncvcompatibility.sty'.
diff --git a/macros/latex/contrib/moderncv/moderncvdebugtools.sty b/macros/latex/contrib/moderncv/moderncvdebugtools.sty
new file mode 100644
index 0000000000..04ad305b75
--- /dev/null
+++ b/macros/latex/contrib/moderncv/moderncvdebugtools.sty
@@ -0,0 +1,54 @@
+%% start of file `moderncvdebugtools.sty'.
+%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncvdebugtools}[2015/07/28 v2.0.0 modern curriculum vitae and letter debug tools]
+
+
+%-------------------------------------------------------------------------------
+% required packages
+%-------------------------------------------------------------------------------
+\RequirePackage{tikz}
+
+
+%-------------------------------------------------------------------------------
+% debug tools
+%-------------------------------------------------------------------------------
+% code of \tracedebugvrule and \tracedebughrule provided by Gonzalo Medina on TeX.SX (cfr tex.stackexchange.com/a/110805/10102)
+\newcounter{debugrule}
+\pgfdeclarelayer{background}
+\pgfsetlayers{background,main}
+
+\DeclareDocumentCommand{\tracedebugvrule}{oO{0pt}}{%
+ \stepcounter{debugrule}%
+ \begin{tikzpicture}[remember picture,overlay]
+ \begin{pgfonlayer}{background}
+ \coordinate (a\thedebugrule);
+ \draw[red,thin,#1]
+ ([xshift=#2]a\thedebugrule|-current page.north) -- ([xshift=#2]a\thedebugrule|-current page.south);
+ \end{pgfonlayer}
+ \end{tikzpicture}}
+
+\DeclareDocumentCommand{\tracedebughrule}{oO{0pt}}{%
+ \stepcounter{debugrule}%
+ \begin{tikzpicture}[remember picture,overlay]
+ \begin{pgfonlayer}{background}
+ \coordinate (b\thedebugrule);
+ \draw[red,thin,#1]
+ ([yshift=#2]b\thedebugrule-|current page.west) -- ([yshift=#2]b\thedebugrule-|current page.east);
+ \end{pgfonlayer}
+ \end{tikzpicture}}
+
+
+\endinput
+
+
+%% end of file `moderncvdebugtools.sty'.
diff --git a/macros/latex/contrib/moderncv/moderncvfooti.sty b/macros/latex/contrib/moderncv/moderncvfooti.sty
new file mode 100644
index 0000000000..1a66d0f64e
--- /dev/null
+++ b/macros/latex/contrib/moderncv/moderncvfooti.sty
@@ -0,0 +1,134 @@
+%% start of file `moderncvfooti.sty'.
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncvfooti}[2015/07/28 v2.0.0 modern curriculum vitae and letter footer variant: 1]
+
+
+%-------------------------------------------------------------------------------
+% required packages
+%-------------------------------------------------------------------------------
+
+
+%-------------------------------------------------------------------------------
+% overall foot definition
+%-------------------------------------------------------------------------------
+% fonts
+\renewcommand*{\addressfont}{\normalsize\mdseries\slshape}
+
+% symbols
+% footer symbol used to separate footer elements
+\newcommand*{\footsymbol}{%
+ {~~~{\rmfamily\textbullet}~~~}}% the \rmfamily is required to force Latin Modern fonts when using sans serif, as OMS/lmss/m/n is not defined and gets substituted by OMS/cmsy/m/n
+
+% lengths
+\@initializelength{\footwidth}%
+\renewcommand*{\recomputefootlengths}{%
+ \setlength{\footwidth}{0.8\textwidth}}
+
+% commands
+% internal command to add an element to the footer
+% it collects the elements in a temporary box, and checks when to flush the box
+\@initializebox{\footbox}%
+\@initializebox{\foottempbox}%
+\@initializelength{\footboxwidth}%
+\@initializeif{\if@firstfootelement}\@firstfootelementtrue%
+% adds an element to the footer, separated by footsymbol
+% usage: \addtofoot[footsymbol]{element}
+\newcommand*{\addtofoot}[2][\footsymbol]{%
+ \if@firstfootelement%
+ \savebox{\foottempbox}{\usebox{\footbox}#2}%
+ \else%
+ \savebox{\foottempbox}{\usebox{\footbox}#1#2}\fi%
+ \settowidth{\footboxwidth}{\usebox{\foottempbox}}%
+ \ifnum\footboxwidth<\footwidth%
+ \savebox{\footbox}{\usebox{\foottempbox}}%
+ \@firstfootelementfalse%
+ \else%
+ \flushfoot\\%
+ \savebox{\footbox}{#2}%
+ \savebox{\foottempbox}{#2}%
+ \settowidth{\footboxwidth}{\usebox{\footbox}}%
+ \@firstfootelementfalse\fi}
+% internal command to flush the foot
+\newcommand*{\flushfoot}{%
+ \strut\usebox{\footbox}%
+ \savebox{\footbox}{}%
+ \savebox{\foottempbox}{}%
+ \setlength{\footboxwidth}{0pt}}
+
+
+%-------------------------------------------------------------------------------
+% resume foot definition
+%-------------------------------------------------------------------------------
+% lenghts
+\renewcommand*{\recomputecvfootlengths}{\recomputefootlengths}
+
+% commands
+\renewcommand*{\makecvfoot}{%
+ \recomputecvfootlengths{}%
+ \fancypagestyle{plain}{%
+ \fancyfoot[c]{%
+ \parbox[b]{\footwidth}{%
+ \centering%
+ \color{color2}\addressfont%
+ \vspace{\baselineskip}% forces a white line to ensure space between main text and footer (as footer height can't be known in advance)
+ \ifthenelse{\isundefined{\@addressstreet}}{}{\addtofoot[]{\addresssymbol\@addressstreet}%
+ \ifthenelse{\equal{\@addresscity}{}}{}{\addtofoot[~--~]{\@addresscity}}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty
+ \ifthenelse{\equal{\@addresscountry}{}}{}{\addtofoot[~--~]{\@addresscountry}}%
+ \flushfoot\@firstfootelementtrue\\}%
+ \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
+ \addtofoot{\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}%
+ \ifthenelse{\isundefined{\@email}}{}{\addtofoot{\emailsymbol\emaillink{\@email}}}%
+ \ifthenelse{\isundefined{\@homepage}}{}{\addtofoot{\homepagesymbol\httplink{\@homepage}}}%
+ \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
+ \addtofoot{\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}%
+ \ifthenelse{\isundefined{\@extrainfo}}{}{\addtofoot{\@extrainfo}}%
+ \ifthenelse{\lengthtest{\footboxwidth=0pt}}{}{\flushfoot}% the lengthtest is required to avoid flushing an empty footer, which could cause a blank line due to the \\ after the address, if no other personal info is used
+ }}}%
+ \pagestyle{plain}}
+
+
+%-------------------------------------------------------------------------------
+% letter foot definition
+%-------------------------------------------------------------------------------
+% commands
+\renewcommand*{\recomputeletterfootlengths}{\recomputefootlengths}
+\renewcommand*{\makeletterfoot}{%
+ \recomputeletterfootlengths{}%
+ \fancypagestyle{plain}{%
+ \fancyfoot[c]{%
+ \parbox[b]{\footwidth}{%
+ \centering%
+ \addressfont\color{color2}%
+ \vspace{\baselineskip}% forces a white line to ensure space between main text and footer (as footer height can't be known in advance)
+ \vspace{-\baselineskip}% to cancel out the extra vertical space taken by the name (below) and ensure perfect alignment of letter and cv footers
+ \strut{\bfseries\upshape\@firstname~\@lastname}\\% the \strut is required to ensure the line is exactly \baselineskip tall
+ \ifthenelse{\isundefined{\@addressstreet}}{}{\addtofoot[]{\addresssymbol\@addressstreet}%
+ \ifthenelse{\equal{\@addresscity}{}}{}{\addtofoot[~--~]{\@addresscity}}% if \addresstreet is defined, \addresscity and addresscountry will always be defined but could be empty
+ \ifthenelse{\equal{\@addresscountry}{}}{}{\addtofoot[~--~]{\@addresscountry}}%
+ \flushfoot\@firstfootelementtrue\\}%
+ \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
+ \addtofoot{\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}%
+ \ifthenelse{\isundefined{\@email}}{}{\addtofoot{\emailsymbol\emaillink{\@email}}}%
+ \ifthenelse{\isundefined{\@homepage}}{}{\addtofoot{\homepagesymbol\httplink{\@homepage}}}%
+ \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
+ \addtofoot{\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}%
+ \ifthenelse{\isundefined{\@extrainfo}}{}{\addtofoot{\@extrainfo}}%
+ \ifthenelse{\lengthtest{\footboxwidth=0pt}}{}{\flushfoot}% the lengthtest is required to avoid flushing an empty footer, which could cause a blank line due to the \\ after the address, if no other personal info is used
+ }}}%
+ \pagestyle{plain}}
+
+
+\endinput
+
+
+%% end of file `moderncvfooti.sty'.
diff --git a/macros/latex/contrib/moderncv/moderncvheadi.sty b/macros/latex/contrib/moderncv/moderncvheadi.sty
new file mode 100644
index 0000000000..3c578914c2
--- /dev/null
+++ b/macros/latex/contrib/moderncv/moderncvheadi.sty
@@ -0,0 +1,187 @@
+%% start of file `moderncvheadi.sty'.
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncvheadi}[2015/07/28 v2.0.0 modern curriculum vitae and letter header variant: 1]
+
+% details options: "details" (default) or "nodetails"
+\@initializeif{\if@details}\@detailsfalse
+\DeclareOption{details} {\@detailstrue}
+\DeclareOption{nodetails} {\@detailsfalse}
+
+% left/right options: "left" (default) or "right"
+\@initializeif{\if@left} \@leftfalse
+\DeclareOption{left} {\@lefttrue\@rightfalse}
+\@initializeif{\if@right}\@rightfalse
+\DeclareOption{right} {\@leftfalse\@righttrue}
+
+\DeclareOption*{}% avoid choking on unknown options
+\ExecuteOptions{details,left}
+\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
+
+
+%-------------------------------------------------------------------------------
+% required packages
+%-------------------------------------------------------------------------------
+
+
+%-------------------------------------------------------------------------------
+% overall head definition
+%-------------------------------------------------------------------------------
+% fonts
+\renewcommand*{\namefont}{\fontsize{34}{36}\mdseries\upshape}
+\renewcommand*{\titlefont}{\LARGE\mdseries\slshape}
+\renewcommand*{\addressfont}{\small\mdseries\slshape}
+\renewcommand*{\quotefont}{\large\slshape}
+
+% styles
+\renewcommand*{\namestyle}[1]{{\namefont\textcolor{color0}{#1}}}
+\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{color2}{#1}}}
+\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{color2}{#1}}}
+\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{color1}{#1}}}
+
+
+%-------------------------------------------------------------------------------
+% resume head definition
+%-------------------------------------------------------------------------------
+% lengths
+\@initializelength{\quotewidth}
+% optional makecvheadname width to force a certain width (if set/remains to 0pt, the width is calculated automatically)
+\@initializelength{\makecvheadnamewidth}
+\renewcommand*{\recomputecvheadlengths}{%
+ \setlength{\quotewidth}{0.65\textwidth}}
+
+% commands
+\renewcommand*{\makecvhead}{%
+ % recompute lengths (in case we are switching from letter to resume, or vice versa)
+ \recomputecvlengths%
+ % optional detailed information (pre-rendering)
+ \@initializebox{\makecvheaddetailsbox}%
+ \if@details%
+ \def\phonesdetails{}%
+ \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
+ \protected@edef\phonesdetails{\phonesdetails\protect\makenewline\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}%
+ \def\socialsdetails{}%
+ \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
+ \protected@edef\socialsdetails{\socialsdetails\protect\makenewline\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}%
+ \savebox{\makecvheaddetailsbox}{%
+ \addressfont\color{color2}%
+ \if@left\begin{tabular}[b]{@{}r@{}}\fi%
+ \if@right\begin{tabular}[b]{@{}l@{}}\fi%
+ \ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
+ \ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and addresscountry will always be defined but could be empty
+ \ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}%
+ \phonesdetails% needs to be pre-rendered as loops and tabulars seem to conflict
+ \ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol\emaillink{\@email}}%
+ \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol\httplink{\@homepage}}%
+ \socialsdetails% needs to be pre-rendered as loops and tabulars seem to conflict
+ \ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}%
+ \end{tabular}
+ }\fi%
+ % optional photo (pre-rendering)
+ \@initializebox{\makecvheadpicturebox}%
+ \savebox{\makecvheadpicturebox}{%
+ \ifthenelse{\isundefined{\@photo}}%
+ {}%
+ {%
+ \if@left%
+ \hspace*{\separatorcolumnwidth}\fi%
+ \color{color1}%
+ \setlength{\fboxrule}{\@photoframewidth}%
+ \ifdim\@photoframewidth=0pt%
+ \setlength{\fboxsep}{0pt}\fi%
+ \framebox{\includegraphics[width=\@photowidth]{\@photo}}}%
+ \if@right%
+ \hspace*{\separatorcolumnwidth}\fi}%
+ % name and title (pre-rendering)
+ \@initializelength{\makecvheaddetailswidth}\settowidth{\makecvheaddetailswidth}{\usebox{\makecvheaddetailsbox}}%
+ \@initializelength{\makecvheadpicturewidth}\settowidth{\makecvheadpicturewidth}{\usebox{\makecvheadpicturebox}}%
+ \ifthenelse{\lengthtest{\makecvheadnamewidth=0pt}}% check for dummy value (equivalent to \ifdim\makecvheadnamewidth=0pt)
+ {\setlength{\makecvheadnamewidth}{\textwidth-\makecvheaddetailswidth-\makecvheadpicturewidth}}%
+ {}%
+ \@initializebox{\makecvheadnamebox}%
+ \savebox{\makecvheadnamebox}{%
+ \begin{minipage}[b]{\makecvheadnamewidth}%
+ \if@left\raggedright\fi%
+ \if@right\raggedleft\fi%
+ \namestyle{\@firstname\ \@lastname}%
+ \ifthenelse{\equal{\@title}{}}{}{\\[1.25em]\titlestyle{\@title}}%
+ \end{minipage}}%
+ % rendering
+ \if@left%
+ \usebox{\makecvheadnamebox}%
+ \hfill%
+ \llap{\usebox{\makecvheaddetailsbox}}% \llap is used to suppress the width of the box, allowing overlap if the value of makecvheadnamewidth is forced
+ \usebox{\makecvheadpicturebox}\fi%
+ \if@right%
+ \usebox{\makecvheadpicturebox}%
+ \rlap{\usebox{\makecvheaddetailsbox}}% \llap is used to suppress the width of the box, allowing overlap if the value of makecvheadnamewidth is forced
+ \hfill%
+ \usebox{\makecvheadnamebox}\fi%
+ \\[2.5em]%
+ % optional quote
+ \ifthenelse{\isundefined{\@quote}}%
+ {}%
+ {{\centering\begin{minipage}{\quotewidth}\centering\quotestyle{\@quote}\end{minipage}\\[2.5em]}}%
+ \par}% to avoid weird spacing bug at the first section if no blank line is left after \makecvhead
+
+
+%-------------------------------------------------------------------------------
+% letter head definition
+%-------------------------------------------------------------------------------
+% lengths
+%\renewcommand*{\recomputeletterheadlengths}{}
+
+% commands
+\renewcommand*{\makeletterhead}{%
+ % recompute lengths (in case we are switching from letter to resume, or vice versa)
+ \recomputeletterlengths%
+ % sender contact info
+ \hfill%
+ \begin{minipage}{.5\textwidth}%
+ % optional detailed information
+ \if@details%
+ \raggedleft%
+ \addressfont\textcolor{color2}{%
+ {\bfseries\upshape\@firstname~\@lastname}\@firstdetailselementfalse%
+ % optional detailed information
+ \ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
+ \ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and addresscountry will always be defined but could be empty
+ \ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}%
+ \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
+ \makenewline\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}%
+ \ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol\emaillink{\@email}}%
+ \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol\httplink{\@homepage}}%
+ \ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}}\fi%
+ \end{minipage}\\[1em]
+ % recipient block
+ \begin{minipage}[t]{.5\textwidth}
+ \raggedright%
+ \addressfont%
+ {\bfseries\upshape\@recipientname}\\%
+ \@recipientaddress%
+ \end{minipage}
+ % date
+ \hfill% US style
+% \\[1em]% UK style
+ \@date\\[2em]% US informal style: "January 1, 1900"; UK formal style: "01/01/1900"
+ % opening
+ \raggedright%
+ \@opening\\[1.5em]%
+ % ensure no extra spacing after \makelettertitle due to a possible blank line
+% \ignorespacesafterend% not working
+ \hspace{0pt}\par\vspace{-\baselineskip}\vspace{-\parskip}}
+
+
+\endinput
+
+
+%% end of file `moderncvheadi.sty'.
diff --git a/macros/latex/contrib/moderncv/moderncvheadii.sty b/macros/latex/contrib/moderncv/moderncvheadii.sty
new file mode 100644
index 0000000000..f6d19c3738
--- /dev/null
+++ b/macros/latex/contrib/moderncv/moderncvheadii.sty
@@ -0,0 +1,205 @@
+%% start of file `moderncvheadii.sty'.
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncvheadii}[2015/07/28 v2.0.0 modern curriculum vitae and letter header variant: 2]
+
+% details options: "details" or "nodetails" (default)
+\@initializeif{\if@details}\@detailsfalse
+\DeclareOption{details}{\@detailstrue}
+\DeclareOption{nodetails}{\@detailsfalse}
+
+% name design options: "alternate" (lowercase names & title, no spacing)
+\@initializeif{\if@alternate}\@alternatefalse
+\DeclareOption{alternate}{\@alternatetrue}
+
+% left/right options: "left" or "right" (default)
+\@initializeif{\if@left} \@leftfalse
+\DeclareOption{left} {\@lefttrue\@rightfalse}
+\@initializeif{\if@right}\@rightfalse
+\DeclareOption{right} {\@leftfalse\@righttrue}
+
+\DeclareOption*{}% avoid choking on unknown options
+\ExecuteOptions{nodetails,right}
+\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
+
+
+%-------------------------------------------------------------------------------
+% required packages
+%-------------------------------------------------------------------------------
+
+
+%-------------------------------------------------------------------------------
+% overall head definition
+%-------------------------------------------------------------------------------
+% fonts
+\renewcommand*{\namefont}{\fontsize{38}{40}\mdseries\upshape}
+\renewcommand*{\titlefont}{\LARGE\mdseries\slshape}
+\renewcommand*{\addressfont}{\normalsize\mdseries\slshape}
+\renewcommand*{\quotefont}{\large\slshape}
+
+% styles
+\renewcommand*{\namestyle}[1]{{\namefont\textcolor{color0}{#1}}}
+\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{color2}{#1}}}
+\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{color2}{#1}}}
+\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{color1}{#1}}}
+
+% commands
+\@initializecommand{\makeheaddetailssymbol}{%
+ {~~~{\rmfamily\textbullet}~~~}}% the \rmfamily is required to force Latin Modern fonts when using sans serif, as OMS/lmss/m/n is not defined and gets substituted by OMS/cmsy/m/n
+% internal command to add an element to the footer
+% it collects the elements in a temporary box, and checks when to flush the box
+\@initializebox{\makeheaddetailsbox}%
+\@initializebox{\makeheaddetailstempbox}%
+\@initializelength{\makeheaddetailswidth}%
+\@initializelength{\makeheaddetailsboxwidth}%
+\@initializeif{\if@firstmakeheaddetailselement}\@firstmakeheaddetailselementtrue%
+% adds an element to the makehead, separated by makeheadsymbol
+% usage: \addtomakehead[makeheadsymbol]{element}
+\newcommand*{\addtomakeheaddetails}[2][\makeheaddetailssymbol]{% TODO: use \@initializecommand, which requires modifying its definition to handle mandatory and optional arguments
+ \if@firstmakeheaddetailselement%
+ \savebox{\makeheaddetailstempbox}{\usebox{\makeheaddetailsbox}#2}%
+ \else%
+ \savebox{\makeheaddetailstempbox}{\usebox{\makeheaddetailsbox}#1#2}\fi%
+ \settowidth{\makeheaddetailsboxwidth}{\usebox{\makeheaddetailstempbox}}%
+ \ifnum\makeheaddetailsboxwidth<\makeheaddetailswidth%
+ \savebox{\makeheaddetailsbox}{\usebox{\makeheaddetailstempbox}}%
+ \@firstmakeheaddetailselementfalse%
+ \else%
+ \flushmakeheaddetails\\\null% \null is required as there is no box on the line after \\, so glue such as \hfill (and leaders) disappear; this is in contrast to after \par, where the next line starts with an indent box (even after \noindent)
+ \savebox{\makeheaddetailsbox}{#2}%
+ \savebox{\makeheaddetailstempbox}{#2}%
+ \settowidth{\makeheaddetailsboxwidth}{\usebox{\makeheaddetailsbox}}%
+ \@firstmakeheaddetailselementfalse\fi}
+% internal command to flush the makehead
+\@initializecommand{\flushmakeheaddetails}{%
+ \if@right\hfill\fi%
+ \strut\usebox{\makeheaddetailsbox}%
+ \savebox{\makeheaddetailsbox}{}%
+ \savebox{\makeheaddetailstempbox}{}%
+ \setlength{\makeheaddetailsboxwidth}{0pt}}
+
+
+%-------------------------------------------------------------------------------
+% resume head definition
+%-------------------------------------------------------------------------------
+% lengths
+\@initializelength{\quotewidth}
+% optional makecvheadname width to force a certain width (if set/remains to 0pt, the width is calculated automatically)
+\@initializelength{\makecvheadnamewidth}
+\renewcommand*{\recomputecvheadlengths}{%
+ \setlength{\makeheaddetailswidth}{\textwidth}%
+ \setlength{\quotewidth}{0.65\textwidth}}
+
+% commands
+\renewcommand*{\makecvhead}{% TODO: use \@initializecommand, which requires modifying its definition to handle \par
+ % recompute lengths (in case we are switching from letter to resume, or vice versa)
+ \recomputecvlengths%
+ % optional picture (pre-rendering)
+ \@initializebox{\makecvheadpicturebox}%
+ \savebox{\makecvheadpicturebox}{%
+ \ifthenelse{\isundefined{\@photo}}%
+ {}%
+ {%
+ \setlength\fboxrule{\@photoframewidth}%
+ \ifdim\@photoframewidth=0pt%
+ \setlength{\fboxsep}{0pt}\fi%
+ {\color{color1}\framebox{\includegraphics[width=\@photowidth]{\@photo}}}}}%
+ % name (pre-rendering)
+ \@initializelength{\makecvheadpicturewidth}%
+ \settowidth{\makecvheadpicturewidth}{\usebox{\makecvheadpicturebox}}%
+ \@initializebox{\makecvheadnamebox}%
+ \savebox{\makecvheadnamebox}{%
+ \parbox[b]{\textwidth-\makecvheadpicturewidth}{%
+ \if@left\raggedright\fi%
+ \if@right\raggedleft\fi%
+ \namefont%
+ \if@alternate% alternate design: first- and lastname in lowercase with no space in between (distinction is made by color difference)
+ {\color{color2!50}\MakeLowercase\@firstname}{\color{color2}\MakeLowercase\@lastname}%
+ \else% default design: first- and lastname as given with a space in between
+ {\color{color2!50}\@firstname} {\color{color2}\@lastname}\fi}}%
+ % rendering
+ \if@left%
+ \usebox{\makecvheadnamebox}%
+ \usebox{\makecvheadpicturebox}\fi
+ \if@right%
+ \usebox{\makecvheadpicturebox}%
+ \usebox{\makecvheadnamebox}\fi\\[-.35em]%
+ {\color{color2!50}\rule{\textwidth}{.25ex}}%
+ % optional detailed information
+ \if@details{%
+ \\\null%
+ \addressfont\color{color2}%
+ \ifthenelse{\isundefined{\@addressstreet}}{}{\addtomakeheaddetails{\addresssymbol\@addressstreet}%
+ \ifthenelse{\equal{\@addresscity}{}}{}{\addtomakeheaddetails[~--~]{\@addresscity}}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty
+ \ifthenelse{\equal{\@addresscountry}{}}{}{\addtomakeheaddetails[~--~]{\@addresscountry}}%
+ \flushmakeheaddetails\@firstmakeheaddetailselementtrue\\\null}%
+ \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
+ \addtomakeheaddetails{\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}%
+ \ifthenelse{\isundefined{\@email}}{}{\addtomakeheaddetails{\emailsymbol\emaillink{\@email}}}%
+ \ifthenelse{\isundefined{\@homepage}}{}{\addtomakeheaddetails{\homepagesymbol\httplink{\@homepage}}}%
+ \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
+ \addtomakeheaddetails{\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}%
+ \ifthenelse{\isundefined{\@extrainfo}}{}{\addtomakeheaddetails{\@extrainfo}}%
+ \flushmakeheaddetails}\fi% need to force a \par after this to avoid weird spacing bug at the first section if no blank line is left after \makehead
+ % optional title
+ \ifthenelse{\equal{\@title}{}}{}{%
+ \\[1.25em]\null% \null is required as there is no box on the line after \\, so glue such as \hfill (and leaders) disappear; this is in contrast to after \par, where the next line starts with an indent box (even after \noindent)
+ \if@right\hfill\fi%
+ \if@alternate%
+ \titlestyle{\MakeLowercase\@title}%
+ \else%
+ \titlestyle{\@title}\fi%
+ }\\[2.5em]%
+ % optional quote
+ \ifthenelse{\isundefined{\@quote}}%
+ {}%
+ {{\null\hfill%
+ \begin{minipage}{\quotewidth}%
+ \centering%
+ \quotestyle{\@quote}%
+ \end{minipage}\hfill\null\\[2.5em]}}%
+ \par}% to avoid weird spacing bug at the first section if no blank line is left after \maketitle
+
+
+%-------------------------------------------------------------------------------
+% letter head definition
+%-------------------------------------------------------------------------------
+% lengths
+%\renewcommand*{\recomputeletterheadlengths}{}
+
+% commands
+\renewcommand*{\makeletterhead}{%
+ % recompute lengths (in case we are switching from letter to resume, or vice versa)
+ \recomputeletterlengths%
+ % recipient block
+ \begin{minipage}[t]{.5\textwidth}
+ \raggedright%
+ \addressfont%
+ {\bfseries\upshape\@recipientname}\\%
+ \@recipientaddress%
+ \end{minipage}
+ % date
+ \hfill% US style
+% \\[1em]% UK style
+ \@date\\[2em]% US informal style: "January 1, 1900"; UK formal style: "01/01/1900"
+ % opening
+ \raggedright%
+ \@opening\\[1.5em]%
+ % ensure no extra spacing after \makelettertitle due to a possible blank line
+% \ignorespacesafterend% not working
+ \hspace{0pt}\par\vspace{-\baselineskip}\vspace{-\parskip}}
+
+
+\endinput
+
+
+%% end of file `moderncvheadii.sty'.
diff --git a/macros/latex/contrib/moderncv/moderncvheadiii.sty b/macros/latex/contrib/moderncv/moderncvheadiii.sty
new file mode 100644
index 0000000000..54f86cb5fd
--- /dev/null
+++ b/macros/latex/contrib/moderncv/moderncvheadiii.sty
@@ -0,0 +1,157 @@
+%% start of file `moderncvheadiii.sty'.
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncvheadiii}[2015/07/28 v2.0.0 modern curriculum vitae and letter header variant: 3]
+
+% details options: "details" (default) or "nodetails"
+\@initializeif{\if@details}\@detailsfalse
+\DeclareOption{details}{\@detailstrue}
+\DeclareOption{nodetails}{\@detailsfalse}
+
+\DeclareOption*{}% avoid choking on unknown options
+\ExecuteOptions{details}
+\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
+
+%-------------------------------------------------------------------------------
+% required packages
+%-------------------------------------------------------------------------------
+
+
+%-------------------------------------------------------------------------------
+% overall head definition
+%-------------------------------------------------------------------------------
+% fonts
+\renewcommand*{\namefont}{\Huge\bfseries\upshape}
+\renewcommand*{\titlefont}{\Huge\mdseries\upshape}
+\renewcommand*{\addressfont}{\normalsize\mdseries\upshape}
+\renewcommand*{\quotefont}{\large\slshape}
+
+% styles
+\renewcommand*{\namestyle}[1]{{\namefont\textcolor{color1}{#1}}}
+\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{color2!85}{#1}}}
+\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{color2}{#1}}}
+\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{color1}{#1}}}
+
+% commands
+\@initializecommand{\makeheaddetailssymbol}{%
+ {~~~{\rmfamily\textbullet}~~~}}% the \rmfamily is required to force Latin Modern fonts when using sans serif, as OMS/lmss/m/n is not defined and gets substituted by OMS/cmsy/m/n
+% internal command to add an element to the footer
+% it collects the elements in a temporary box, and checks when to flush the box
+\@initializebox{\makeheaddetailsbox}%
+\@initializebox{\makeheaddetailstempbox}%
+\@initializelength{\makeheaddetailswidth}%
+\@initializelength{\makeheaddetailsboxwidth}%
+\@initializeif{\if@firstmakeheaddetailselement}\@firstmakeheaddetailselementtrue%
+% adds an element to the makehead, separated by makeheadsymbol
+% usage: \addtomakehead[makeheadsymbol]{element}
+\newcommand*{\addtomakeheaddetails}[2][\makeheaddetailssymbol]{% TODO: use \@initializecommand, which requires modifying its definition to handle mandatory and optional arguments
+ \if@firstmakeheaddetailselement%
+ \savebox{\makeheaddetailstempbox}{\usebox{\makeheaddetailsbox}#2}%
+ \else%
+ \savebox{\makeheaddetailstempbox}{\usebox{\makeheaddetailsbox}#1#2}\fi%
+ \settowidth{\makeheaddetailsboxwidth}{\usebox{\makeheaddetailstempbox}}%
+ \ifnum\makeheaddetailsboxwidth<\makeheaddetailswidth%
+ \savebox{\makeheaddetailsbox}{\usebox{\makeheaddetailstempbox}}%
+ \@firstmakeheaddetailselementfalse%
+ \else%
+ \flushmakeheaddetails\\%
+ \savebox{\makeheaddetailsbox}{#2}%
+ \savebox{\makeheaddetailstempbox}{#2}%
+ \settowidth{\makeheaddetailsboxwidth}{\usebox{\makeheaddetailsbox}}%
+ \@firstmakeheaddetailselementfalse\fi}
+% internal command to flush the makehead
+\@initializecommand{\flushmakeheaddetails}{%
+ \strut\usebox{\makeheaddetailsbox}%
+ \savebox{\makeheaddetailsbox}{}%
+ \savebox{\makeheaddetailstempbox}{}%
+ \setlength{\makeheaddetailsboxwidth}{0pt}}
+\@initializecommand{\makehead}{%
+ \setlength{\makeheaddetailswidth}{0.8\textwidth}%
+ \hfil%
+ \parbox{\makeheaddetailswidth}{%
+ \centering%
+ % name and title
+ \namestyle{\@firstname~\@lastname}%
+ \ifthenelse{\equal{\@title}{}}{}{\titlestyle{~|~\@title}}\\% \isundefined doesn't work on \@title, as LaTeX itself defines \@title (before it possibly gets redefined by \title)
+ % optional detailed information
+ \if@details{%
+ \addressfont\color{color2}%
+ \ifthenelse{\isundefined{\@addressstreet}}{}{\addtomakeheaddetails{\addresssymbol\@addressstreet}%
+ \ifthenelse{\equal{\@addresscity}{}}{}{\addtomakeheaddetails[~--~]{\@addresscity}}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty
+ \ifthenelse{\equal{\@addresscountry}{}}{}{\addtomakeheaddetails[~--~]{\@addresscountry}}%
+ \flushmakeheaddetails\@firstmakeheaddetailselementtrue\\\null}%
+ \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
+ \addtomakeheaddetails{\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}%
+ \ifthenelse{\isundefined{\@email}}{}{\addtomakeheaddetails{\emailsymbol\emaillink{\@email}}}%
+ \ifthenelse{\isundefined{\@homepage}}{}{\addtomakeheaddetails{\homepagesymbol\httplink{\@homepage}}}%
+ \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
+ \addtomakeheaddetails{\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}%
+ \ifthenelse{\isundefined{\@extrainfo}}{}{\addtomakeheaddetails{\@extrainfo}}%
+ \flushmakeheaddetails}\fi}\\[2.5em]}% need to force a \par after this to avoid weird spacing bug at the first section if no blank line is left after \makehead
+
+
+%-------------------------------------------------------------------------------
+% resume head definition
+%-------------------------------------------------------------------------------
+% lengths
+\@initializelength{\quotewidth}
+\renewcommand*{\recomputecvheadlengths}{%
+ \setlength{\quotewidth}{0.65\textwidth}}
+
+% commands
+\renewcommand*{\makecvhead}{% TODO: use \@initializecommand, which requires modifying its definition to handle \par
+ % recompute lengths (in case we are switching from letter to resume, or vice versa)
+ \recomputecvlengths%
+ \makehead%
+ % optional quote
+ \ifthenelse{\isundefined{\@quote}}%
+ {}%
+ {{\centering\begin{minipage}{\quotewidth}\centering\quotestyle{\@quote}\end{minipage}\\[2.5em]}}%
+ \par}% to avoid weird spacing bug at the first section if no blank line is left after \maketitle}
+
+
+%-------------------------------------------------------------------------------
+% letter head definition
+%-------------------------------------------------------------------------------
+% lengths
+%\renewcommand*{\recomputeletterheadlengths}{}
+
+% commands
+\renewcommand*{\makeletterhead}{%
+ % recompute lengths (in case we are switching from letter to resume, or vice versa)
+ \recomputeletterlengths%
+ % sender block
+ \makehead%
+ \par%
+ % recipient block
+ \begin{minipage}[t]{.5\textwidth}
+ \raggedright%
+ \addressfont%
+ {\bfseries\upshape\@recipientname}\\%
+ \@recipientaddress%
+ \end{minipage}
+ % date
+ \hfill% US style
+% \\[1em]% UK style
+ \@date\\[2em]% US informal style: "January 1, 1900"; UK formal style: "01/01/1900"
+ % opening
+ \raggedright%
+ \@opening\\[1.5em]%
+ % ensure no extra spacing after \makelettertitle due to a possible blank line
+% \ignorespacesafterend% not working
+ \hspace{0pt}\par\vspace{-\baselineskip}\vspace{-\parskip}}
+
+
+\endinput
+
+
+%% end of file `moderncvheadiii.sty'.
diff --git a/macros/latex/contrib/moderncv/moderncvheadiv.sty b/macros/latex/contrib/moderncv/moderncvheadiv.sty
new file mode 100644
index 0000000000..bed59f55fb
--- /dev/null
+++ b/macros/latex/contrib/moderncv/moderncvheadiv.sty
@@ -0,0 +1,168 @@
+%% start of file `moderncvheadiv.sty'.
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncvheadiv}[2015/07/28 v2.0.0 modern curriculum vitae and letter header variant: 4]
+
+% details options: "details" (default) or "nodetails"
+\@initializeif{\if@details}\@detailsfalse
+\DeclareOption{details}{\@detailstrue}
+\DeclareOption{nodetails}{\@detailsfalse}
+
+\DeclareOption*{}% avoid choking on unknown options
+\ExecuteOptions{details}
+\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
+
+%-------------------------------------------------------------------------------
+% required packages
+%-------------------------------------------------------------------------------
+% change the layout of the page on the fly, for resume or letter layout
+\RequirePackage{changepage}
+
+
+%-------------------------------------------------------------------------------
+% overall head definition
+%-------------------------------------------------------------------------------
+% fonts
+\renewcommand*{\namefont}{\fontsize{34}{36}\mdseries\upshape}
+\renewcommand*{\titlefont}{\LARGE\mdseries\slshape}
+\renewcommand*{\addressfont}{\small\mdseries}
+\renewcommand*{\quotefont}{\large\itshape}
+
+% styles
+\renewcommand*{\namestyle}[1]{{\namefont\textcolor{color0}{#1}}}
+\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{color2}{#1}}}
+\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{color2}{#1}}}
+\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{color1}{#1}}}
+
+
+%-------------------------------------------------------------------------------
+% resume head definition
+%-------------------------------------------------------------------------------
+% lengths
+\@initializelength{\quotewidth}
+\setlength{\marginparwidth}{0\p@}
+\setlength{\marginparsep}{0\p@}
+\renewcommand*{\recomputecvheadlengths}{%
+ \changepage{}{+\marginparwidth+\marginparsep}{}{}{}{}{}{}{}% if a letter was typeset before the resume, \marginparwidth and \marginparsep will be non-zero; otherwise, this has no effect
+ \setlength{\marginparwidth}{0\p@}%
+ \setlength{\marginparsep}{0\p@}%
+ \setlength{\quotewidth}{0.85\textwidth}}
+
+% commands
+\newcommand*{\makecvheadinfo}[1]{% TODO: use \@initializecommand, which requires modifying its definition to handle mandatory and optional arguments
+ \newbox{\makecvheadinfobox}%
+ \savebox{\makecvheadinfobox}{\parbox[t]{\hintscolumnwidth}{#1}}%
+ \newlength{\makecvheadinfoheight}%
+ \setlength{\makecvheadinfoheight}{\totalheightof{\usebox{\makecvheadinfobox}}}% the total height of the parbox is the sum of its height (\the\ht\makeinfobox) and its depth (\the\dp\makeinfobox); the \totalheightof command is provided by the "calc" package
+ \usebox{\makecvheadinfobox}\vspace{-\makecvheadinfoheight}%
+% \newlength{\leftcolumnwidth}%
+% \setlength{\leftcolumnwidth}{\hintscolumnwidth+\separatorcolumnwidth}%
+% \par\vspace{-\baselineskip}\vspace{-\parskip}\leftskip=\leftcolumnwidth%
+ \par\vspace{-\baselineskip}\vspace{-\parskip}%
+ \leftskip=\dimexpr\hintscolumnwidth+\separatorcolumnwidth\relax% \dimexpr require e-TeX engine extensions
+ \recomputecvlengths} % need to recompute the layout lenghts as we just changed \leftskip
+\renewcommand*{\makecvhead}{
+ % recompute lengths (in case we are switching from letter to resume, or vice versa)
+ \recomputecvlengths%
+ % optional picture box
+ \newbox{\makecvheadpicturebox}%
+ \savebox{\makecvheadpicturebox}{%
+ \ifthenelse{\isundefined{\@photo}}%
+ {}%
+ {%
+ \color{color1}%
+ \setlength\fboxrule{\@photoframewidth}%
+ \ifdim\@photoframewidth=0pt%
+ \setlength{\fboxsep}{0pt}\fi%
+ \framebox{\includegraphics[width=\@photowidth]{\@photo}}}}%
+ % name and optional title
+ \newlength{\makecvheadpicturewidth}\settowidth{\makecvheadpicturewidth}{\usebox{\makecvheadpicturebox}}%
+ \newlength{\makecvheadnamewidth}\setlength{\makecvheadnamewidth}{\textwidth-\makecvheadpicturewidth}%
+ \begin{minipage}[b]{\makecvheadnamewidth}%
+ \namestyle{\@firstname\ \@lastname}%
+ \ifthenelse{\equal{\@title}{}}{}{\\[1.25em]\titlestyle{\@title}}%
+ \end{minipage}%
+ % optional photo
+ \usebox{\makecvheadpicturebox}\\[2.5em]%
+ % optional quote
+ \ifthenelse{\isundefined{\@quote}}%
+ {}%
+ {{\centering\begin{minipage}{\quotewidth}\centering\quotestyle{\@quote}\end{minipage}\\[2.5em]}}%
+ % optional details
+ \if@details%
+ \makecvheadinfo{%
+ \addressfont\color{color2}%
+ \ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
+ \ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty
+ \ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}%
+ \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
+ \makenewline\hbox to 1.0em{\csname\collectionloopkey phonesymbol\endcsname}~\collectionloopitem}%
+ \ifthenelse{\isundefined{\@email}}{}{\makenewline\hbox to 1.0em{\emailsymbol}~\emaillink{\@email}}%
+ \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\hbox to 1.0em{\homepagesymbol}~\httplink{\@homepage}}%
+ \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
+ \makenewline\hbox to 1.0em{\csname\collectionloopkey socialsymbol\endcsname}~\collectionloopitem}%
+ \ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}}\fi}
+
+
+%-------------------------------------------------------------------------------
+% letter head definition
+%-------------------------------------------------------------------------------
+% lengths
+%\newlength{\textwidthdelta}%
+\renewcommand*{\recomputeletterheadlengths}{%
+ \recomputecvlengths%
+% \setlength{\textwidthdelta}{+\marginparwidth+\marginparsep}%
+% \addtolength{\textwidthdelta}{-\marginparwidth-\marginparsep}%
+% \changepage{}{\textwidthdelta}{-\textwidthdelta}{}{}{}{}{}{}%\changepage{<textheight>}{<textwidth>}{<evensidemargin>}{<oddsidemargin>}{<columnsep>}{<topmargin>}{<headheight>}{<headsep>}{<footskip>}
+ \setlength{\marginparwidth}{\hintscolumnwidth}%
+ \setlength{\marginparsep}{2\separatorcolumnwidth}%
+ \changepage{}{-\marginparwidth-\marginparsep}{}{}{}{}{}{}{}%\changepage{<textheight>}{<textwidth>}{<evensidemargin>}{<oddsidemargin>}{<columnsep>}{<topmargin>}{<headheight>}{<headsep>}{<footskip>}
+ }
+
+% commands
+\renewcommand*{\makeletterhead}{%
+ % recompute lengths (in case we are switching from letter to resume, or vice versa)
+ \leftskip=0pt% needs to be set before \recomputeletterlengths
+ \recomputeletterlengths%
+ % recipient block
+ {\addressfont%
+ {\bfseries\upshape\@recipientname}\\%
+ \@recipientaddress}\\[1em]%
+ % date
+ \@date\\[2em]%
+ % opening
+ \@opening\\[1.5em]%
+ % sender contact info
+ \if@details%
+ \hspace{0pt}%
+ \marginpar{%
+ \addressfont\textcolor{color2}{%
+ {\bfseries\@firstname~\@lastname}\@firstdetailselementfalse%
+ \ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
+ \ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty
+ \ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}%
+ \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
+ \makenewline\hbox to 1.0em{\csname\collectionloopkey phonesymbol\endcsname}~\collectionloopitem}%
+ \ifthenelse{\isundefined{\@email}}{}{\makenewline\hbox to 1.0em{\emailsymbol}~\emaillink{\@email}}%
+ \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\hbox to 1.0em{\homepagesymbol}~\httplink{\@homepage}}%
+ \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
+ \makenewline\hbox to 1.0em{\csname\collectionloopkey socialsymbol\endcsname}~\collectionloopitem}%
+ \ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}}}%
+ % ensure no extra spacing after \makelettertitle due to a possible blank line
+ %\ignorespacesafterend% not working
+ \par\vspace{-\baselineskip}\vspace{-\parskip}\fi}
+
+
+\endinput
+
+
+%% end of file `moderncvheadiv.sty'.
diff --git a/macros/latex/contrib/moderncv/moderncvheadv.sty b/macros/latex/contrib/moderncv/moderncvheadv.sty
new file mode 100644
index 0000000000..e00be88d88
--- /dev/null
+++ b/macros/latex/contrib/moderncv/moderncvheadv.sty
@@ -0,0 +1,170 @@
+%% start of file `moderncvheadv.sty'.
+%% Copyright 2015-2015 Xavier Danaux (xdanaux@gmail.com).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncvheadv}[2015/07/28 v2.0.0 modern curriculum vitae and letter header variant: 5]
+
+% details options: "details" (default) or "nodetails"
+\@initializeif{\if@details}\@detailsfalse
+\DeclareOption{details} {\@detailstrue}
+\DeclareOption{nodetails} {\@detailsfalse}
+
+\DeclareOption*{}% avoid choking on unknown options
+\ExecuteOptions{details}
+\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
+
+
+%-------------------------------------------------------------------------------
+% required packages
+%-------------------------------------------------------------------------------
+
+
+%-------------------------------------------------------------------------------
+% overall head definition
+%-------------------------------------------------------------------------------
+% fonts
+\renewcommand*{\namefont}{\fontsize{34}{36}\mdseries\upshape}
+\renewcommand*{\titlefont}{\LARGE\mdseries\slshape}
+\renewcommand*{\addressfont}{\small\mdseries\slshape}
+\renewcommand*{\quotefont}{\large\slshape}
+
+% styles
+\renewcommand*{\namestyle}[1]{{\namefont\textcolor{color0}{#1}}}
+\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{color2}{#1}}}
+\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{color2}{#1}}}
+\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{color1}{#1}}}
+
+
+%-------------------------------------------------------------------------------
+% resume head definition
+%-------------------------------------------------------------------------------
+% lengths
+\@initializelength{\quotewidth}
+% optional makecvheadname width to force a certain width (if set/remains to 0pt, the width is calculated automatically)
+\@initializelength{\makecvheadnamewidth}
+\renewcommand*{\recomputecvheadlengths}{%
+ \setlength{\quotewidth}{0.65\textwidth}}
+
+% commands
+\renewcommand*{\makecvhead}{%
+ % recompute lengths (in case we are switching from letter to resume, or vice versa)
+ \recomputecvlengths%
+ % optional photo (pre-rendering)
+ \@initializebox{\makecvheadpicturebox}%
+ \savebox{\makecvheadpicturebox}{%
+ \ifthenelse{\isundefined{\@photo}}%
+ {}%
+ {%
+ \color{color1}%
+ \setlength{\fboxrule}{\@photoframewidth}%
+ \ifdim\@photoframewidth=0pt%
+ \setlength{\fboxsep}{0pt}\fi%
+ \framebox{\includegraphics[width=\@photowidth]{\@photo}}}}%
+ % rendering
+ \@makecvtitle%
+ {%
+ \raggedleft%
+ % optional photo
+ \usebox{\makecvheadpicturebox}%
+ % optional details
+ \if@details%
+ \ifthenelse{\isundefined{\@photo}}{}{\\[0.5em]}%
+ \addressfont\color{color2}%
+ \ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
+ \ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty
+ \ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}%
+ \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
+ \makenewline\csname\collectionloopkey phonesymbol\endcsname~\collectionloopitem}%
+ \ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol~\emaillink{\@email}}%
+ \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol~\httplink{\@homepage}}%
+ \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
+ \makenewline\csname\collectionloopkey socialsymbol\endcsname~\collectionloopitem}%
+ \ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}\fi}%
+ {%
+ % name and optional title
+ \newlength{\makecvheadpictureboxskip}%
+ \setlength{\makecvheadpictureboxskip}{\totalheightof{\usebox{\makecvheadpicturebox}}}%
+ \namestyle{\@firstname\ \@lastname}%
+ \ifthenelse{\equal{\@title}{}}{}{\\[1.25em]\titlestyle{\@title}}\\[2.5em]%
+ % optional quote
+ \ifthenelse{\isundefined{\@quote}}%
+ {}%
+ {\begin{minipage}{\quotewidth}\quotestyle{\@quote}\end{minipage}\\[2.5em]}}%
+ \par}% to avoid weird spacing bug at the first section if no blank line is left after \makecvhead
+
+% underlying command to implement \makecvtitle, identical to \@cvitem from moderncvbodyv
+\let\standarddoublebackslash\\%
+\newcommand*{\@makecvtitle}[3][.5ex]{%
+ \arrayrulecolor{color1}%
+ \setlength\arrayrulewidth{1.2\p@}%
+ \if@aftersection\else%
+ \vspace*{-\arrayrulewidth}\fi% HACK; I don't understand where the space is coming from, nor what it's exact value is :(
+ \noindent%
+ \begin{tabular}[t]{@{}p{\hintscolumnwidth}@{\hspace{\separatorcolumnwidth}}|@{\hspace{\separatorcolumnwidth}}p{\maincolumnwidth}@{}}%
+ \@moderncvstrut{4pt}{16pt}%
+ \begin{minipage}[t]{\hintscolumnwidth}#2\end{minipage}
+ &\begin{minipage}[t]{\maincolumnwidth}#3\end{minipage}%
+ \\[#1]% the spacing needs to be inside the cell for the vertical rule to extend correctly
+ \end{tabular}%
+ \par\@aftersectionfalse\ignorespaces}
+
+
+%-------------------------------------------------------------------------------
+% letter head definition
+%-------------------------------------------------------------------------------
+% lengths
+%\renewcommand*{\recomputeletterheadlengths}{}
+
+% commands
+\renewcommand*{\makeletterhead}{%
+ % recompute lengths (in case we are switching from letter to resume, or vice versa)
+ \recomputeletterlengths%
+ % sender contact info
+ \hfill%
+ \begin{minipage}{.5\textwidth}%
+ % optional detailed information
+ \if@details%
+ \raggedleft%
+ \addressfont\textcolor{color2}{%
+ {\bfseries\upshape\@firstname~\@lastname}\@firstdetailselementfalse%
+ % optional detailed information
+ \ifthenelse{\isundefined{\@addressstreet}}{}{\makenewline\addresssymbol\@addressstreet%
+ \ifthenelse{\equal{\@addresscity}{}}{}{\makenewline\@addresscity}% if \addresstreet is defined, \addresscity and addresscountry will always be defined but could be empty
+ \ifthenelse{\equal{\@addresscountry}{}}{}{\makenewline\@addresscountry}}%
+ \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
+ \makenewline\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}%
+ \ifthenelse{\isundefined{\@email}}{}{\makenewline\emailsymbol\emaillink{\@email}}%
+ \ifthenelse{\isundefined{\@homepage}}{}{\makenewline\homepagesymbol\httplink{\@homepage}}%
+ \ifthenelse{\isundefined{\@extrainfo}}{}{\makenewline\@extrainfo}}\fi%
+ \end{minipage}\\[1em]
+ % recipient block
+ \begin{minipage}[t]{.5\textwidth}
+ \raggedright%
+ \addressfont%
+ {\bfseries\upshape\@recipientname}\\%
+ \@recipientaddress%
+ \end{minipage}
+ % date
+ \hfill% US style
+% \\[1em]% UK style
+ \@date\\[2em]% US informal style: "January 1, 1900"; UK formal style: "01/01/1900"
+ % opening
+ \raggedright%
+ \@opening\\[1.5em]%
+ % ensure no extra spacing after \makelettertitle due to a possible blank line
+% \ignorespacesafterend% not working
+ \hspace{0pt}\par\vspace{-\baselineskip}\vspace{-\parskip}}
+
+
+\endinput
+
+
+%% end of file `moderncvheadv.sty'.
diff --git a/macros/latex/contrib/moderncv/moderncvheadvi.sty b/macros/latex/contrib/moderncv/moderncvheadvi.sty
new file mode 100644
index 0000000000..83c1055b9b
--- /dev/null
+++ b/macros/latex/contrib/moderncv/moderncvheadvi.sty
@@ -0,0 +1,168 @@
+%% start of file `moderncvheadvi.sty'.
+%% Copyright 2015-2015 Xavier Danaux (xdanaux@gmail.com).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncvheadvi}[2015/07/28 v2.0.0 modern curriculum vitae and letter header: 6]
+
+% details options: "details" (default) or "nodetails"
+\@initializeif{\if@details}\@detailsfalse
+\DeclareOption{details}{\@detailstrue}
+\DeclareOption{nodetails}{\@detailsfalse}
+
+% left/right options: "left" (default) or "right"
+\@initializeif{\if@left} \@leftfalse
+\DeclareOption{left} {\@lefttrue\@rightfalse}
+\@initializeif{\if@right}\@rightfalse
+\DeclareOption{right} {\@leftfalse\@righttrue}
+
+\DeclareOption*{}% avoid choking on unknown options
+\ExecuteOptions{details, left}
+\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
+
+
+%-------------------------------------------------------------------------------
+% required packages
+%-------------------------------------------------------------------------------
+
+
+%-------------------------------------------------------------------------------
+% overall head definition
+%-------------------------------------------------------------------------------
+% fonts
+\renewcommand*{\namefont}{\Huge\bfseries\upshape}
+\renewcommand*{\titlefont}{\Huge\mdseries\upshape}
+\renewcommand*{\addressfont}{\normalsize\mdseries\upshape}
+\renewcommand*{\quotefont}{\large\slshape}
+
+% styles
+\renewcommand*{\namestyle}[1]{{\namefont\textcolor{color1}{#1}}}
+\renewcommand*{\titlestyle}[1]{{\titlefont\textcolor{color2!85}{#1}}}
+\renewcommand*{\addressstyle}[1]{{\addressfont\textcolor{color2}{#1}}}
+\renewcommand*{\quotestyle}[1]{{\quotefont\textcolor{color1}{#1}}}
+
+% commands
+\@initializecommand{\makehead}{%
+ \setlength{\makeheaddetailswidth}{\textwidth}%
+ % name and title
+ \if@left\hfill\fi%
+ \namestyle{\@firstname~\@lastname}%
+ \ifthenelse{\equal{\@title}{}}{}{\titlestyle{~|~\@title}}\\[-.35em]% \isundefined doesn't work on \@title, as LaTeX itself defines \@title (before it possibly gets redefined by \title)
+ % rule
+ {\color{color1}\rule{\textwidth}{.25ex}}}
+
+%-------------------------------------------------------------------------------
+% resume head definition
+%-------------------------------------------------------------------------------
+% lengths
+\@initializelength{\quotewidth}
+\renewcommand*{\recomputecvheadlengths}{%
+ \setlength{\quotewidth}{0.65\textwidth}}
+
+% commands
+\@initializecommand{\makeheaddetailssymbol}{%
+ {~~~{\rmfamily\textbullet}~~~}}% the \rmfamily is required to force Latin Modern fonts when using sans serif, as OMS/lmss/m/n is not defined and gets substituted by OMS/cmsy/m/n
+% internal command to add an element to the footer
+% it collects the elements in a temporary box, and checks when to flush the box
+\@initializebox{\makeheaddetailsbox}%
+\@initializebox{\makeheaddetailstempbox}%
+\@initializelength{\makeheaddetailswidth}%
+\@initializelength{\makeheaddetailsboxwidth}%
+\@initializeif{\if@firstmakeheaddetailselement}\@firstmakeheaddetailselementtrue%
+% adds an element to the makehead, separated by makeheadsymbol
+% usage: \addtomakehead[makeheadsymbol]{element}
+\newcommand*{\addtomakeheaddetails}[2][\makeheaddetailssymbol]{% TODO: use \@initializecommand, which requires modifying its definition to handle mandatory and optional arguments
+ \if@firstmakeheaddetailselement%
+ \savebox{\makeheaddetailstempbox}{\usebox{\makeheaddetailsbox}#2}%
+ \else%
+ \savebox{\makeheaddetailstempbox}{\usebox{\makeheaddetailsbox}#1#2}\fi%
+ \settowidth{\makeheaddetailsboxwidth}{\usebox{\makeheaddetailstempbox}}%
+ \ifnum\makeheaddetailsboxwidth<\makeheaddetailswidth%
+ \savebox{\makeheaddetailsbox}{\usebox{\makeheaddetailstempbox}}%
+ \@firstmakeheaddetailselementfalse%
+ \else%
+ \flushmakeheaddetails\\\null% \null is required as there is no box on the line after \\, so glue such as \hfill (and leaders) disappear; this is in contrast to after \par, where the next line starts with an indent box (even after \noindent)
+ \savebox{\makeheaddetailsbox}{#2}%
+ \savebox{\makeheaddetailstempbox}{#2}%
+ \settowidth{\makeheaddetailsboxwidth}{\usebox{\makeheaddetailsbox}}%
+ \@firstmakeheaddetailselementfalse\fi}
+% internal command to flush the makehead
+\@initializecommand{\flushmakeheaddetails}{%
+ \if@right\hfill\fi%
+ \strut\usebox{\makeheaddetailsbox}%
+ \savebox{\makeheaddetailsbox}{}%
+ \savebox{\makeheaddetailstempbox}{}%
+ \setlength{\makeheaddetailsboxwidth}{0pt}}
+\renewcommand*{\makecvhead}{% TODO: use \@initializecommand, which requires modifying its definition to handle \par
+ % recompute lengths (in case we are switching from letter to resume, or vice versa)
+ \recomputecvlengths%
+ \makehead%
+ % optional detailed information
+ \if@details{%
+ \\\null%
+ \addressfont\color{color2}%
+ \ifthenelse{\isundefined{\@addressstreet}}{}{\addtomakeheaddetails{\addresssymbol\@addressstreet}%
+ \ifthenelse{\equal{\@addresscity}{}}{}{\addtomakeheaddetails[~--~]{\@addresscity}}% if \addresstreet is defined, \addresscity and \addresscountry will always be defined but could be empty
+ \ifthenelse{\equal{\@addresscountry}{}}{}{\addtomakeheaddetails[~--~]{\@addresscountry}}%
+ \flushmakeheaddetails\@firstmakeheaddetailselementtrue\\\null}%
+ \collectionloop{phones}{% the key holds the phone type (=symbol command prefix), the item holds the number
+ \addtomakeheaddetails{\csname\collectionloopkey phonesymbol\endcsname\collectionloopitem}}%
+ \ifthenelse{\isundefined{\@email}}{}{\addtomakeheaddetails{\emailsymbol\emaillink{\@email}}}%
+ \ifthenelse{\isundefined{\@homepage}}{}{\addtomakeheaddetails{\homepagesymbol\httplink{\@homepage}}}%
+ \collectionloop{socials}{% the key holds the social type (=symbol command prefix), the item holds the link
+ \addtomakeheaddetails{\csname\collectionloopkey socialsymbol\endcsname\collectionloopitem}}%
+ \ifthenelse{\isundefined{\@extrainfo}}{}{\addtomakeheaddetails{\@extrainfo}}%
+ \flushmakeheaddetails}\fi% need to force a \par after this to avoid weird spacing bug at the first section if no blank line is left after \makehead; not forcing it here because of the possible quote
+ % optional quote
+ \ifthenelse{\isundefined{\@quote}}%
+ {}%
+ {{\\[1.25em]\null\hfill%
+ \begin{minipage}{\quotewidth}%
+ \centering\quotestyle{\@quote}%
+ \end{minipage}\hfill\null}}\\[2.5em]%
+ \par}% to avoid weird spacing bug at the first section if no blank line is left after \maketitle}
+
+
+%-------------------------------------------------------------------------------
+% letter head definition
+%-------------------------------------------------------------------------------
+% lengths
+%\renewcommand*{\recomputeletterheadlengths}{}
+
+% commands
+\renewcommand*{\makeletterhead}{%
+ % recompute lengths (in case we are switching from letter to resume, or vice versa)
+ \recomputeletterlengths%
+ % sender block
+ \makehead\\[2.5em]%
+ \par% to avoid weird spacing bug at the first section if no blank line is left after \maketitle}
+ % recipient block
+ \begin{minipage}[t]{.5\textwidth}
+ \raggedright%
+ \addressfont%
+ {\bfseries\upshape\@recipientname}\\%
+ \@recipientaddress%
+ \end{minipage}
+ % date
+ \hfill% US style
+% \\[1em]% UK style
+ \@date\\[2em]% US informal style: "January 1, 1900"; UK formal style: "01/01/1900"
+ % opening
+ \raggedright%
+ \@opening\\[1.5em]%
+ % ensure no extra spacing after \makelettertitle due to a possible blank line
+% \ignorespacesafterend% not working
+ \hspace{0pt}\par\vspace{-\baselineskip}\vspace{-\parskip}}
+
+
+\endinput
+
+
+%% end of file `moderncvheadvi.sty'.
diff --git a/macros/latex/contrib/moderncv/moderncviconsawesome.sty b/macros/latex/contrib/moderncv/moderncviconsawesome.sty
new file mode 100644
index 0000000000..92f2dbf309
--- /dev/null
+++ b/macros/latex/contrib/moderncv/moderncviconsawesome.sty
@@ -0,0 +1,44 @@
+%% start of file `moderncviconsawesome.sty'.
+%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncviconsawesome}[2015/07/28 v2.0.0 modern curriculum vitae and letter icons: awesome]
+
+%-------------------------------------------------------------------------------
+% required packages
+%-------------------------------------------------------------------------------
+% Font Awesome font
+\RequirePackage{fontawesome}
+
+
+%-------------------------------------------------------------------------------
+% symbols definition
+%-------------------------------------------------------------------------------
+\renewcommand*{\labelitemi} {\strut\textcolor{color1}{\tiny\faCircleO}}
+%\renewcommand*{\labelitemii} {\strut\textcolor{color1}{\large\bfseries-}} % no change from default in moderncv.cls
+%\renewcommand*{\labelitemiii} {\strut\textcolor{color1}{\rmfamily\textperiodcentered}}% no change from default in moderncv.cls
+%\renewcommand*{\labelitemiv} {\labelitemiii} % no change from default in moderncv.cls
+
+\renewcommand*{\addresssymbol} {}
+\renewcommand*{\mobilephonesymbol} {{\Large\faMobile}~}
+\renewcommand*{\fixedphonesymbol} {\faPhone~}
+\renewcommand*{\faxphonesymbol} {{\small\faFax}~} % alternative: \faPrint
+\renewcommand*{\emailsymbol} {{\small\faEnvelopeO}~} % alternative: \faInbox
+\renewcommand*{\homepagesymbol} {{\small\faGlobe}~} % alternative: \faHome
+\renewcommand*{\linkedinsocialsymbol}{{\small\faLinkedin}~} % alternative: \faLinkedinSquare
+\renewcommand*{\twittersocialsymbol} {{\small\faTwitter}~} % alternative: \faTwitterSquare
+\renewcommand*{\githubsocialsymbol} {{\small\faGithub}~} % alternative: \faGithubSquare, \faGithubSquare
+
+
+\endinput
+
+
+%% end of file `moderncviconsawesome.sty'.
diff --git a/macros/latex/contrib/moderncv/moderncviconsletters.sty b/macros/latex/contrib/moderncv/moderncviconsletters.sty
new file mode 100644
index 0000000000..8339b01fef
--- /dev/null
+++ b/macros/latex/contrib/moderncv/moderncviconsletters.sty
@@ -0,0 +1,53 @@
+%% start of file `moderncviconsletters.sty'.
+%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncviconsletters}[2015/07/28 v2.0.0 modern curriculum vitae and letter icons: letters]
+
+
+%-------------------------------------------------------------------------------
+% required packages
+%-------------------------------------------------------------------------------
+% MarVoSym font
+%\RequirePackage{marvosym}
+\newcommand*{\marvosymbol}[1]{}
+%\ifxetexorluatex
+% \renewcommand*{\marvosymbol}[1]{{\fontspec{MarVoSym}\char#1}}
+%\else
+ \renewcommand*{\marvosymbol}[1]{{\fontfamily{mvs}\fontencoding{U}\fontseries{m}\fontshape{n}\selectfont\char#1}}
+%\fi
+
+
+%-------------------------------------------------------------------------------
+% symbols definition
+%-------------------------------------------------------------------------------
+\renewcommand*{\labelitemi} {\strut\textcolor{color1}{\marvosymbol{123}}} % equivalent to \Neutral from marvosym package; alternative: \fontencoding{U}\fontfamily{ding}\selectfont\tiny\symbol{'102}
+%\renewcommand*{\labelitemii} {\strut\textcolor{color1}{\large\bfseries-}} % no change from default in moderncv.cls
+%\renewcommand*{\labelitemiii} {\strut\textcolor{color1}{\rmfamily\textperiodcentered}}% no change from default in moderncv.cls
+%\renewcommand*{\labelitemiv} {\labelitemiii} % no change from default in moderncv.cls
+
+\renewcommand*{\addresssymbol} {}
+\renewcommand*{\mobilephonesymbol} {\textbf{M}~}
+\renewcommand*{\fixedphonesymbol} {\textbf{T}~}
+\renewcommand*{\faxphonesymbol} {\textbf{F}~}
+\renewcommand*{\emailsymbol} {\textbf{E}~}
+\renewcommand*{\homepagesymbol} {\textbf{W}~}
+\renewcommand*{\linkedinsocialsymbol}{\textbf{in}~}
+\renewcommand*{\twittersocialsymbol} {\textbf{tw}~}
+\renewcommand*{\githubsocialsymbol} {\textbf{gh}~}
+
+\renewcommand*{\listitemsymbol} {\labelitemi~}
+
+
+\endinput
+
+
+%% end of file `moderncviconsletters.sty'.
diff --git a/macros/latex/contrib/moderncv/moderncviconsmarvosym.sty b/macros/latex/contrib/moderncv/moderncviconsmarvosym.sty
new file mode 100644
index 0000000000..c6ab035e35
--- /dev/null
+++ b/macros/latex/contrib/moderncv/moderncviconsmarvosym.sty
@@ -0,0 +1,230 @@
+%% start of file `moderncviconsmarvosym.sty'.
+%% Copyright 2013-2015 Xavier Danaux (xdanaux@gmail.com).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncviconsmarvosym}[2015/07/28 v2.0.0 modern curriculum vitae and letter icons: marvosym]
+
+
+%-------------------------------------------------------------------------------
+% required packages
+%-------------------------------------------------------------------------------
+% MarVoSym font
+%\RequirePackage{marvosym}
+\newcommand*{\marvosymbol}[1]{}
+%\ifxetexorluatex
+% \renewcommand*{\marvosymbol}[1]{{\fontspec{MarVoSym}\char#1}}
+%\else
+ \renewcommand*{\marvosymbol}[1]{{\fontfamily{mvs}\fontencoding{U}\fontseries{m}\fontshape{n}\selectfont\char#1}}
+%\fi
+
+% tikz drawings
+\RequirePackage{tikz}
+
+
+%-------------------------------------------------------------------------------
+% symbols definition
+%-------------------------------------------------------------------------------
+\renewcommand*{\labelitemi} {\strut\textcolor{color1}{\marvosymbol{123}}} % equivalent to \Neutral from marvosym package; alternative: \fontencoding{U}\fontfamily{ding}\selectfont\tiny\symbol{'102}
+%\renewcommand*{\labelitemii} {\strut\textcolor{color1}{\large\bfseries-}} % no change from default in moderncv.cls
+%\renewcommand*{\labelitemiii} {\strut\textcolor{color1}{\rmfamily\textperiodcentered}}% no change from default in moderncv.cls
+%\renewcommand*{\labelitemiv} {\labelitemiii} % no change from default in moderncv.cls
+
+\renewcommand*{\addresssymbol} {}
+\renewcommand*{\mobilephonesymbol} {\marvosymbol{72}~}
+\renewcommand*{\fixedphonesymbol} {\marvosymbol{84}~}
+\renewcommand*{\faxphonesymbol} {\marvosymbol{117}~}
+\renewcommand*{\emailsymbol} {\marvosymbol{66}~}
+\renewcommand*{\homepagesymbol} {{\Large\marvosymbol{205}}~}
+\renewcommand*{\linkedinsocialsymbol}{%
+ \protect\raisebox{-0.165em}{%
+ \protect\begin{tikzpicture}[x=0.08em, y=0.08em, xscale=0.25, yscale=-0.25, inner sep=0pt, outer sep=0pt]
+ \protect\begin{scope}[cm={{0.60,0.0,0.0,0.60,(346.39,123.07)}}]
+ \protect\path[fill=color2]
+ (381,202) -- (434,202) .. controls (439,202) and (442,205) ..
+ (442,210) -- (442,264) .. controls (442,268) and (439,272) ..
+ (434,272) -- (381,272) .. controls (376,272) and (372,268) ..
+ (372,264) -- (372,210) .. controls (372,205) and (376,202) ..
+ (381,202) -- cycle;
+ \protect\begin{scope}[xscale=0.98, yscale=1.02, fill=white]
+ \protect\path[fill=white]
+ (403,253) -- (403,224) -- (394,224) -- (394,253) --
+ cycle(398,211) .. controls (397,211) and (395,212) ..
+ (395,213) .. controls (394,213) and (393,215) ..
+ (393,216) .. controls (393,217) and (394,218) ..
+ (395,219) .. controls (395,220) and (397,220) ..
+ (398,220) .. controls (400,220) and (401,220) ..
+ (402,219) .. controls (402,218) and (403,217) ..
+ (403,216) .. controls (403,215) and (402,213) ..
+ (402,213) .. controls (401,212) and (400,211) ..
+ (398,211) -- cycle;
+ \protect\path[fill=white]
+ (410,253) -- (419,253) --
+ (419,236) .. controls (419,236) and (419,235) ..
+ (419,235) .. controls (419,235) and (419,234) ..
+ (419,234) .. controls (419,233) and (420,232) ..
+ (421,232) .. controls (422,231) and (423,231) ..
+ (424,231) .. controls (425,231) and (427,231) ..
+ (427,232) .. controls (428,234) and (428,235) ..
+ (428,237) -- (428,253) -- (437,253) --
+ (437,236) .. controls (437,232) and (436,228) ..
+ (434,226) .. controls (433,224) and (430,223) ..
+ (427,223) .. controls (425,223) and (423,224) ..
+ (421,225) .. controls (420,226) and (419,227) ..
+ (418,228) -- (418,228) -- (417,224) --
+ (410,224) .. controls (410,225) and (410,227) ..
+ (410,228) .. controls (410,230) and (410,231) ..
+ (410,233) -- cycle;
+ \protect\end{scope}%
+ \protect\end{scope}%
+ \protect\end{tikzpicture}}%
+ ~}
+\renewcommand*{\twittersocialsymbol} {%
+ \protect\raisebox{0em}{%
+ \protect\begin{tikzpicture}[x=0.08em, y=0.08em, xscale=0.005, yscale=-0.005, inner sep=0pt, outer sep=0pt]
+ \protect\path[fill=color2]
+ (2000, 192) .. controls (1926, 225) and (1847, 247) ..
+ (1764, 257) .. controls (1849, 206) and (1914, 126) ..
+ (1945, 30) .. controls (1865, 77) and (1778, 111) ..
+ (1684, 130) .. controls (1609, 50) and (1503, 0) ..
+ (1385, 0) .. controls (1158, 0) and ( 974, 184) ..
+ ( 974, 410) .. controls ( 974, 442) and ( 978, 474) ..
+ ( 985, 504) .. controls ( 644, 487) and ( 342, 323) ..
+ ( 139, 75) .. controls ( 104, 136) and ( 84, 206) ..
+ ( 84, 281) .. controls ( 84, 424) and ( 156, 549) ..
+ ( 266, 623) .. controls ( 199, 621) and ( 136, 602) ..
+ ( 80, 572) .. controls ( 80, 573) and ( 80, 575) ..
+ ( 80, 577) .. controls ( 80, 776) and ( 222, 941) ..
+ ( 409, 979) .. controls ( 375, 988) and ( 339, 993) ..
+ ( 301, 993) .. controls ( 275, 993) and ( 249, 991) ..
+ ( 224, 986) .. controls ( 276,1149) and ( 428,1268) ..
+ ( 607,1271) .. controls ( 467,1381) and ( 290,1447) ..
+ ( 98,1447) .. controls ( 65,1447) and ( 32,1445) ..
+ ( 0,1441) .. controls ( 182,1557) and ( 397,1625) ..
+ ( 629,1625) .. controls (1384,1625) and (1796,1000) ..
+ (1796, 458) .. controls (1796, 440) and (1796, 422) ..
+ (1795, 405) .. controls (1875, 347) and (1945, 275) ..
+ (2000, 192);
+ \protect\end{tikzpicture}}%
+ ~}
+\renewcommand*{\githubsocialsymbol} {%
+ \protect\raisebox{-0.15em}{%
+ \protect\begin{tikzpicture}[x=0.08em, y=0.08em, xscale=0.25, yscale=-0.25, inner sep=0pt, outer sep=0pt]
+ \protect\begin{scope}[shift={(507,387)}]
+ \protect\path[fill=color2]
+ (117, 60) .. controls (117, 71) and (108, 81) ..
+ ( 96, 81) .. controls ( 85, 81) and ( 75, 71) ..
+ ( 75, 60) .. controls ( 75, 48) and ( 85, 39) ..
+ ( 96, 39) .. controls (108, 39) and (117, 48) ..
+ (117, 60) -- cycle;
+ \protect\path[cm={{0.88,0.0,0.0,0.88,(11.10,6.89)}}, fill=white]
+ (117, 60) .. controls (117, 71) and (108, 81) ..
+ ( 96, 81) .. controls ( 85, 81) and ( 75, 71) ..
+ ( 75, 60) .. controls ( 75, 48) and ( 85, 39) ..
+ ( 96, 39) .. controls (108, 39) and (117, 48) ..
+ (117, 60) -- cycle;
+ \protect\path[fill=color2, nonzero rule]
+ (103, 45) .. controls (103, 45) and (101, 46) ..
+ (101, 47) -- (100, 47) --
+ ( 99, 47) .. controls ( 99, 47) and ( 98, 47) ..
+ ( 97, 47) .. controls ( 94, 47) and ( 93, 47) ..
+ ( 92, 47) -- ( 92, 47) --
+ ( 91, 47) .. controls ( 90, 46) and ( 88, 45) ..
+ ( 88, 45) .. controls ( 88, 45) and ( 88, 45) ..
+ ( 87, 45) .. controls ( 87, 45) and ( 87, 45) ..
+ ( 87, 45) .. controls ( 86, 46) and ( 86, 48) ..
+ ( 86, 49) -- ( 87, 50) --
+ ( 86, 51) .. controls ( 85, 51) and ( 85, 52) ..
+ ( 85, 53) .. controls ( 85, 54) and ( 85, 57) ..
+ ( 85, 58) .. controls ( 85, 58) and ( 85, 58) ..
+ ( 82, 59) .. controls ( 79, 59) and ( 77, 59) ..
+ ( 77, 59) .. controls ( 77, 59) and ( 77, 59) ..
+ ( 78, 59) .. controls ( 80, 59) and ( 83, 59) ..
+ ( 85, 59) .. controls ( 85, 59) and ( 85, 59) ..
+ ( 85, 59) .. controls ( 86, 59) and ( 86, 59) ..
+ ( 86, 59) .. controls ( 86, 59) and ( 85, 59) ..
+ ( 84, 59) .. controls ( 82, 60) and ( 80, 60) ..
+ ( 79, 60) .. controls ( 78, 61) and ( 77, 61) ..
+ ( 77, 61) .. controls ( 77, 61) and ( 78, 61) ..
+ ( 79, 61) .. controls ( 81, 60) and ( 83, 60) ..
+ ( 85, 60) .. controls ( 86, 60) and ( 86, 60) ..
+ ( 86, 60) .. controls ( 86, 60) and ( 87, 61) ..
+ ( 88, 62) .. controls ( 89, 63) and ( 90, 63) ..
+ ( 92, 63) .. controls ( 92, 63) and ( 93, 64) ..
+ ( 93, 64) .. controls ( 93, 64) and ( 93, 64) ..
+ ( 93, 64) .. controls ( 92, 64) and ( 92, 65) ..
+ ( 92, 65) .. controls ( 92, 66) and ( 90, 66) ..
+ ( 89, 66) .. controls ( 88, 66) and ( 88, 66) ..
+ ( 87, 65) .. controls ( 87, 64) and ( 86, 63) ..
+ ( 86, 63) .. controls ( 85, 63) and ( 84, 63) ..
+ ( 84, 63) .. controls ( 84, 63) and ( 84, 63) ..
+ ( 84, 63) .. controls ( 85, 64) and ( 86, 65) ..
+ ( 86, 66) .. controls ( 87, 67) and ( 87, 68) ..
+ ( 88, 68) .. controls ( 89, 68) and ( 89, 68) ..
+ ( 90, 68) -- ( 92, 68) -- ( 92, 70) -- ( 92, 72) --
+ ( 91, 72) .. controls ( 91, 72) and ( 91, 73) ..
+ ( 91, 73) .. controls ( 90, 73) and ( 90, 73) ..
+ ( 91, 73) .. controls ( 92, 73) and ( 92, 73) ..
+ ( 92, 73) .. controls ( 93, 73) and ( 93, 73) ..
+ ( 93, 70) .. controls ( 93, 67) and ( 93, 67) ..
+ ( 94, 66) -- ( 94, 66) --
+ ( 94, 69) .. controls ( 94, 71) and ( 94, 73) ..
+ ( 94, 73) .. controls ( 94, 73) and ( 94, 73) ..
+ ( 93, 74) .. controls ( 93, 74) and ( 93, 74) ..
+ ( 93, 74) .. controls ( 93, 74) and ( 93, 74) ..
+ ( 94, 74) .. controls ( 94, 74) and ( 95, 74) ..
+ ( 96, 73) .. controls ( 96, 72) and ( 96, 71) ..
+ ( 96, 68) -- ( 96, 66) -- ( 96, 66) --
+ ( 96, 69) .. controls ( 96, 72) and ( 96, 72) ..
+ ( 97, 73) .. controls ( 97, 74) and ( 99, 74) ..
+ ( 99, 74) .. controls ( 99, 74) and ( 99, 74) ..
+ ( 99, 73) .. controls ( 99, 73) and ( 98, 73) ..
+ ( 98, 72) .. controls ( 98, 72) and ( 98, 66) ..
+ ( 98, 66) .. controls ( 98, 66) and ( 99, 66) ..
+ ( 99, 66) .. controls ( 99, 67) and ( 99, 67) ..
+ ( 99, 69) .. controls ( 99, 71) and ( 99, 72) ..
+ ( 99, 72) .. controls ( 99, 73) and (100, 73) ..
+ (100, 73) .. controls (101, 73) and (101, 73) ..
+ (101, 73) .. controls (102, 73) and (102, 73) ..
+ (102, 73) .. controls (101, 72) and (101, 72) ..
+ (101, 69) .. controls (101, 66) and (101, 65) ..
+ (100, 65) .. controls (100, 64) and (100, 64) ..
+ (100, 64) -- ( 99, 64) --
+ (100, 63) .. controls (101, 63) and (102, 63) ..
+ (103, 63) .. controls (104, 62) and (106, 61) ..
+ (106, 60) -- (106, 60) --
+ (107, 60) .. controls (109, 60) and (113, 60) ..
+ (115, 61) .. controls (115, 61) and (115, 61) ..
+ (115, 61) .. controls (115, 60) and (111, 60) ..
+ (108, 59) .. controls (107, 59) and (107, 59) ..
+ (107, 59) .. controls (107, 59) and (107, 59) ..
+ (107, 59) -- (107, 59) --
+ (108, 59) .. controls (110, 59) and (112, 59) ..
+ (114, 59) .. controls (115, 59) and (115, 59) ..
+ (115, 59) .. controls (115, 59) and (112, 59) ..
+ (109, 59) .. controls (108, 58) and (107, 58) ..
+ (107, 58) .. controls (107, 58) and (107, 58) ..
+ (107, 58) .. controls (107, 57) and (107, 56) ..
+ (107, 55) .. controls (107, 53) and (107, 53) ..
+ (107, 53) .. controls (107, 52) and (106, 51) ..
+ (106, 50) -- (105, 50) --
+ (105, 48) .. controls (105, 47) and (105, 46) ..
+ (105, 46) -- (105, 45) --
+ (104, 45) .. controls (104, 45) and (104, 45) ..
+ (103, 45) -- cycle;
+ \protect\end{scope}%
+ \protect\end{tikzpicture}}%
+ ~}
+
+
+\endinput
+
+
+%% end of file `moderncviconsmarvosym.sty'.
diff --git a/macros/latex/contrib/moderncv/moderncvstylebanking.sty b/macros/latex/contrib/moderncv/moderncvstylebanking.sty
new file mode 100644
index 0000000000..783f9606a4
--- /dev/null
+++ b/macros/latex/contrib/moderncv/moderncvstylebanking.sty
@@ -0,0 +1,65 @@
+%% start of file `moderncvstylebanking.sty'.
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncvstylebanking}[2015/07/28 v2.0.0 modern curriculum vitae and letter style scheme: banking]
+
+% body rules type options: "fullrules", "shortrules", "mixedrules" (default) or "norules"
+\@initializecommand{\moderncvstylebodyoptions}{}
+\DeclareOption{fullrules} {\edef\moderncvstylebodyoptions{\moderncvstylebodyoptions,fullrules}}
+\DeclareOption{shortrules} {\edef\moderncvstylebodyoptions{\moderncvstylebodyoptions,shortrules}}
+\DeclareOption{mixedrules} {\edef\moderncvstylebodyoptions{\moderncvstylebodyoptions,mixedrules}}
+\DeclareOption{norules} {\edef\moderncvstylebodyoptions{\moderncvstylebodyoptions,norules}}
+
+% body section alignment options: "left" (default), "center" or "right"
+\DeclareOption{left} {\edef\moderncvstylebodyoptions{\moderncvstylebodyoptions,left}}
+\DeclareOption{center} {\edef\moderncvstylebodyoptions{\moderncvstylebodyoptions,center}}
+\DeclareOption{right} {\edef\moderncvstylebodyoptions{\moderncvstylebodyoptions,right}}
+
+\DeclareOption*{}% avoid choking on unknown options
+\ExecuteOptions{mixedrules,left}
+\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
+
+
+%-------------------------------------------------------------------------------
+% fonts & icons
+%-------------------------------------------------------------------------------
+% TeX Gyre Pagella font
+%\ifxetexorluatex
+% \setmainfont{Tex-Gyre Pagella}
+% \setsansfont{Tex-Gyre Pagella}
+% \setmathfont{Tex-Gyre Pagella}
+% \setmathfont[range=\mathit,\mathsfit]{Tex-Gyre Pagella Italic}
+% \setmathfont[range=\mathbfup,\mathbfsfup]{Tex-Gyre Pagella Bold}
+% \setmathfont[range=\mathbfit,\mathbfsfit]{Tex-Gyre Pagella Bold Italic}
+%\else
+ \IfFileExists{tgpagella.sty}%
+ {%
+ \RequirePackage{tgpagella}%
+ \renewcommand*{\familydefault}{\rmdefault}}%
+ {}
+%\fi
+
+% symbols
+\moderncvicons{awesome}
+
+
+%-------------------------------------------------------------------------------
+% header, body & footer
+%-------------------------------------------------------------------------------
+\moderncvhead{3}
+\moderncvbody[\moderncvstylebodyoptions]{3}
+
+
+\endinput
+
+
+%% end of file `moderncvstylebanking.sty'.
diff --git a/macros/latex/contrib/moderncv/moderncvstylecasual.sty b/macros/latex/contrib/moderncv/moderncvstylecasual.sty
new file mode 100644
index 0000000000..b50886fe8f
--- /dev/null
+++ b/macros/latex/contrib/moderncv/moderncvstylecasual.sty
@@ -0,0 +1,53 @@
+%% start of file `moderncvstylecasual.sty'.
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncvstylecasual}[2015/07/28 v2.0.0 modern curriculum vitae and letter style scheme: casual]
+
+% head section alignment options: "left" (default) or "right"
+\@initializecommand{\moderncvstyleheadoptions}{}
+\DeclareOption{left} {\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,left}}
+\DeclareOption{right}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,right}}
+
+\DeclareOption*{}% avoid choking on unknown options
+\ExecuteOptions{right}
+\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
+
+%-------------------------------------------------------------------------------
+% fonts & icons
+%-------------------------------------------------------------------------------
+% Latin Modern fonts
+%\ifxetexorluatex
+% \setmainfont{Latin Modern Roman}
+% \setsansfont{Latin Modern Sans}
+% \setmathfont{Latin Modern Math}
+%\else
+ \IfFileExists{lmodern.sty}%
+ {\RequirePackage{lmodern}}%
+ {}
+%\fi
+
+% symbols
+\moderncvicons{awesome}
+
+
+%-------------------------------------------------------------------------------
+% header, body & footer
+%-------------------------------------------------------------------------------
+\moderncvhead[\moderncvstyleheadoptions]{2}
+\moderncvbody{1}
+\moderncvfoot{1}
+
+
+\endinput
+
+
+%% end of file `moderncvstylecasual.sty'.
diff --git a/macros/latex/contrib/moderncv/moderncvstyleclassic.sty b/macros/latex/contrib/moderncv/moderncvstyleclassic.sty
new file mode 100644
index 0000000000..6addabb2c2
--- /dev/null
+++ b/macros/latex/contrib/moderncv/moderncvstyleclassic.sty
@@ -0,0 +1,52 @@
+%% start of file `moderncvstyleclassic.sty'.
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncvstyleclassic}[2015/07/28 v2.0.0 modern curriculum vitae and letter style scheme: classic]
+
+% head section alignment options: "left" (default) or "right"
+\@initializecommand{\moderncvstyleheadoptions}{}
+\DeclareOption{left} {\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,left}}
+\DeclareOption{right}{\edef\moderncvstyleheadoptions{\moderncvstyleheadoptions,right}}
+
+\DeclareOption*{}% avoid choking on unknown options
+\ExecuteOptions{left}
+\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
+
+%-------------------------------------------------------------------------------
+% fonts & icons
+%-------------------------------------------------------------------------------
+% Latin Modern fonts
+%\ifxetexorluatex
+% \setmainfont{Latin Modern Roman}
+% \setsansfont{Latin Modern Sans}
+% \setmathfont{Latin Modern Math}
+%\else
+ \IfFileExists{lmodern.sty}%
+ {\RequirePackage{lmodern}}%
+ {}
+%\fi
+
+% symbols
+\moderncvicons{marvosym}
+
+
+%-------------------------------------------------------------------------------
+% header, body & footer
+%-------------------------------------------------------------------------------
+\moderncvhead[\moderncvstyleheadoptions]{1}
+\moderncvbody{1}
+
+
+\endinput
+
+
+%% end of file `moderncvstyleclassic.sty'.
diff --git a/macros/latex/contrib/moderncv/moderncvstyleempty.sty b/macros/latex/contrib/moderncv/moderncvstyleempty.sty
new file mode 100644
index 0000000000..815a4d754f
--- /dev/null
+++ b/macros/latex/contrib/moderncv/moderncvstyleempty.sty
@@ -0,0 +1,34 @@
+%% start of file `moderncvstyleempty.sty'.
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncvstyleempty}[2015/07/28 v2.0.0 modern curriculum vitae scheme: empty]
+
+
+%-------------------------------------------------------------------------------
+% required packages
+%-------------------------------------------------------------------------------
+
+
+%-------------------------------------------------------------------------------
+% package options
+%-------------------------------------------------------------------------------
+
+
+%-------------------------------------------------------------------------------
+% style definition
+%-------------------------------------------------------------------------------
+% see moderncv.cls for command declarations that needs to be implemented, e.g. \maketitle, \section, \subsections, \cvline, etc
+
+\endinput
+
+
+%% end of file `moderncvstyleempty.sty'.
diff --git a/macros/latex/contrib/moderncv/moderncvstylefancy.sty b/macros/latex/contrib/moderncv/moderncvstylefancy.sty
new file mode 100644
index 0000000000..b44f378326
--- /dev/null
+++ b/macros/latex/contrib/moderncv/moderncvstylefancy.sty
@@ -0,0 +1,47 @@
+%% start of file `moderncvstylefancy.sty'.
+%% Copyright 2015-2015 Xavier Danaux (xdanaux@gmail.com).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncvstylefancy}[2015/07/28 v2.0.0 modern curriculum vitae and letter style scheme: fancy]
+
+\DeclareOption*{}% avoid choking on unknown options
+\ExecuteOptions{}
+\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
+
+%-------------------------------------------------------------------------------
+% fonts & icons
+%-------------------------------------------------------------------------------
+% EB Garamond font
+%\ifxetexorluatex
+% \setmainfont{EB Garamond}
+% \setsansfont{EB Garamond}
+% \setmathfont{EB Garamond}
+%\else
+ \IfFileExists{ebgaramond.sty}%
+ {\RequirePackage{ebgaramond}}%
+ {}
+%\fi
+
+% symbols
+\moderncvicons{awesome}
+
+
+%-------------------------------------------------------------------------------
+% header, body & footer
+%-------------------------------------------------------------------------------
+\moderncvhead{5}
+\moderncvbody{5}
+
+
+\endinput
+
+
+%% end of file `moderncvstylefancy.sty'.
diff --git a/macros/latex/contrib/moderncv/moderncvstyleoldstyle.sty b/macros/latex/contrib/moderncv/moderncvstyleoldstyle.sty
new file mode 100644
index 0000000000..9046fda54b
--- /dev/null
+++ b/macros/latex/contrib/moderncv/moderncvstyleoldstyle.sty
@@ -0,0 +1,51 @@
+%% start of file `moderncvstyleoldstyle.sty'.
+%% Copyright 2006-2015 Xavier Danaux (xdanaux@gmail.com).
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+%-------------------------------------------------------------------------------
+% identification
+%-------------------------------------------------------------------------------
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{moderncvstyleoldstyle}[2015/07/28 v2.0.0 modern curriculum vitae and letter style scheme: oldstyle]
+
+\DeclareOption*{}% avoid choking on unknown options
+\ExecuteOptions{}
+\ProcessOptions*\relax% \ProcessOptions* processes the options in the order provided (i.e., with the later ones possibly overriding the former ones), while \ProcessOptions processes them in the order of the package
+
+
+%-------------------------------------------------------------------------------
+% fonts & icons
+%-------------------------------------------------------------------------------
+% Kurier font
+%\ifxetexorluatex
+% \setmainfont[Numbers={OldStyle,Proportional}, BoldFont={Kurier Bold}, ItalicFont={Kurier Light Italic}, BoldItalicFont={Kurier Bold Italic}]{Kurier Light}
+% \setsansfont[Numbers={OldStyle,Proportional}, BoldFont={Kurier Bold}, ItalicFont={Kurier Light Italic}, BoldItalicFont={Kurier Bold Italic}]{Kurier Light}
+% \setmathfont{Kurier Light}
+% \setmathfont[range=\mathit,\mathsfit]{Kurier Light Italic}
+% \setmathfont[range=\mathbfup,\mathbfsfup]{Kurier Bold}
+% \setmathfont[range=\mathbfit,\mathbfsfit]{Kurier Bold Italic}
+%\else
+ \IfFileExists{kurier.sty}%
+ {\RequirePackage[light,math]{kurier}}%
+ {}
+%\fi
+
+% symbols
+\moderncvicons{letters}
+
+
+%-------------------------------------------------------------------------------
+% header, body & footer
+%-------------------------------------------------------------------------------
+\moderncvhead{4}
+\moderncvbody{4}
+
+
+\endinput
+
+
+%% end of file `moderncvstyleoldstyle.sty'.
diff --git a/macros/latex/contrib/moderncv/tweaklist.sty b/macros/latex/contrib/moderncv/tweaklist.sty
new file mode 100644
index 0000000000..adc9398932
--- /dev/null
+++ b/macros/latex/contrib/moderncv/tweaklist.sty
@@ -0,0 +1,56 @@
+%% start of file `tweaklist.sty'.
+%% Original by Jakob Schiøtz, downloaded from http://dcwww.camd.dtu.dk/~schiotz/comp/LatexTips/tweaklist.sty; not found on ctan.
+%% Modified by Xavier Danaux (xdanaux@gmail.com).
+%
+% The tweaklist.sty package redefines the itemize, enumerate and description packages, so that all parameters can be adjusted.
+% This was done by copying the original definitions, and adding "hook commands" that are executed when entering the environment.
+% The hook commands are initially empty, but can be redefined with \renewcommand.
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License version 1.3c,
+% available at http://www.latex-project.org/lppl/.
+
+
+% hooks for the itemize environment
+\def\itemhook{}
+\def\itemhooki{}
+\def\itemhookii{}
+\def\itemhookiii{}
+\def\itemhookiv{}
+% hooks for the enumerate environment
+\def\enumhook{}
+\def\enumhooki{}
+\def\enumhookii{}
+\def\enumhookiii{}
+\def\enumhookiv{}
+% hook for the description environment
+\def\deschook{}
+% original environment definitions, with hooks added
+\def\enumerate{%
+ \ifnum \@enumdepth >\thr@@\@toodeep\else
+ \advance\@enumdepth\@ne
+ \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
+ \expandafter
+ \list
+ \csname label\@enumctr\endcsname
+ {%
+ \enumhook \csname enumhook\romannumeral\the\@enumdepth\endcsname%
+ \usecounter\@enumctr\def\makelabel##1{\hss\llap{##1}}%
+ }%
+ \fi}
+\def\itemize{%
+ \ifnum \@itemdepth >\thr@@\@toodeep\else
+ \advance\@itemdepth\@ne
+ \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
+ \expandafter
+ \list
+ \csname\@itemitem\endcsname
+ {%
+ \itemhook \csname itemhook\romannumeral\the\@itemdepth\endcsname%
+ \def\makelabel##1{\hss\llap{##1}}%
+ }%
+ \fi}
+\newenvironment{description}
+ {\list{}{\deschook\labelwidth\z@ \itemindent-\leftmargin
+ \let\makelabel\descriptionlabel}}
+ {\endlist}