                              Fontconfig
             Font configuration and customization library
                            Version 2.13.1
                              2018-08-30


Check INSTALL for compilation and installation instructions.
Report bugs to https://gitlab.freedesktop.org/fontconfig/fontconfig/issues/new.

2.13.1

Akira TAGOH (48):
      Use the builtin uuid for OSX
      Fix the build issue again on MinGW with enabling nls
      Add uuid to Requires.private in .pc only when pkgconfig macro found it
      Allow the constant names in the range
      Do not override locale if already set by app
      Add the value of the constant name to the implicit object in the pattern
      Add a testcase for FcNameParse
      Leave the locale setting to applications
      call setlocale
      Fix make check fail when srcdir != builddir.
      Do not ship fcobjshash.h
      Fix typo in doc
      Change the emboldening logic again
      Bug 43367 - RFE: iterator to peek objects in FcPattern
      Add a testrunner for conf
      Add a test case for 90-synthetic.conf
      Bug 106497 - better error description when problem reading font configuration
      Bug 106459 - fc-cache doesn't use -y option for .uuid files
      Fix leaks
      Fix -Wstringop-truncation warning
      Fix double-free
      Add a test case for bz#106618
      Update CaseFolding.txt to Unicode 11
      Remove .uuid when no font files exists on a directory
      Fix the leak of file handle
      Fix memory leak
      Fix memory leaks
      Fix memory leak
      Fix memory leak
      Fix memory leak
      Fix unterminated string issue
      Fix array access in a null pointer dereference
      Fix access in a null pointer dereference
      do not pass null pointer to memcpy
      Fix dereferencing null pointer
      Fix a typo
      Fix possibly dereferencing a null pointer
      Fix allocating insufficient memory for terminating null of the string
      Make a call fail on ENOMEM
      Allocate sufficient memory to terminate with null
      Drop the redundant code
      Fix memory leak
      Fix the build issue with gperf
      Fix missing closing bracket in FcStrIsAbsoluteFilename()
      Update the issue tracker URL
      Fix distcheck fail
      Add .gitlab-ci.yml
      Bump the libtool revision

Alexander Larsson (3):
      Add FcCacheAllocate() helper
      Cache: Rewrite relocated paths in earlier
      Cache: Remove alias_table

Behdad Esfahbod (4):
      Minor: fix warnings
      Fix name scanning
      Share name-mapping across instances
      Use FT_HAS_COLOR

Chris Lamb (1):
      Ensure cache checksums are deterministic

Matthieu Herrb (1):
      FcCacheFindByStat(): fix checking of nanoseconds field.

Tom Anderson (7):
      Fix undefined-shift UBSAN errors
      Use realfilename for FcOpen in _FcConfigParse
      Add FONTCONFIG_SYSROOT environment variable
      Fix CFI builds
      Fix heap use-after-free
      Return canonicalized paths from FcConfigRealFilename
      Fix build with CFLAGS="-std=c11 -D_GNU_SOURCE"

2.13

Akira TAGOH (4):
      Add Simplified Chinese translations
      Fix a build issue on MinGW with enabling nls
      Initialize an array explicitly
      Bump the libtool revision

2.12.93 (2.13 RC3)

Akira TAGOH (12):
      trivial fix
      Add files to enable ITS support in gettext
      Use the native ITS support in gettext
      Remove POTFILES.in until new release of gettext is coming...
      export GETTEXTDATADIR to refer the local .its/.loc file instead of using --its option
      clean up
      Do not add cflags and libs coming from pkg-config file.
      Revert some removal from 7ac6af6
      Take effects on dir, cachedir, acceptfont, and rejectfont only when loading
      Do not mix up font dirs into the list of config dirs
      Ensure the user config dir is available in the list of config dirs on the fallback config
      Add missing files to ship

Alexander Larsson (1):
      FcHashTableAddInternal: Compare against the right key

Behdad Esfahbod (5):
      Remove hack for OS/2 weights 1..9
      Support FC_WIDTH as double as well
      Fix leak
      Use FT_Done_MM_Var if available
      Fix undefined-behavior signed shifts

Olivier Crête (1):
      Fix cross-compilation by passing CPPFLAGS to CPP

Tom Anderson (1):
      Allow overriding symbol visibility.

2.12.92 (2.13 RC2)

Akira TAGOH (13):
      cleanup files
      Update .uuid only when -r is given but not -f.
      Returns false if key is already available in the table
      Add missing doc of FcDirCacheCreateUUID
      Replace uuid in the table properly when -r
      Add a test case for uuid creation
      Do not update mtime with creating .uuid
      Disable uuid related code on Win32
      Try to get current instance of FcConfig as far as possible
      do not check the existence of itstool on win32
      Fix the mis-ordering of ruleset evaluation in a file with include element
      Fix compiler warnings
      Add FcReadLink to wrap up readlink impl.

Alexander Larsson (1):
      fchash: Fix replace

Behdad Esfahbod (7):
      Don't crash
      Remove a debug abort()
      Minor
      Set font-variations settings for standard axes in variable fonts
      Let pattern FC_FONT_VARIATIONS override standard axis variations
      Put back accidentally removed code
      Add FcWeightTo/FromOpenTypeDouble()

2.12.91 (2.13 RC1)

Akira TAGOH (37):
      und_zsye.orth: polish to get for NotoEmoji-Regular.ttf
      Revert "Keep the same behavior to the return value of FcConfigParseAndLoad"
      Fix again to keep the same behavior to the return value of FcConfigParseAndLoad
      cleanup
      Fix a compiler warning
      Update libtool revision
      Bump version to 2.12.6
      doc: trivial update
      Add the ruleset description support
      workaround to avoid modifying by gettextize
      missing an open parenthesis
      another workaround to avoid modifying by gettextize...
      Validate cache more carefully
      Allow autoreconf through autopoint for gettext things
      Correct debugging messages to load/scan config
      Add the check of PCF_CONFIG_OPTION_LONG_FAMILY_NAMES back
      Use uuid-based cache filename if uuid is assigned to dirs
      Add new API to find out a font from current search path
      Replace the font path in FcPattern to what it is actually located.
      Replace the original path to the new one
      Replace the path of subdirs in caches as well
      Don't call FcStat when the alias has already been added
      Destroy the alias and UUID tables when all of caches is unloaded
      cleanup
      abstract hash table functions
      update
      Fix memory leak
      Fix a typo
      Don't call FcStat when the alias has already been added
      Add a testcase for bind-mounted cachedir
      cleanup
      Use smaller prime for hash size
      Fix the testcase for env not enabled PCF_CONFIG_OPTION_LONG_FAMILY_NAMES in freetype
      thread-safe functions in fchash.c
      Fix distcheck error
      Fix "make check" fail again
      Bump the libtool revision

Alban Browaeys (1):
      Fixes cleanup

Alexander Kanavin (1):
      src/fcxml.c: avoid double free() of filename

Bastien Nocera (1):
      conf: Prefer system emoji fonts to third-party ones

Behdad Esfahbod (76):
      Minor
      Remove stray printf()
      [fc-query] Fix linking order
      Instead of loading glyphs (with FreeType), just check loca table
      Don't even check loca for glyph outline detection
      Check for non-empty outline for U+0000..U+001F
      Add back code for choosing strike, and cleanup
      Minor: adjust debug output
      Remove unnecessary check
      Remove a few unused blanks parameters
      Remove check that cannot fail
      Remove use of psnames for charset construction
      Remove unused variable
      Remove fc-glyphname
      Remove blanks facility from the library
      Remove blanks support from fc-scan
      Mark more parameters FC_UNUSED
      Move variables to narrower scope and indent
      Remove unneeded check
      Use multiplication instead of division
      Use inline functions instead of macros for a couple of things
      Simplify advance-width calculations
      Inline FcFreeTypeCheckGlyph()
      Call FT_Get_Advance() only as long as we need to determine font width type
      Minor
      Update documentation for removal of blanks
      Merge branch 'faster'
      Add FcFreeTypeQueryAll()
      Document FcFreeTypeQueryAll()
      Accept NULL in for spacing in FcFreeTypeCharSetAndSpacing()
      Remove FcCompareSize()
      Rename FcCompareSizeRange() to FcCompareRange()
      Rewrite FcCompareRange()
      In FcSubstituteDefault(), handle size range
      Check instance-index before accessing array
      Indent
      [varfonts] Add FC_FONT_VARIATIONS
      [varfonts] Add FC_VARIABLE
      [varfonts] Change id argument in FcFreeTypeQuery* to unsigned int
      Print ranges as closed as opposed to half-open
      [varfonts] Change FC_WEIGHT and FC_WIDTH into ranges
      [varfonts] Query varfonts if id >> 16 == 0x8000
      Fix instance-num handling in collections
      [varfonts] Query variable font in FcFreeTypeQueryAll()
      [varfonts] Fetch optical-size for named instances
      In RenderPrepare(), handle ranges smartly
      [fc-query] Remove --ignore-blanks / -b
      [fc-match/fc-list/fc-query/fc-scan] Add --brief that is like --verbose without charset
      Add separate match compare function for size
      Fix range comparision operators implementation
      Adjust emboldening logic
      [varfonts] Map from OpenType to Fontconfig weight values
      Add FcDontCare value to FcBool
      Implement more config bool operations for boolean types
      Fix possible div-by-zero
      [varfonts] Use fvar data even if there's no variation in it
      Minor
      Revert "[varfonts] Use fvar data even if there's no variation in it"
      [varfonts] Minor
      [varfonts] Comment
      [varfonts] Don't set style for variable-font pattern
      [varfonts] Skip named-instance that is equivalent to base font
      [varfonts] Do not set postscriptname for varfont pattern
      [varfonts] Don't reopen face for each named instance
      Separate charset and spacing code
      [varfonts] Reuse charset for named instances
      Move whitespace-trimming code to apply to all name-table strings
      Fix whitespace-trimming loop and empty strings...
      Whitespace
      Don't convert nameds to UTF-8 unless we are going to use them
      Simplify name-table platform mathcing logic
      Use binary-search for finding name table entries
      [varfonts] Share lang across named-instances
      Merge branch 'varfonts2'
      Require freetype >= 2.8.1
      Remove assert

David Kaspar [Dee'Kej] (1):
      conf.d: Drop aliases for (URW)++ fonts

Florian Müllner (1):
      build: Remove references to deleted file

2.12.6

Akira TAGOH (4):
      und_zsye.orth: polish to get for NotoEmoji-Regular.ttf
      Revert "Keep the same behavior to the return value of FcConfigParseAndLoad"
      Fix again to keep the same behavior to the return value of FcConfigParseAndLoad
      Update libtool revision

Behdad Esfahbod (2):
      Minor
      [fc-query] Fix linking order

David Kaspar [Dee'Kej] (1):
      conf.d: Drop aliases for (URW)++ fonts

Florian Müllner (1):
      build: Remove references to deleted file

2.12.5

Akira TAGOH (17):
      Add FcPatternGetWithBinding() to obtain the binding type of the value in FcPattern.
      Add FcConfigParseAndLoadFromMemory() to load a configuration from memory.
      Bug 101726 - Sans config pulls in Microsoft Serifed font
      Fix gcc warnings with enabling libxml2
      Add und-zsye.orth to support emoji in lang
      Add more code points to und-zsye.orth
      Keep the same behavior to the return value of FcConfigParseAndLoad
      Do not ship fcobjshash.gperf in archive
      Accept 4 digit script tag in FcLangNormalize().
      Fix to work the debugging option on fc-validate
      Add und_zmth.orth to support Math in lang
      Polish und_zmth.orth for Libertinus Math
      Polish und_zmth.orth more for Cambria Math and Minion Math
      Update similar to emoji's
      fc-blanks: fall back to the static data available in repo if downloaded data is corrupted
      Update docs
      Update libtool versioning

Behdad Esfahbod (14):
      Pass --pic to gperf
      Add generic family matching for "emoji" and "math"
      [fc-query] Support listing named instances
      Add Twitter Color Emoji
      Add EmojiOne Mozilla font
      [fc-lang] Allow using ".." instead of "-" in ranges
      Minor
      Remove unneeded codepoints
      Adjust color emoji config some more
      Ignore 'und-' prefix for in FcLangCompare
      Minor
      Fix sign-difference compare warning
      Fix warning
      Fix weight mapping

2.12.4

Akira TAGOH (5):
      Force regenerate fcobjshash.h when updating Makefile
      Fix the build failure when srcdir != builddir and have gperf 3.1 or later installed
      Add a testcase for Bug#131804
      Update libtool revision
      Fix distcheck error

Florent Rougon (6):
      FcCharSetHash(): use the 'numbers' values to compute the hash
      fc-lang: gracefully handle the case where the last language initial is < 'z'
      Fix an off-by-one error in FcLangSetIndex()
      Fix erroneous test on language id in FcLangSetPromote()
      FcLangSetCompare(): fix bug when two charsets come from different "buckets"
      FcCharSetFreezeOrig(), FcCharSetFindFrozen(): use all buckets of freezer->orig_hash_table

Helmut Grohne (1):
      fix cross compilation

Jan Alexander Steffens (heftig) (1):
      Fix testing PCF_CONFIG_OPTION_LONG_FAMILY_NAMES (CFLAGS need to be right)

Josselin Mouette (1):
      Treat C.UTF-8 and C.utf8 locales as built in the C library.

Masamichi Hosoda (1):
      Bug 99360 - Fix cache file update on MinGW

2.12.3

Akira TAGOH (1):
      Fix make check fail with freetype-2.7.1 and 2.8 with PCF_CONFIG_OPTION_LONG_FAMILY_NAMES enabled.

2.12.2

Akira TAGOH (8):
      Don't call perror() if no changes happens in errno
      Fix FcCacheOffsetsValid()
      Fix the build issue with gperf 3.1
      Fix the build issue on GNU/Hurd
      Update a bit for the changes in FreeType 2.7.1
      Add the description of FC_LANG envvar to the doc
      Bug 101202 - fontconfig FTBFS if docbook-utils is installed
      Update libtool revision

Alan Coopersmith (1):
      Correct cache version info in doc/fontconfig-user.sgml

Khem Raj (1):
      Avoid conflicts with integer width macros from TS 18661-1:2014

Masamichi Hosoda (2):
      Fix PostScript font alias name
      Update aliases for URW June 2016

2.12.1

Akira TAGOH (6):
      Add --with-default-hinting to configure
      Update CaseFolding.txt to Unicode 9.0
      Check python installed in autogen.sh
      Fix some errors related to python3
      Bug 96676 - Check range of FcWeightFromOpenType argument
      Update libtool revision

Tobias Stoeckmann (1):
      Properly validate offsets in cache files.

2.12

Akira TAGOH (8):
      Modernize fc-blanks.py
      Update URL
      Bug 95477 - FcAtomicLock fails when SELinux denies link() syscall with EACCES
      45-latin.conf: Add some Windows fonts to categorize them properly
      Correct one for the previous change
      Bug 95481 - Build fails on Android due to broken lconv struct
      Add the static raw data to generate fcblanks.h
      Remove unused code

Erik de Castro Lopo (1):
      Fix a couple of minor memory leaks

Petr Filipsky (1):
      Fix memory leak in FcDirCacheLock

2.11.95 (2.12 RC5)

Akira TAGOH (22):
      Add one more debugging option to see transformation on font-matching
      Fix a crash when no objects are available after filtering
      No need to be public
      mark as private at this moment
      Don't return FcFalse even when no fonts dirs is configured
      Add a warning for blank in fonts.conf
      Fix a memory leak in FcFreeTypeQueryFace
      Update CaseFolding.txt to Unicode 8.0
      Bug 90867 - Memory Leak during error case in fccharset
      Fix the broken cache more.
      Fail on make runtime as needed instead of configure if no python installed
      Use long long to see the same size between LP64 and LLP64
      Fix build issue on MinGW
      Use int64_t instead of long long
      Fix compiler warnings on MinGW
      Fix assertion on 32bit arch
      remomve unnecessary code
      Bug 93075 - Possible fix for make check failure on msys/MinGW...
      Avoid an error message on testing when no fonts.conf installed
      Add hintstyle templates and make hintslight default
      Revert "Workaround another race condition issue"
      Update libtool revision

Behdad Esfahbod (6):
      Revert changes made to FcConfigAppFontAddDir() recently
      Call FcFreeTypeQueryFace() from fcdir.c, instead of FcFreeTypeQuery()
      [GX] Support instance weight, width, and style name
      [GX] Enumerate all named-instances in TrueType GX fonts
      Improve OpenType to Fontconfig weight mapping
      [GX] Improve weight mapping

Patrick Haller (1):
      Optimizations in FcStrSet
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 