-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Gio bindings
--   
--   Bindings for Gio, autogenerated by haskell-gi.
@package gi-gio
@version 2.0.38


-- | Build time configuration used during code generation.
module GI.Gio.Config

-- | Overrides used when generating these bindings.
overrides :: Text

-- | Modules in this package
modules :: [Text]


module GI.Gio.Constants

-- | Extension point for volume monitor functionality. See <a>Extending
--   GIO</a>.
pattern VOLUME_MONITOR_EXTENSION_POINT_NAME :: Text

-- | The string used to obtain a UUID with <a>volumeGetIdentifier</a>.
pattern VOLUME_IDENTIFIER_KIND_UUID :: Text

-- | The string used to obtain a Unix device path with
--   <a>volumeGetIdentifier</a>.
pattern VOLUME_IDENTIFIER_KIND_UNIX_DEVICE :: Text

-- | The string used to obtain a NFS mount with <a>volumeGetIdentifier</a>.
pattern VOLUME_IDENTIFIER_KIND_NFS_MOUNT :: Text

-- | The string used to obtain a filesystem label with
--   <a>volumeGetIdentifier</a>.
pattern VOLUME_IDENTIFIER_KIND_LABEL :: Text

-- | The string used to obtain a Hal UDI with <a>volumeGetIdentifier</a>.

-- | <i>Deprecated: (Since version 2.58)Do not use, HAL is deprecated.</i>
pattern VOLUME_IDENTIFIER_KIND_HAL_UDI :: Text

-- | The string used to obtain the volume class with
--   <a>volumeGetIdentifier</a>.
--   
--   Known volume classes include <tt>device</tt>, <tt>network</tt>, and
--   <tt>loop</tt>. Other classes may be added in the future.
--   
--   This is intended to be used by applications to classify <a>Volume</a>
--   instances into different sections - for example a file manager or file
--   chooser can use this information to show <tt>network</tt> volumes
--   under a "Network" heading and <tt>device</tt> volumes under a
--   "Devices" heading.
pattern VOLUME_IDENTIFIER_KIND_CLASS :: Text

-- | Extension point for <a>Vfs</a> functionality. See <a>Extending
--   GIO</a>.
pattern VFS_EXTENSION_POINT_NAME :: Text

-- | The purpose used to verify the server certificate in a TLS connection.
--   This is the most common purpose in use. Used by TLS clients.
pattern TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER :: Text

-- | The purpose used to verify the client certificate in a TLS connection.
--   Used by TLS servers.
pattern TLS_DATABASE_PURPOSE_AUTHENTICATE_CLIENT :: Text

-- | Extension point for TLS functionality via <a>TlsBackend</a>. See
--   <a>Extending GIO</a>.
pattern TLS_BACKEND_EXTENSION_POINT_NAME :: Text

-- | Extension point for <a>SettingsBackend</a> functionality.
pattern SETTINGS_BACKEND_EXTENSION_POINT_NAME :: Text

-- | Extension point for proxy resolving functionality. See <a>Extending
--   GIO</a>.
pattern PROXY_RESOLVER_EXTENSION_POINT_NAME :: Text

-- | Extension point for proxy functionality. See <a>Extending GIO</a>.
--   
--   <i>Since: 2.26</i>
pattern PROXY_EXTENSION_POINT_NAME :: Text

-- | Extension point for power profile usage monitoring functionality. See
--   <a>Extending GIO</a>.
--   
--   <i>Since: 2.70</i>
pattern POWER_PROFILE_MONITOR_EXTENSION_POINT_NAME :: Text

-- | Extension point for network status monitoring functionality. See
--   <a>Extending GIO</a>.
--   
--   <i>Since: 2.30</i>
pattern NETWORK_MONITOR_EXTENSION_POINT_NAME :: Text

-- | <i>No description available in the introspection data.</i>
pattern NATIVE_VOLUME_MONITOR_EXTENSION_POINT_NAME :: Text

-- | The name of the link that associates a menu item with a submenu.
--   
--   See also <a>menuItemSetLink</a>.
--   
--   <i>Since: 2.32</i>
pattern MENU_LINK_SUBMENU :: Text

-- | The name of the link that associates a menu item with a section. The
--   linked menu will usually be shown in place of the menu item, using the
--   item's label as a header.
--   
--   See also <a>menuItemSetLink</a>.
--   
--   <i>Since: 2.32</i>
pattern MENU_LINK_SECTION :: Text

-- | The maximum number of entries in a menu section supported by
--   <a>dBusConnectionExportMenuModel</a>.
--   
--   The exact value of the limit may change in future GLib versions.
--   
--   <i>Since: 2.76</i>
pattern MENU_EXPORTER_MAX_SECTION_SIZE :: Int32

-- | The menu item attribute which holds the target with which the item's
--   action will be activated.
--   
--   See also <tt><i>g_menu_item_set_action_and_target()</i></tt>
--   
--   <i>Since: 2.32</i>
pattern MENU_ATTRIBUTE_TARGET :: Text

-- | The menu item attribute which holds the label of the item.
--   
--   <i>Since: 2.32</i>
pattern MENU_ATTRIBUTE_LABEL :: Text

-- | The menu item attribute which holds the icon of the item.
--   
--   The icon is stored in the format returned by <a>iconSerialize</a>.
--   
--   This attribute is intended only to represent 'noun' icons such as
--   favicons for a webpage, or application icons. It should not be used
--   for 'verbs' (ie: stock icons).
--   
--   <i>Since: 2.38</i>
pattern MENU_ATTRIBUTE_ICON :: Text

-- | The menu item attribute that holds the namespace for all action names
--   in menus that are linked from this item.
--   
--   <i>Since: 2.36</i>
pattern MENU_ATTRIBUTE_ACTION_NAMESPACE :: Text

-- | The menu item attribute which holds the action name of the item.
--   Action names are namespaced with an identifier for the action group in
--   which the action resides. For example, "win." for window-specific
--   actions and "app." for application-wide actions.
--   
--   See also <tt><i>g_menu_model_get_item_attribute()</i></tt> and
--   <tt><i>g_menu_item_set_attribute()</i></tt>.
--   
--   <i>Since: 2.32</i>
pattern MENU_ATTRIBUTE_ACTION :: Text

-- | Extension point for memory usage monitoring functionality. See
--   <a>Extending GIO</a>.
--   
--   <i>Since: 2.64</i>
pattern MEMORY_MONITOR_EXTENSION_POINT_NAME :: Text

-- | A key in the "unix" namespace for getting the user ID for the file.
--   
--   This attribute is only available for UNIX file systems.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeUint32</a>.
pattern FILE_ATTRIBUTE_UNIX_UID :: Text

-- | A key in the "unix" namespace for getting the device ID for the file
--   (if it is a special file).
--   
--   See the documentation for <tt>lstat()</tt>.
--   
--   This attribute is only available for UNIX file systems.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeUint32</a>.
pattern FILE_ATTRIBUTE_UNIX_RDEV :: Text

-- | A key in the "unix" namespace for getting the number of hard links for
--   a file.
--   
--   See the documentation for <tt>lstat()</tt>.
--   
--   This attribute is only available for UNIX file systems.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeUint32</a>.
pattern FILE_ATTRIBUTE_UNIX_NLINK :: Text

-- | A key in the "unix" namespace for getting the mode of the file (e.g.
--   whether the file is a regular file, symlink, etc).
--   
--   See the documentation for <tt>lstat()</tt>: this attribute is
--   equivalent to the <tt>st_mode</tt> member of <tt>struct stat</tt>, and
--   includes both the file type and permissions.
--   
--   This attribute is only available for UNIX file systems.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeUint32</a>.
pattern FILE_ATTRIBUTE_UNIX_MODE :: Text

-- | A key in the "unix" namespace for checking if the file represents a
--   UNIX mount point.
--   
--   This attribute is <a>True</a> if the file is a UNIX mount point.
--   
--   Since 2.58, <tt>/</tt> is considered to be a mount point.
--   
--   This attribute is only available for UNIX file systems.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeBoolean</a>.
pattern FILE_ATTRIBUTE_UNIX_IS_MOUNTPOINT :: Text

-- | A key in the "unix" namespace for getting the inode of the file.
--   
--   This attribute is only available for UNIX file systems.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeUint64</a>.
pattern FILE_ATTRIBUTE_UNIX_INODE :: Text

-- | A key in the "unix" namespace for getting the group ID for the file.
--   
--   This attribute is only available for UNIX file systems.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeUint32</a>.
pattern FILE_ATTRIBUTE_UNIX_GID :: Text

-- | A key in the "unix" namespace for getting the device id of the device
--   the file is located on (see <tt><i>stat()</i></tt> documentation).
--   
--   This attribute is only available for UNIX file systems.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeUint32</a>.
pattern FILE_ATTRIBUTE_UNIX_DEVICE :: Text

-- | A key in the "unix" namespace for getting the block size for the file
--   system.
--   
--   This attribute is only available for UNIX file systems.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeUint32</a>.
pattern FILE_ATTRIBUTE_UNIX_BLOCK_SIZE :: Text

-- | A key in the "unix" namespace for getting the number of blocks
--   allocated for the file.
--   
--   This attribute is only available for UNIX file systems.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeUint64</a>.
pattern FILE_ATTRIBUTE_UNIX_BLOCKS :: Text

-- | A key in the "trash" namespace for getting the original path of a file
--   inside the <tt>trash:///</tt> folder before it was trashed.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeByteString</a>.
--   
--   <i>Since: 2.24</i>
pattern FILE_ATTRIBUTE_TRASH_ORIG_PATH :: Text

-- | A key in the "trash" namespace for getting the number of (toplevel)
--   items that are present in the <tt>trash:///</tt> folder.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeUint32</a>.
pattern FILE_ATTRIBUTE_TRASH_ITEM_COUNT :: Text

-- | A key in the "trash" namespace for getting the deletion date and time
--   of a file inside the <tt>trash:///</tt> folder.
--   
--   The format of the returned string is <tt>YYYY-MM-DDThh:mm:ss</tt>.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeString</a>.
--   
--   <i>Since: 2.24</i>
pattern FILE_ATTRIBUTE_TRASH_DELETION_DATE :: Text

-- | A key in the "time" namespace for getting the microseconds of the time
--   the file was last modified.
--   
--   This should be used in conjunction with
--   <a>FILE_ATTRIBUTE_TIME_MODIFIED</a>.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeUint32</a>.
pattern FILE_ATTRIBUTE_TIME_MODIFIED_USEC :: Text

-- | A key in the "time" namespace for getting the nanoseconds of the time
--   the file was last modified. This should be used in conjunction with
--   <a>FILE_ATTRIBUTE_TIME_MODIFIED</a>. Corresponding
--   <a>FileAttributeType</a> is <a>FileAttributeTypeUint32</a>.
--   
--   <i>Since: 2.74</i>
pattern FILE_ATTRIBUTE_TIME_MODIFIED_NSEC :: Text

-- | A key in the "time" namespace for getting the time the file was last
--   modified.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeUint64</a>, and contains the time since the file
--   was modified, in seconds since the UNIX epoch.
pattern FILE_ATTRIBUTE_TIME_MODIFIED :: Text

-- | A key in the "time" namespace for getting the microseconds of the time
--   the file was created.
--   
--   This should be used in conjunction with
--   <a>FILE_ATTRIBUTE_TIME_CREATED</a>.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeUint32</a>.
pattern FILE_ATTRIBUTE_TIME_CREATED_USEC :: Text

-- | A key in the "time" namespace for getting the nanoseconds of the time
--   the file was created. This should be used in conjunction with
--   <a>FILE_ATTRIBUTE_TIME_CREATED</a>. Corresponding
--   <a>FileAttributeType</a> is <a>FileAttributeTypeUint32</a>.
--   
--   <i>Since: 2.74</i>
pattern FILE_ATTRIBUTE_TIME_CREATED_NSEC :: Text

-- | A key in the "time" namespace for getting the time the file was
--   created.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeUint64</a>, and contains the time since the file
--   was created, in seconds since the UNIX epoch.
--   
--   This may correspond to Linux <tt>stx_btime</tt>, FreeBSD
--   <tt>st_birthtim</tt>, NetBSD <tt>st_birthtime</tt> or NTFS
--   <tt>ctime</tt>.
pattern FILE_ATTRIBUTE_TIME_CREATED :: Text

-- | A key in the "time" namespace for getting the microseconds of the time
--   the file was last changed.
--   
--   This should be used in conjunction with
--   <a>FILE_ATTRIBUTE_TIME_CHANGED</a>.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeUint32</a>.
pattern FILE_ATTRIBUTE_TIME_CHANGED_USEC :: Text

-- | A key in the "time" namespace for getting the nanoseconds of the time
--   the file was last changed. This should be used in conjunction with
--   <a>FILE_ATTRIBUTE_TIME_CHANGED</a>. Corresponding
--   <a>FileAttributeType</a> is <a>FileAttributeTypeUint32</a>.
--   
--   <i>Since: 2.74</i>
pattern FILE_ATTRIBUTE_TIME_CHANGED_NSEC :: Text

-- | A key in the "time" namespace for getting the time the file was last
--   changed.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeUint64</a>, and contains the time since the file
--   was last changed, in seconds since the UNIX epoch.
--   
--   This corresponds to the traditional UNIX ctime.
pattern FILE_ATTRIBUTE_TIME_CHANGED :: Text

-- | A key in the "time" namespace for getting the microseconds of the time
--   the file was last accessed.
--   
--   This should be used in conjunction with
--   <a>FILE_ATTRIBUTE_TIME_ACCESS</a>.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeUint32</a>.
pattern FILE_ATTRIBUTE_TIME_ACCESS_USEC :: Text

-- | A key in the "time" namespace for getting the nanoseconds of the time
--   the file was last accessed. This should be used in conjunction with
--   <a>FILE_ATTRIBUTE_TIME_ACCESS</a>. Corresponding
--   <a>FileAttributeType</a> is <a>FileAttributeTypeUint32</a>.
--   
--   <i>Since: 2.74</i>
pattern FILE_ATTRIBUTE_TIME_ACCESS_NSEC :: Text

-- | A key in the "time" namespace for getting the time the file was last
--   accessed.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeUint64</a>, and contains the time since the file
--   was last accessed, in seconds since the UNIX epoch.
pattern FILE_ATTRIBUTE_TIME_ACCESS :: Text

-- | A key in the "thumbnail" namespace for getting the path to the
--   xx-large thumbnail image.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeByteString</a>.
--   
--   <i>Since: 2.76</i>
pattern FILE_ATTRIBUTE_THUMBNAIL_PATH_XXLARGE :: Text

-- | A key in the "thumbnail" namespace for getting the path to the x-large
--   thumbnail image.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeByteString</a>.
--   
--   <i>Since: 2.76</i>
pattern FILE_ATTRIBUTE_THUMBNAIL_PATH_XLARGE :: Text

-- | A key in the "thumbnail" namespace for getting the path to the normal
--   thumbnail image.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeByteString</a>.
--   
--   <i>Since: 2.76</i>
pattern FILE_ATTRIBUTE_THUMBNAIL_PATH_NORMAL :: Text

-- | A key in the "thumbnail" namespace for getting the path to the large
--   thumbnail image.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeByteString</a>.
--   
--   <i>Since: 2.76</i>
pattern FILE_ATTRIBUTE_THUMBNAIL_PATH_LARGE :: Text

-- | A key in the "thumbnail" namespace for getting the path to the
--   thumbnail image with the biggest size available.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeByteString</a>.
pattern FILE_ATTRIBUTE_THUMBNAIL_PATH :: Text

-- | A key in the "thumbnail" namespace for checking whether the xx-large
--   thumbnail is outdated.
--   
--   This attribute is <a>True</a> if the x-large thumbnail is up-to-date
--   with the file it represents, and <a>False</a> if the file has been
--   modified since the thumbnail was generated.
--   
--   If <a>FILE_ATTRIBUTE_THUMBNAILING_FAILED_XXLARGE</a> is <a>True</a>
--   and this attribute is <a>False</a>, it indicates that thumbnailing may
--   be attempted again and may succeed.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeBoolean</a>.
--   
--   <i>Since: 2.76</i>
pattern FILE_ATTRIBUTE_THUMBNAIL_IS_VALID_XXLARGE :: Text

-- | A key in the "thumbnail" namespace for checking whether the x-large
--   thumbnail is outdated.
--   
--   This attribute is <a>True</a> if the x-large thumbnail is up-to-date
--   with the file it represents, and <a>False</a> if the file has been
--   modified since the thumbnail was generated.
--   
--   If <a>FILE_ATTRIBUTE_THUMBNAILING_FAILED_XLARGE</a> is <a>True</a> and
--   this attribute is <a>False</a>, it indicates that thumbnailing may be
--   attempted again and may succeed.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeBoolean</a>.
--   
--   <i>Since: 2.76</i>
pattern FILE_ATTRIBUTE_THUMBNAIL_IS_VALID_XLARGE :: Text

-- | A key in the "thumbnail" namespace for checking whether the normal
--   thumbnail is outdated.
--   
--   This attribute is <a>True</a> if the normal thumbnail is up-to-date
--   with the file it represents, and <a>False</a> if the file has been
--   modified since the thumbnail was generated.
--   
--   If <a>FILE_ATTRIBUTE_THUMBNAILING_FAILED_NORMAL</a> is <a>True</a> and
--   this attribute is <a>False</a>, it indicates that thumbnailing may be
--   attempted again and may succeed.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeBoolean</a>.
--   
--   <i>Since: 2.76</i>
pattern FILE_ATTRIBUTE_THUMBNAIL_IS_VALID_NORMAL :: Text

-- | A key in the "thumbnail" namespace for checking whether the large
--   thumbnail is outdated.
--   
--   This attribute is <a>True</a> if the large thumbnail is up-to-date
--   with the file it represents, and <a>False</a> if the file has been
--   modified since the thumbnail was generated.
--   
--   If <a>FILE_ATTRIBUTE_THUMBNAILING_FAILED_LARGE</a> is <a>True</a> and
--   this attribute is <a>False</a>, it indicates that thumbnailing may be
--   attempted again and may succeed.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeBoolean</a>.
--   
--   <i>Since: 2.76</i>
pattern FILE_ATTRIBUTE_THUMBNAIL_IS_VALID_LARGE :: Text

-- | A key in the "thumbnail" namespace for checking whether the thumbnail
--   is outdated.
--   
--   This attribute is <a>True</a> if the thumbnail is up-to-date with the
--   file it represents, and <a>False</a> if the file has been modified
--   since the thumbnail was generated.
--   
--   If <a>FILE_ATTRIBUTE_THUMBNAILING_FAILED</a> is <a>True</a> and this
--   attribute is <a>False</a>, it indicates that thumbnailing may be
--   attempted again and may succeed.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeBoolean</a>.
--   
--   <i>Since: 2.40</i>
pattern FILE_ATTRIBUTE_THUMBNAIL_IS_VALID :: Text

-- | A key in the "thumbnail" namespace for checking if thumbnailing failed
--   for the xx-large image.
--   
--   This attribute is <a>True</a> if thumbnailing failed.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeBoolean</a>.
--   
--   <i>Since: 2.76</i>
pattern FILE_ATTRIBUTE_THUMBNAILING_FAILED_XXLARGE :: Text

-- | A key in the "thumbnail" namespace for checking if thumbnailing failed
--   for the x-large image.
--   
--   This attribute is <a>True</a> if thumbnailing failed.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeBoolean</a>.
--   
--   <i>Since: 2.76</i>
pattern FILE_ATTRIBUTE_THUMBNAILING_FAILED_XLARGE :: Text

-- | A key in the "thumbnail" namespace for checking if thumbnailing failed
--   for the normal image.
--   
--   This attribute is <a>True</a> if thumbnailing failed.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeBoolean</a>.
--   
--   <i>Since: 2.76</i>
pattern FILE_ATTRIBUTE_THUMBNAILING_FAILED_NORMAL :: Text

-- | A key in the "thumbnail" namespace for checking if thumbnailing failed
--   for the large image.
--   
--   This attribute is <a>True</a> if thumbnailing failed.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeBoolean</a>.
--   
--   <i>Since: 2.76</i>
pattern FILE_ATTRIBUTE_THUMBNAILING_FAILED_LARGE :: Text

-- | A key in the "thumbnail" namespace for checking if thumbnailing
--   failed.
--   
--   This attribute is <a>True</a> if thumbnailing failed.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeBoolean</a>.
pattern FILE_ATTRIBUTE_THUMBNAILING_FAILED :: Text

-- | A key in the "standard" namespace for storing file types.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeUint32</a>.
--   
--   The value for this key should contain a <a>FileType</a>.
pattern FILE_ATTRIBUTE_STANDARD_TYPE :: Text

-- | A key in the "standard" namespace for getting the target URI for the
--   file, in the case of <a>FileTypeShortcut</a> or
--   <a>FileTypeMountable</a> files.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeString</a>.
pattern FILE_ATTRIBUTE_STANDARD_TARGET_URI :: Text

-- | A key in the "standard" namespace for getting the symlink target, if
--   the file is a symlink.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeByteString</a>.
pattern FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET :: Text

-- | A key in the "standard" namespace for getting the symbolic icon for
--   the file.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeObject</a>.
--   
--   The value for this key should contain a <a>Icon</a>.
--   
--   <i>Since: 2.34</i>
pattern FILE_ATTRIBUTE_STANDARD_SYMBOLIC_ICON :: Text

-- | A key in the "standard" namespace for setting the sort order of a
--   file.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeInt32</a>.
--   
--   An example use would be in file managers, which would use this key to
--   set the order files are displayed. Files with smaller sort order
--   should be sorted first, and files without sort order as if sort order
--   was zero.
pattern FILE_ATTRIBUTE_STANDARD_SORT_ORDER :: Text

-- | A key in the "standard" namespace for getting the file's size (in
--   bytes).
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeUint64</a>.
pattern FILE_ATTRIBUTE_STANDARD_SIZE :: Text

-- | A key in the "standard" namespace for getting the name of the file.
--   
--   The name is the on-disk filename which may not be in any known
--   encoding, and can thus not be generally displayed as is. It is
--   guaranteed to be set on every file.
--   
--   Use <a>FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME</a> if you need to display
--   the name in a user interface.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeByteString</a>.
pattern FILE_ATTRIBUTE_STANDARD_NAME :: Text

-- | A key in the "standard" namespace for checking if a file is volatile.
--   This is meant for opaque, non-POSIX-like backends to indicate that the
--   URI is not persistent. Applications should look at
--   <a>FILE_ATTRIBUTE_STANDARD_SYMLINK_TARGET</a> for the persistent URI.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeBoolean</a>.
--   
--   <i>Since: 2.46</i>
pattern FILE_ATTRIBUTE_STANDARD_IS_VOLATILE :: Text

-- | A key in the "standard" namespace for checking if a file is virtual.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeBoolean</a>.
pattern FILE_ATTRIBUTE_STANDARD_IS_VIRTUAL :: Text

-- | A key in the "standard" namespace for checking if the file is a
--   symlink. Typically the actual type is something else, if we followed
--   the symlink to get the type.
--   
--   On Windows NTFS mountpoints are considered to be symlinks as well.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeBoolean</a>.
pattern FILE_ATTRIBUTE_STANDARD_IS_SYMLINK :: Text

-- | A key in the "standard" namespace for checking if a file is hidden.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeBoolean</a>.
pattern FILE_ATTRIBUTE_STANDARD_IS_HIDDEN :: Text

-- | A key in the "standard" namespace for checking if a file is a backup
--   file.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeBoolean</a>.
pattern FILE_ATTRIBUTE_STANDARD_IS_BACKUP :: Text

-- | A key in the "standard" namespace for getting the icon for the file.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeObject</a>.
--   
--   The value for this key should contain a <a>Icon</a>.
pattern FILE_ATTRIBUTE_STANDARD_ICON :: Text

-- | A key in the "standard" namespace for getting the fast content type.
--   
--   The fast content type isn't as reliable as the regular one, as it only
--   uses the filename to guess it, but it is faster to calculate than the
--   regular content type.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeString</a>.
pattern FILE_ATTRIBUTE_STANDARD_FAST_CONTENT_TYPE :: Text

-- | A key in the "standard" namespace for edit name of the file.
--   
--   An edit name is similar to the display name, but it is meant to be
--   used when you want to rename the file in the UI. The display name
--   might contain information you don't want in the new filename (such as
--   "(invalid unicode)" if the filename was in an invalid encoding).
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeString</a>.
pattern FILE_ATTRIBUTE_STANDARD_EDIT_NAME :: Text

-- | A key in the "standard" namespace for getting the display name of the
--   file.
--   
--   A display name is guaranteed to be in UTF-8 and can thus be displayed
--   in the UI. It is guaranteed to be set on every file.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeString</a>.
pattern FILE_ATTRIBUTE_STANDARD_DISPLAY_NAME :: Text

-- | A key in the "standard" namespace for getting the description of the
--   file.
--   
--   The description is a utf8 string that describes the file, generally
--   containing the filename, but can also contain further information.
--   Example descriptions could be "filename (on hostname)" for a remote
--   file or "filename (in trash)" for a file in the trash. This is useful
--   for instance as the window title when displaying a directory or for a
--   bookmarks menu.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeString</a>.
pattern FILE_ATTRIBUTE_STANDARD_DESCRIPTION :: Text

-- | A key in the "standard" namespace for getting the copy name of the
--   file.
--   
--   The copy name is an optional version of the name. If available it's
--   always in UTF8, and corresponds directly to the original filename
--   (only transcoded to UTF8). This is useful if you want to copy the file
--   to another filesystem that might have a different encoding. If the
--   filename is not a valid string in the encoding selected for the
--   filesystem it is in then the copy name will not be set.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeString</a>.
pattern FILE_ATTRIBUTE_STANDARD_COPY_NAME :: Text

-- | A key in the "standard" namespace for getting the content type of the
--   file.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeString</a>.
--   
--   The value for this key should contain a valid content type.
pattern FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE :: Text

-- | A key in the "standard" namespace for getting the amount of disk space
--   that is consumed by the file (in bytes).
--   
--   This will generally be larger than the file size (due to block size
--   overhead) but can occasionally be smaller (for example, for sparse
--   files).
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeUint64</a>.
--   
--   <i>Since: 2.20</i>
pattern FILE_ATTRIBUTE_STANDARD_ALLOCATED_SIZE :: Text

-- | A key in the "selinux" namespace for getting the file's SELinux
--   context.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeString</a>.
--   
--   Note that this attribute is only available if GLib has been built with
--   SELinux support.
pattern FILE_ATTRIBUTE_SELINUX_CONTEXT :: Text

-- | A key in the "recent" namespace for getting time, when the metadata
--   for the file in <tt>recent:///</tt> was last changed.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeInt64</a>.
--   
--   <i>Since: 2.52</i>
pattern FILE_ATTRIBUTE_RECENT_MODIFIED :: Text

-- | A key in the "preview" namespace for getting a <a>Icon</a> that can be
--   used to get preview of the file.
--   
--   For example, it may be a low resolution thumbnail without metadata.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeObject</a>.
--   
--   The value for this key should contain a <a>Icon</a>.
--   
--   <i>Since: 2.20</i>
pattern FILE_ATTRIBUTE_PREVIEW_ICON :: Text

-- | A key in the "owner" namespace for getting the real name of the user
--   that owns the file.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeString</a>.
pattern FILE_ATTRIBUTE_OWNER_USER_REAL :: Text

-- | A key in the "owner" namespace for getting the user name of the file's
--   owner.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeString</a>.
pattern FILE_ATTRIBUTE_OWNER_USER :: Text

-- | A key in the "owner" namespace for getting the file owner's group.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeString</a>.
pattern FILE_ATTRIBUTE_OWNER_GROUP :: Text

-- | A key in the "mountable" namespace for getting the unix device file.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeString</a>.
--   
--   <i>Since: 2.22</i>
pattern FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE_FILE :: Text

-- | A key in the "mountable" namespace for getting the unix device.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeUint32</a>.
pattern FILE_ATTRIBUTE_MOUNTABLE_UNIX_DEVICE :: Text

-- | A key in the "mountable" namespace for getting the
--   <a>DriveStartStopType</a>.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeUint32</a>.
--   
--   <i>Since: 2.22</i>
pattern FILE_ATTRIBUTE_MOUNTABLE_START_STOP_TYPE :: Text

-- | A key in the "mountable" namespace for checking if a file (of type
--   G_FILE_TYPE_MOUNTABLE) is automatically polled for media.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeBoolean</a>.
--   
--   <i>Since: 2.22</i>
pattern FILE_ATTRIBUTE_MOUNTABLE_IS_MEDIA_CHECK_AUTOMATIC :: Text

-- | A key in the "mountable" namespace for getting the HAL UDI for the
--   mountable file.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeString</a>.
pattern FILE_ATTRIBUTE_MOUNTABLE_HAL_UDI :: Text

-- | A key in the "mountable" namespace for checking if a file (of type
--   G_FILE_TYPE_MOUNTABLE) is unmountable.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeBoolean</a>.
pattern FILE_ATTRIBUTE_MOUNTABLE_CAN_UNMOUNT :: Text

-- | A key in the "mountable" namespace for checking if a file (of type
--   G_FILE_TYPE_MOUNTABLE) can be stopped.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeBoolean</a>.
--   
--   <i>Since: 2.22</i>
pattern FILE_ATTRIBUTE_MOUNTABLE_CAN_STOP :: Text

-- | A key in the "mountable" namespace for checking if a file (of type
--   G_FILE_TYPE_MOUNTABLE) can be started degraded.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeBoolean</a>.
--   
--   <i>Since: 2.22</i>
pattern FILE_ATTRIBUTE_MOUNTABLE_CAN_START_DEGRADED :: Text

-- | A key in the "mountable" namespace for checking if a file (of type
--   G_FILE_TYPE_MOUNTABLE) can be started.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeBoolean</a>.
--   
--   <i>Since: 2.22</i>
pattern FILE_ATTRIBUTE_MOUNTABLE_CAN_START :: Text

-- | A key in the "mountable" namespace for checking if a file (of type
--   G_FILE_TYPE_MOUNTABLE) can be polled.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeBoolean</a>.
--   
--   <i>Since: 2.22</i>
pattern FILE_ATTRIBUTE_MOUNTABLE_CAN_POLL :: Text

-- | A key in the "mountable" namespace for checking if a file (of type
--   G_FILE_TYPE_MOUNTABLE) is mountable.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeBoolean</a>.
pattern FILE_ATTRIBUTE_MOUNTABLE_CAN_MOUNT :: Text

-- | A key in the "mountable" namespace for checking if a file (of type
--   G_FILE_TYPE_MOUNTABLE) can be ejected.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeBoolean</a>.
pattern FILE_ATTRIBUTE_MOUNTABLE_CAN_EJECT :: Text

-- | A key in the "id" namespace for getting the file system identifier.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeString</a>.
--   
--   An example use would be during drag and drop to see if the source and
--   target are on the same filesystem (default to move) or not (default to
--   copy).
pattern FILE_ATTRIBUTE_ID_FILESYSTEM :: Text

-- | A key in the "id" namespace for getting a file identifier.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeString</a>.
--   
--   An example use would be during listing files, to avoid recursive
--   directory scanning.
--   
--   For local files on Linux, this is a combination of the file’s device
--   number and inode, so is invariant with respect to hard linking. The
--   format used by other VFS implementations may vary, and some VFS
--   backends may not set it.
--   
--   For simply seeing if two <a>File</a> instances refer to the same path
--   on disk, see <a>fileEqual</a>.
pattern FILE_ATTRIBUTE_ID_FILE :: Text

-- | A key in the "gvfs" namespace that gets the name of the current GVFS
--   backend in use.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeString</a>.
pattern FILE_ATTRIBUTE_GVFS_BACKEND :: Text

-- | A key in the "filesystem" namespace for hinting a file manager
--   application whether it should preview (e.g. thumbnail) files on the
--   file system.
--   
--   The value for this key contain a <a>FilesystemPreviewType</a>.
pattern FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW :: Text

-- | A key in the "filesystem" namespace for getting the number of bytes
--   used by data on the file system.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeUint64</a>.
--   
--   <i>Since: 2.32</i>
pattern FILE_ATTRIBUTE_FILESYSTEM_USED :: Text

-- | A key in the "filesystem" namespace for getting the file system's
--   type.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeString</a>.
pattern FILE_ATTRIBUTE_FILESYSTEM_TYPE :: Text

-- | A key in the "filesystem" namespace for getting the total size (in
--   bytes) of the file system, used in <a>fileQueryFilesystemInfo</a>.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeUint64</a>.
pattern FILE_ATTRIBUTE_FILESYSTEM_SIZE :: Text

-- | A key in the "filesystem" namespace for checking if the file system is
--   remote.
--   
--   Is set to <a>True</a> if the file system is remote.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeBoolean</a>.
pattern FILE_ATTRIBUTE_FILESYSTEM_REMOTE :: Text

-- | A key in the "filesystem" namespace for checking if the file system is
--   read only.
--   
--   Is set to <a>True</a> if the file system is read only.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeBoolean</a>.
pattern FILE_ATTRIBUTE_FILESYSTEM_READONLY :: Text

-- | A key in the "filesystem" namespace for getting the number of bytes of
--   free space left on the file system.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeUint64</a>.
pattern FILE_ATTRIBUTE_FILESYSTEM_FREE :: Text

-- | A key in the "etag" namespace for getting the value of the file's
--   entity tag.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeString</a>.
pattern FILE_ATTRIBUTE_ETAG_VALUE :: Text

-- | A key in the "dos" namespace for getting the file NTFS reparse tag.
--   
--   This value is 0 for files that are not reparse points.
--   
--   See the <a>Reparse Tags</a> page for possible reparse tag values.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeUint32</a>.
--   
--   <i>Since: 2.60</i>
pattern FILE_ATTRIBUTE_DOS_REPARSE_POINT_TAG :: Text

-- | A key in the "dos" namespace for checking if the file's backup flag is
--   set.
--   
--   This attribute is <a>True</a> if the backup flag is set.
--   
--   This attribute is only available for DOS file systems.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeBoolean</a>.
pattern FILE_ATTRIBUTE_DOS_IS_SYSTEM :: Text

-- | A key in the "dos" namespace for checking if the file is a NTFS mount
--   point (a volume mount or a junction point).
--   
--   This attribute is <a>True</a> if file is a reparse point of type
--   <a>IO_REPARSE_TAG_MOUNT_POINT</a>.
--   
--   This attribute is only available for DOS file systems.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeBoolean</a>.
--   
--   <i>Since: 2.60</i>
pattern FILE_ATTRIBUTE_DOS_IS_MOUNTPOINT :: Text

-- | A key in the "dos" namespace for checking if the file's archive flag
--   is set.
--   
--   This attribute is <a>True</a> if the archive flag is set.
--   
--   This attribute is only available for DOS file systems.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeBoolean</a>.
pattern FILE_ATTRIBUTE_DOS_IS_ARCHIVE :: Text

-- | A key in the "access" namespace for getting write privileges.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeBoolean</a>.
--   
--   This attribute will be <a>True</a> if the user is able to write to the
--   file.
pattern FILE_ATTRIBUTE_ACCESS_CAN_WRITE :: Text

-- | A key in the "access" namespace for checking trashing privileges.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeBoolean</a>.
--   
--   This attribute will be <a>True</a> if the user is able to move the
--   file to the trash.
pattern FILE_ATTRIBUTE_ACCESS_CAN_TRASH :: Text

-- | A key in the "access" namespace for checking renaming privileges.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeBoolean</a>.
--   
--   This attribute will be <a>True</a> if the user is able to rename the
--   file.
pattern FILE_ATTRIBUTE_ACCESS_CAN_RENAME :: Text

-- | A key in the "access" namespace for getting read privileges.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeBoolean</a>.
--   
--   This attribute will be <a>True</a> if the user is able to read the
--   file.
pattern FILE_ATTRIBUTE_ACCESS_CAN_READ :: Text

-- | A key in the "access" namespace for getting execution privileges.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeBoolean</a>.
--   
--   This attribute will be <a>True</a> if the user is able to execute the
--   file.
pattern FILE_ATTRIBUTE_ACCESS_CAN_EXECUTE :: Text

-- | A key in the "access" namespace for checking deletion privileges.
--   
--   Corresponding <a>FileAttributeType</a> is
--   <a>FileAttributeTypeBoolean</a>.
--   
--   This attribute will be <a>True</a> if the user is able to delete the
--   file.
pattern FILE_ATTRIBUTE_ACCESS_CAN_DELETE :: Text

-- | The string used to obtain a Unix device path with
--   <a>driveGetIdentifier</a>.
--   
--   <i>Since: 2.58</i>
pattern DRIVE_IDENTIFIER_KIND_UNIX_DEVICE :: Text

-- | Extension point for debug control functionality. See <a>Extending
--   GIO</a>.
--   
--   <i>Since: 2.72</i>
pattern DEBUG_CONTROLLER_EXTENSION_POINT_NAME :: Text

-- | The value returned by handlers of the signals generated by the
--   <tt>gdbus-codegen</tt> tool to indicate that a method call has not
--   been handled by an implementation. It is equal to <a>False</a>, but
--   using this macro is sometimes more readable.
--   
--   In code that needs to be backwards-compatible with older GLib, use
--   <a>False</a> instead.
--   
--   <i>Since: 2.68</i>
pattern DBUS_METHOD_INVOCATION_UNHANDLED :: Bool

-- | The value returned by handlers of the signals generated by the
--   <tt>gdbus-codegen</tt> tool to indicate that a method call has been
--   handled by an implementation. It is equal to <a>True</a>, but using
--   this macro is sometimes more readable.
--   
--   In code that needs to be backwards-compatible with older GLib, use
--   <a>True</a> instead, often written like this:
--   
--   <pre>
--   g_dbus_method_invocation_return_error (invocation, ...);
--   return TRUE;    // handled
--   </pre>
--   
--   <i>Since: 2.68</i>
pattern DBUS_METHOD_INVOCATION_HANDLED :: Bool


module GI.Gio.Enums

-- | An enumeration for well-known message buses.
--   
--   <i>Since: 2.26</i>
data BusType

-- | An alias for the message bus that activated the process, if any.
BusTypeStarter :: BusType

-- | Not a message bus.
BusTypeNone :: BusType

-- | The system-wide message bus.
BusTypeSystem :: BusType

-- | The login session message bus.
BusTypeSession :: BusType

-- | Catch-all for unknown values
AnotherBusType :: Int -> BusType

-- | Results returned from <a>converterConvert</a>.
--   
--   <i>Since: 2.24</i>
data ConverterResult

-- | There was an error during conversion.
ConverterResultError :: ConverterResult

-- | Some data was consumed or produced
ConverterResultConverted :: ConverterResult

-- | The conversion is finished
ConverterResultFinished :: ConverterResult

-- | Flushing is finished
ConverterResultFlushed :: ConverterResult

-- | Catch-all for unknown values
AnotherConverterResult :: Int -> ConverterResult

-- | Enumeration describing different kinds of native credential types.
--   
--   <i>Since: 2.26</i>
data CredentialsType

-- | Indicates an invalid native credential type.
CredentialsTypeInvalid :: CredentialsType

-- | The native credentials type is a <tt>struct ucred</tt>.
CredentialsTypeLinuxUcred :: CredentialsType

-- | The native credentials type is a <tt>struct cmsgcred</tt>.
CredentialsTypeFreebsdCmsgcred :: CredentialsType

-- | The native credentials type is a <tt>struct sockpeercred</tt>. Added
--   in 2.30.
CredentialsTypeOpenbsdSockpeercred :: CredentialsType

-- | The native credentials type is a <tt>ucred_t</tt>. Added in 2.40.
CredentialsTypeSolarisUcred :: CredentialsType

-- | The native credentials type is a <tt>struct unpcbid</tt>. Added in
--   2.42.
CredentialsTypeNetbsdUnpcbid :: CredentialsType

-- | The native credentials type is a <tt>struct xucred</tt>. Added in
--   2.66.
CredentialsTypeAppleXucred :: CredentialsType

-- | The native credentials type is a PID <tt>DWORD</tt>. Added in 2.72.
CredentialsTypeWin32Pid :: CredentialsType

-- | Catch-all for unknown values
AnotherCredentialsType :: Int -> CredentialsType

-- | Error codes for the <tt><i>G_DBUS_ERROR</i></tt> error domain.
--   
--   <i>Since: 2.26</i>
data DBusError

-- | A generic error; "something went wrong" - see the error message for
--   more.
DBusErrorFailed :: DBusError

-- | There was not enough memory to complete an operation.
DBusErrorNoMemory :: DBusError

-- | The bus doesn't know how to launch a service to supply the bus name
--   you wanted.
DBusErrorServiceUnknown :: DBusError

-- | The bus name you referenced doesn't exist (i.e. no application owns
--   it).
DBusErrorNameHasNoOwner :: DBusError

-- | No reply to a message expecting one, usually means a timeout occurred.
DBusErrorNoReply :: DBusError

-- | Something went wrong reading or writing to a socket, for example.
DBusErrorIoError :: DBusError

-- | A D-Bus bus address was malformed.
DBusErrorBadAddress :: DBusError

-- | Requested operation isn't supported (like ENOSYS on UNIX).
DBusErrorNotSupported :: DBusError

-- | Some limited resource is exhausted.
DBusErrorLimitsExceeded :: DBusError

-- | Security restrictions don't allow doing what you're trying to do.
DBusErrorAccessDenied :: DBusError

-- | Authentication didn't work.
DBusErrorAuthFailed :: DBusError

-- | Unable to connect to server (probably caused by ECONNREFUSED on a
--   socket).
DBusErrorNoServer :: DBusError

-- | Certain timeout errors, possibly ETIMEDOUT on a socket. Note that
--   <a>DBusErrorNoReply</a> is used for message reply timeouts. Warning:
--   this is confusingly-named given that <a>DBusErrorTimedOut</a> also
--   exists. We can't fix it for compatibility reasons so just be careful.
DBusErrorTimeout :: DBusError

-- | No network access (probably ENETUNREACH on a socket).
DBusErrorNoNetwork :: DBusError

-- | Can't bind a socket since its address is in use (i.e. EADDRINUSE).
DBusErrorAddressInUse :: DBusError

-- | The connection is disconnected and you're trying to use it.
DBusErrorDisconnected :: DBusError

-- | Invalid arguments passed to a method call.
DBusErrorInvalidArgs :: DBusError

-- | Missing file.
DBusErrorFileNotFound :: DBusError

-- | Existing file and the operation you're using does not silently
--   overwrite.
DBusErrorFileExists :: DBusError

-- | Method name you invoked isn't known by the object you invoked it on.
DBusErrorUnknownMethod :: DBusError

-- | Certain timeout errors, e.g. while starting a service. Warning: this
--   is confusingly-named given that <a>DBusErrorTimeout</a> also exists.
--   We can't fix it for compatibility reasons so just be careful.
DBusErrorTimedOut :: DBusError

-- | Tried to remove or modify a match rule that didn't exist.
DBusErrorMatchRuleNotFound :: DBusError

-- | The match rule isn't syntactically valid.
DBusErrorMatchRuleInvalid :: DBusError

-- | While starting a new process, the <tt><i>exec()</i></tt> call failed.
DBusErrorSpawnExecFailed :: DBusError

-- | While starting a new process, the <tt><i>fork()</i></tt> call failed.
DBusErrorSpawnForkFailed :: DBusError

-- | While starting a new process, the child exited with a status code.
DBusErrorSpawnChildExited :: DBusError

-- | While starting a new process, the child exited on a signal.
DBusErrorSpawnChildSignaled :: DBusError

-- | While starting a new process, something went wrong.
DBusErrorSpawnFailed :: DBusError

-- | We failed to setup the environment correctly.
DBusErrorSpawnSetupFailed :: DBusError

-- | We failed to setup the config parser correctly.
DBusErrorSpawnConfigInvalid :: DBusError

-- | Bus name was not valid.
DBusErrorSpawnServiceInvalid :: DBusError

-- | Service file not found in system-services directory.
DBusErrorSpawnServiceNotFound :: DBusError

-- | Permissions are incorrect on the setuid helper.
DBusErrorSpawnPermissionsInvalid :: DBusError

-- | Service file invalid (Name, User or Exec missing).
DBusErrorSpawnFileInvalid :: DBusError

-- | Tried to get a UNIX process ID and it wasn't available.
DBusErrorSpawnNoMemory :: DBusError

-- | Tried to get a UNIX process ID and it wasn't available.
DBusErrorUnixProcessIdUnknown :: DBusError

-- | A type signature is not valid.
DBusErrorInvalidSignature :: DBusError

-- | A file contains invalid syntax or is otherwise broken.
DBusErrorInvalidFileContent :: DBusError

-- | Asked for SELinux security context and it wasn't available.
DBusErrorSelinuxSecurityContextUnknown :: DBusError

-- | Asked for ADT audit data and it wasn't available.
DBusErrorAdtAuditDataUnknown :: DBusError

-- | There's already an object with the requested object path.
DBusErrorObjectPathInUse :: DBusError

-- | Object you invoked a method on isn't known. Since 2.42
DBusErrorUnknownObject :: DBusError

-- | Interface you invoked a method on isn't known by the object. Since
--   2.42
DBusErrorUnknownInterface :: DBusError

-- | Property you tried to access isn't known by the object. Since 2.42
DBusErrorUnknownProperty :: DBusError

-- | Property you tried to set is read-only. Since 2.42
DBusErrorPropertyReadOnly :: DBusError

-- | Catch-all for unknown values
AnotherDBusError :: Int -> DBusError

-- | Catch exceptions of type <a>DBusError</a>. This is a specialized
--   version of <a>catchGErrorJustDomain</a>.
catchDBusError :: IO a -> (DBusError -> GErrorMessage -> IO a) -> IO a

-- | Handle exceptions of type <a>DBusError</a>. This is a specialized
--   version of <a>handleGErrorJustDomain</a>.
handleDBusError :: (DBusError -> GErrorMessage -> IO a) -> IO a -> IO a

-- | Enumeration used to describe the byte order of a D-Bus message.
--   
--   <i>Since: 2.26</i>
data DBusMessageByteOrder

-- | The byte order is big endian.
DBusMessageByteOrderBigEndian :: DBusMessageByteOrder

-- | The byte order is little endian.
DBusMessageByteOrderLittleEndian :: DBusMessageByteOrder

-- | Catch-all for unknown values
AnotherDBusMessageByteOrder :: Int -> DBusMessageByteOrder

-- | Header fields used in <a>DBusMessage</a>.
--   
--   <i>Since: 2.26</i>
data DBusMessageHeaderField

-- | Not a valid header field.
DBusMessageHeaderFieldInvalid :: DBusMessageHeaderField

-- | The object path.
DBusMessageHeaderFieldPath :: DBusMessageHeaderField

-- | The interface name.
DBusMessageHeaderFieldInterface :: DBusMessageHeaderField

-- | The method or signal name.
DBusMessageHeaderFieldMember :: DBusMessageHeaderField

-- | The name of the error that occurred.
DBusMessageHeaderFieldErrorName :: DBusMessageHeaderField

-- | The serial number the message is a reply to.
DBusMessageHeaderFieldReplySerial :: DBusMessageHeaderField

-- | The name the message is intended for.
DBusMessageHeaderFieldDestination :: DBusMessageHeaderField

-- | Unique name of the sender of the message (filled in by the bus).
DBusMessageHeaderFieldSender :: DBusMessageHeaderField

-- | The signature of the message body.
DBusMessageHeaderFieldSignature :: DBusMessageHeaderField

-- | The number of UNIX file descriptors that accompany the message.
DBusMessageHeaderFieldNumUnixFds :: DBusMessageHeaderField

-- | Catch-all for unknown values
AnotherDBusMessageHeaderField :: Int -> DBusMessageHeaderField

-- | Message types used in <a>DBusMessage</a>.
--   
--   <i>Since: 2.26</i>
data DBusMessageType

-- | Message is of invalid type.
DBusMessageTypeInvalid :: DBusMessageType

-- | Method call.
DBusMessageTypeMethodCall :: DBusMessageType

-- | Method reply.
DBusMessageTypeMethodReturn :: DBusMessageType

-- | Error reply.
DBusMessageTypeError :: DBusMessageType

-- | Signal emission.
DBusMessageTypeSignal :: DBusMessageType

-- | Catch-all for unknown values
AnotherDBusMessageType :: Int -> DBusMessageType

-- | <a>DataStreamByteOrder</a> is used to ensure proper endianness of
--   streaming data sources across various machine architectures.
data DataStreamByteOrder

-- | Selects Big Endian byte order.
DataStreamByteOrderBigEndian :: DataStreamByteOrder

-- | Selects Little Endian byte order.
DataStreamByteOrderLittleEndian :: DataStreamByteOrder

-- | Selects endianness based on host machine's architecture.
DataStreamByteOrderHostEndian :: DataStreamByteOrder

-- | Catch-all for unknown values
AnotherDataStreamByteOrder :: Int -> DataStreamByteOrder

-- | <a>DataStreamNewlineType</a> is used when checking for or setting the
--   line endings for a given file.
data DataStreamNewlineType

-- | Selects "LF" line endings, common on most modern UNIX platforms.
DataStreamNewlineTypeLf :: DataStreamNewlineType

-- | Selects "CR" line endings.
DataStreamNewlineTypeCr :: DataStreamNewlineType

-- | Selects "CR, LF" line ending, common on Microsoft Windows.
DataStreamNewlineTypeCrLf :: DataStreamNewlineType

-- | Automatically try to handle any line ending type.
DataStreamNewlineTypeAny :: DataStreamNewlineType

-- | Catch-all for unknown values
AnotherDataStreamNewlineType :: Int -> DataStreamNewlineType

-- | Enumeration describing how a drive can be started/stopped.
--   
--   <i>Since: 2.22</i>
data DriveStartStopType

-- | Unknown or drive doesn't support start/stop.
DriveStartStopTypeUnknown :: DriveStartStopType

-- | The stop method will physically shut down the drive and e.g. power
--   down the port the drive is attached to.
DriveStartStopTypeShutdown :: DriveStartStopType

-- | The start/stop methods are used for connecting/disconnect to the drive
--   over the network.
DriveStartStopTypeNetwork :: DriveStartStopType

-- | The start/stop methods will assemble/disassemble a virtual drive from
--   several physical drives.
DriveStartStopTypeMultidisk :: DriveStartStopType

-- | The start/stop methods will unlock/lock the disk (for example using
--   the ATA <tt>SECURITY UNLOCK DEVICE</tt> command)
DriveStartStopTypePassword :: DriveStartStopType

-- | Catch-all for unknown values
AnotherDriveStartStopType :: Int -> DriveStartStopType

-- | GEmblemOrigin is used to add information about the origin of the
--   emblem to <a>Emblem</a>.
--   
--   <i>Since: 2.18</i>
data EmblemOrigin

-- | Emblem of unknown origin
EmblemOriginUnknown :: EmblemOrigin

-- | Emblem adds device-specific information
EmblemOriginDevice :: EmblemOrigin

-- | Emblem depicts live metadata, such as "readonly"
EmblemOriginLivemetadata :: EmblemOrigin

-- | Emblem comes from a user-defined tag, e.g. set by nautilus (in the
--   future)
EmblemOriginTag :: EmblemOrigin

-- | Catch-all for unknown values
AnotherEmblemOrigin :: Int -> EmblemOrigin

-- | Used by <a>fileSetAttributesFromInfo</a> when setting file attributes.
data FileAttributeStatus

-- | Attribute value is unset (empty).
FileAttributeStatusUnset :: FileAttributeStatus

-- | Attribute value is set.
FileAttributeStatusSet :: FileAttributeStatus

-- | Indicates an error in setting the value.
FileAttributeStatusErrorSetting :: FileAttributeStatus

-- | Catch-all for unknown values
AnotherFileAttributeStatus :: Int -> FileAttributeStatus

-- | The data types for file attributes.
data FileAttributeType

-- | indicates an invalid or uninitialized type.
FileAttributeTypeInvalid :: FileAttributeType

-- | a null terminated UTF8 string.
FileAttributeTypeString :: FileAttributeType

-- | a zero terminated string of non-zero bytes.
FileAttributeTypeByteString :: FileAttributeType

-- | a boolean value.
FileAttributeTypeBoolean :: FileAttributeType

-- | an unsigned 4-byte/32-bit integer.
FileAttributeTypeUint32 :: FileAttributeType

-- | a signed 4-byte/32-bit integer.
FileAttributeTypeInt32 :: FileAttributeType

-- | an unsigned 8-byte/64-bit integer.
FileAttributeTypeUint64 :: FileAttributeType

-- | a signed 8-byte/64-bit integer.
FileAttributeTypeInt64 :: FileAttributeType

-- | a <a>Object</a>.
FileAttributeTypeObject :: FileAttributeType

-- | a <a>Nothing</a> terminated char __. Since 2.22
FileAttributeTypeStringv :: FileAttributeType

-- | Catch-all for unknown values
AnotherFileAttributeType :: Int -> FileAttributeType

-- | Specifies what type of event a monitor event is.
data FileMonitorEvent

-- | a file changed.
FileMonitorEventChanged :: FileMonitorEvent

-- | a hint that this was probably the last change in a set of changes.
FileMonitorEventChangesDoneHint :: FileMonitorEvent

-- | a file was deleted.
FileMonitorEventDeleted :: FileMonitorEvent

-- | a file was created.
FileMonitorEventCreated :: FileMonitorEvent

-- | a file attribute was changed.
FileMonitorEventAttributeChanged :: FileMonitorEvent

-- | the file location will soon be unmounted.
FileMonitorEventPreUnmount :: FileMonitorEvent

-- | the file location was unmounted.
FileMonitorEventUnmounted :: FileMonitorEvent

-- | the file was moved -- only sent if the (deprecated)
--   <a>FileMonitorFlagsSendMoved</a> flag is set
FileMonitorEventMoved :: FileMonitorEvent

-- | the file was renamed within the current directory -- only sent if the
--   <a>FileMonitorFlagsWatchMoves</a> flag is set. Since: 2.46.
FileMonitorEventRenamed :: FileMonitorEvent

-- | the file was moved into the monitored directory from another location
--   -- only sent if the <a>FileMonitorFlagsWatchMoves</a> flag is set.
--   Since: 2.46.
FileMonitorEventMovedIn :: FileMonitorEvent

-- | the file was moved out of the monitored directory to another location
--   -- only sent if the <a>FileMonitorFlagsWatchMoves</a> flag is set.
--   Since: 2.46
FileMonitorEventMovedOut :: FileMonitorEvent

-- | Catch-all for unknown values
AnotherFileMonitorEvent :: Int -> FileMonitorEvent

-- | Indicates the file's on-disk type.
--   
--   On Windows systems a file will never have <a>FileTypeSymbolicLink</a>
--   type; use <a>FileInfo</a> and
--   <a>FILE_ATTRIBUTE_STANDARD_IS_SYMLINK</a> to determine whether a file
--   is a symlink or not. This is due to the fact that NTFS does not have a
--   single filesystem object type for symbolic links - it has files that
--   symlink to files, and directories that symlink to directories.
--   <a>FileType</a> enumeration cannot precisely represent this important
--   distinction, which is why all Windows symlinks will continue to be
--   reported as <a>FileTypeRegular</a> or <a>FileTypeDirectory</a>.
data FileType

-- | File's type is unknown.
FileTypeUnknown :: FileType

-- | File handle represents a regular file.
FileTypeRegular :: FileType

-- | File handle represents a directory.
FileTypeDirectory :: FileType

-- | File handle represents a symbolic link (Unix systems).
FileTypeSymbolicLink :: FileType

-- | File is a "special" file, such as a socket, fifo, block device, or
--   character device.
FileTypeSpecial :: FileType

-- | File is a shortcut (Windows systems).
FileTypeShortcut :: FileType

-- | File is a mountable location.
FileTypeMountable :: FileType

-- | Catch-all for unknown values
AnotherFileType :: Int -> FileType

-- | Indicates a hint from the file system whether files should be
--   previewed in a file manager. Returned as the value of the key
--   <a>FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW</a>.
data FilesystemPreviewType

-- | Only preview files if user has explicitly requested it.
FilesystemPreviewTypeIfAlways :: FilesystemPreviewType

-- | Preview files if user has requested preview of "local" files.
FilesystemPreviewTypeIfLocal :: FilesystemPreviewType

-- | Never preview files.
FilesystemPreviewTypeNever :: FilesystemPreviewType

-- | Catch-all for unknown values
AnotherFilesystemPreviewType :: Int -> FilesystemPreviewType

-- | Error codes returned by GIO functions.
--   
--   Note that this domain may be extended in future GLib releases. In
--   general, new error codes either only apply to new APIs, or else
--   replace <a>IOErrorEnumFailed</a> in cases that were not explicitly
--   distinguished before. You should therefore avoid writing code like
--   
--   <h3><i>C code</i></h3>
--   
--   <pre>
--   if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_FAILED))
--     {
--       // Assume that this is EPRINTERONFIRE
--       ...
--     }
--   </pre>
--   
--   but should instead treat all unrecognized error codes the same as
--   <a>IOErrorEnumFailed</a>.
--   
--   See also <a>PollableReturn</a> for a cheaper way of returning
--   <a>IOErrorEnumWouldBlock</a> to callers without allocating a
--   <a>GError</a>.
data IOErrorEnum

-- | Generic error condition for when an operation fails and no more
--   specific <a>IOErrorEnum</a> value is defined.
IOErrorEnumFailed :: IOErrorEnum

-- | File not found.
IOErrorEnumNotFound :: IOErrorEnum

-- | File already exists.
IOErrorEnumExists :: IOErrorEnum

-- | File is a directory.
IOErrorEnumIsDirectory :: IOErrorEnum

-- | File is not a directory.
IOErrorEnumNotDirectory :: IOErrorEnum

-- | File is a directory that isn't empty.
IOErrorEnumNotEmpty :: IOErrorEnum

-- | File is not a regular file.
IOErrorEnumNotRegularFile :: IOErrorEnum

-- | File is not a symbolic link.
IOErrorEnumNotSymbolicLink :: IOErrorEnum

-- | File cannot be mounted.
IOErrorEnumNotMountableFile :: IOErrorEnum

-- | Filename is too many characters.
IOErrorEnumFilenameTooLong :: IOErrorEnum

-- | Filename is invalid or contains invalid characters.
IOErrorEnumInvalidFilename :: IOErrorEnum

-- | File contains too many symbolic links.
IOErrorEnumTooManyLinks :: IOErrorEnum

-- | No space left on drive.
IOErrorEnumNoSpace :: IOErrorEnum

-- | Invalid argument.
IOErrorEnumInvalidArgument :: IOErrorEnum

-- | Permission denied.
IOErrorEnumPermissionDenied :: IOErrorEnum

-- | Operation (or one of its parameters) not supported
IOErrorEnumNotSupported :: IOErrorEnum

-- | File isn't mounted.
IOErrorEnumNotMounted :: IOErrorEnum

-- | File is already mounted.
IOErrorEnumAlreadyMounted :: IOErrorEnum

-- | File was closed.
IOErrorEnumClosed :: IOErrorEnum

-- | Operation was cancelled. See <a>Cancellable</a>.
IOErrorEnumCancelled :: IOErrorEnum

-- | Operations are still pending.
IOErrorEnumPending :: IOErrorEnum

-- | File is read only.
IOErrorEnumReadOnly :: IOErrorEnum

-- | Backup couldn't be created.
IOErrorEnumCantCreateBackup :: IOErrorEnum

-- | File's Entity Tag was incorrect.
IOErrorEnumWrongEtag :: IOErrorEnum

-- | Operation timed out.
IOErrorEnumTimedOut :: IOErrorEnum

-- | Operation would be recursive.
IOErrorEnumWouldRecurse :: IOErrorEnum

-- | File is busy.
IOErrorEnumBusy :: IOErrorEnum

-- | Operation would block.
IOErrorEnumWouldBlock :: IOErrorEnum

-- | Host couldn't be found (remote operations).
IOErrorEnumHostNotFound :: IOErrorEnum

-- | Operation would merge files.
IOErrorEnumWouldMerge :: IOErrorEnum

-- | Operation failed and a helper program has already interacted with the
--   user. Do not display any error dialog.
IOErrorEnumFailedHandled :: IOErrorEnum

-- | The current process has too many files open and can't open any more.
--   Duplicate descriptors do count toward this limit. Since 2.20
IOErrorEnumTooManyOpenFiles :: IOErrorEnum

-- | The object has not been initialized. Since 2.22
IOErrorEnumNotInitialized :: IOErrorEnum

-- | The requested address is already in use. Since 2.22
IOErrorEnumAddressInUse :: IOErrorEnum

-- | Need more input to finish operation. Since 2.24
IOErrorEnumPartialInput :: IOErrorEnum

-- | The input data was invalid. Since 2.24
IOErrorEnumInvalidData :: IOErrorEnum

-- | A remote object generated an error that doesn't correspond to a
--   locally registered <a>GError</a> error domain. Use
--   <a>dbusErrorGetRemoteError</a> to extract the D-Bus error name and
--   <a>dbusErrorStripRemoteError</a> to fix up the message so it matches
--   what was received on the wire. Since 2.26.
IOErrorEnumDbusError :: IOErrorEnum

-- | Host unreachable. Since 2.26
IOErrorEnumHostUnreachable :: IOErrorEnum

-- | Network unreachable. Since 2.26
IOErrorEnumNetworkUnreachable :: IOErrorEnum

-- | Connection refused. Since 2.26
IOErrorEnumConnectionRefused :: IOErrorEnum

-- | Connection to proxy server failed. Since 2.26
IOErrorEnumProxyFailed :: IOErrorEnum

-- | Proxy authentication failed. Since 2.26
IOErrorEnumProxyAuthFailed :: IOErrorEnum

-- | Proxy server needs authentication. Since 2.26
IOErrorEnumProxyNeedAuth :: IOErrorEnum

-- | Proxy connection is not allowed by ruleset. Since 2.26
IOErrorEnumProxyNotAllowed :: IOErrorEnum

-- | Broken pipe. Since 2.36
IOErrorEnumBrokenPipe :: IOErrorEnum

-- | Connection closed by peer. Note that this is the same code as
--   <a>IOErrorEnumBrokenPipe</a>; before 2.44 some "connection closed"
--   errors returned <a>IOErrorEnumBrokenPipe</a>, but others returned
--   <a>IOErrorEnumFailed</a>. Now they should all return the same value,
--   which has this more logical name. Since 2.44.
IOErrorEnumConnectionClosed :: IOErrorEnum

-- | Transport endpoint is not connected. Since 2.44
IOErrorEnumNotConnected :: IOErrorEnum

-- | Message too large. Since 2.48.
IOErrorEnumMessageTooLarge :: IOErrorEnum

-- | No such device found. Since 2.74
IOErrorEnumNoSuchDevice :: IOErrorEnum

-- | Destination address unset. Since 2.80
IOErrorEnumDestinationUnset :: IOErrorEnum

-- | Catch-all for unknown values
AnotherIOErrorEnum :: Int -> IOErrorEnum

-- | Catch exceptions of type <a>IOErrorEnum</a>. This is a specialized
--   version of <a>catchGErrorJustDomain</a>.
catchIOErrorEnum :: IO a -> (IOErrorEnum -> GErrorMessage -> IO a) -> IO a

-- | Handle exceptions of type <a>IOErrorEnum</a>. This is a specialized
--   version of <a>handleGErrorJustDomain</a>.
handleIOErrorEnum :: (IOErrorEnum -> GErrorMessage -> IO a) -> IO a -> IO a

-- | Memory availability warning levels.
--   
--   Note that because new values might be added, it is recommended that
--   applications check <a>MemoryMonitorWarningLevel</a> as ranges, for
--   example:
--   
--   <h3><i>C code</i></h3>
--   
--   <pre>
--   if (warning_level &gt; G_MEMORY_MONITOR_WARNING_LEVEL_LOW)
--     drop_caches ();
--   </pre>
--   
--   <i>Since: 2.64</i>
data MemoryMonitorWarningLevel

-- | Memory on the device is low, processes should free up unneeded
--   resources (for example, in-memory caches) so they can be used
--   elsewhere.
MemoryMonitorWarningLevelLow :: MemoryMonitorWarningLevel

-- | Same as <i><tt>gMEMORYMONITORWARNINGLEVELLOW</tt></i> but the device
--   has even less free memory, so processes should try harder to free up
--   unneeded resources. If your process does not need to stay running, it
--   is a good time for it to quit.
MemoryMonitorWarningLevelMedium :: MemoryMonitorWarningLevel

-- | The system will soon start terminating processes to reclaim memory,
--   including background processes.
MemoryMonitorWarningLevelCritical :: MemoryMonitorWarningLevel

-- | Catch-all for unknown values
AnotherMemoryMonitorWarningLevel :: Int -> MemoryMonitorWarningLevel

-- | <a>MountOperationResult</a> is returned as a result when a request for
--   information is send by the mounting operation.
data MountOperationResult

-- | The request was fulfilled and the user specified data is now available
MountOperationResultHandled :: MountOperationResult

-- | The user requested the mount operation to be aborted
MountOperationResultAborted :: MountOperationResult

-- | The request was unhandled (i.e. not implemented)
MountOperationResultUnhandled :: MountOperationResult

-- | Catch-all for unknown values
AnotherMountOperationResult :: Int -> MountOperationResult

-- | The host's network connectivity state, as reported by
--   <a>NetworkMonitor</a>.
--   
--   <i>Since: 2.44</i>
data NetworkConnectivity

-- | The host is not configured with a route to the Internet; it may or may
--   not be connected to a local network.
NetworkConnectivityLocal :: NetworkConnectivity

-- | The host is connected to a network, but does not appear to be able to
--   reach the full Internet, perhaps due to upstream network problems.
NetworkConnectivityLimited :: NetworkConnectivity

-- | The host is behind a captive portal and cannot reach the full
--   Internet.
NetworkConnectivityPortal :: NetworkConnectivity

-- | The host is connected to a network, and appears to be able to reach
--   the full Internet.
NetworkConnectivityFull :: NetworkConnectivity

-- | Catch-all for unknown values
AnotherNetworkConnectivity :: Int -> NetworkConnectivity

-- | Priority levels for <tt><i>GNotifications</i></tt>.
--   
--   <i>Since: 2.42</i>
data NotificationPriority

-- | the default priority, to be used for the majority of notifications
--   (for example email messages, software updates, completed download/sync
--   operations)
NotificationPriorityNormal :: NotificationPriority

-- | for notifications that do not require immediate attention - typically
--   used for contextual background information, such as contact birthdays
--   or local weather
NotificationPriorityLow :: NotificationPriority

-- | for events that require more attention, usually because responses are
--   time-sensitive (for example chat and SMS messages or alarms)
NotificationPriorityHigh :: NotificationPriority

-- | for urgent notifications, or notifications that require a response in
--   a short space of time (for example phone calls or emergency warnings)
NotificationPriorityUrgent :: NotificationPriority

-- | Catch-all for unknown values
AnotherNotificationPriority :: Int -> NotificationPriority

-- | <a>PasswordSave</a> is used to indicate the lifespan of a saved
--   password.
--   
--   <tt><i>Gvfs</i></tt> stores passwords in the Gnome keyring when this
--   flag allows it to, and later retrieves it again from there.
data PasswordSave

-- | never save a password.
PasswordSaveNever :: PasswordSave

-- | save a password for the session.
PasswordSaveForSession :: PasswordSave

-- | save a password permanently.
PasswordSavePermanently :: PasswordSave

-- | Catch-all for unknown values
AnotherPasswordSave :: Int -> PasswordSave

-- | Return value for various IO operations that signal errors via the
--   return value and not necessarily via a <a>GError</a>.
--   
--   This enum exists to be able to return errors to callers without having
--   to allocate a <a>GError</a>. Allocating <tt><i>GErrors</i></tt> can be
--   quite expensive for regularly happening errors like
--   <a>IOErrorEnumWouldBlock</a>.
--   
--   In case of <a>PollableReturnFailed</a> a <a>GError</a> should be set
--   for the operation to give details about the error that happened.
--   
--   <i>Since: 2.60</i>
data PollableReturn

-- | Generic error condition for when an operation fails.
PollableReturnFailed :: PollableReturn

-- | The operation was successfully finished.
PollableReturnOk :: PollableReturn

-- | The operation would block.
PollableReturnWouldBlock :: PollableReturn

-- | Catch-all for unknown values
AnotherPollableReturn :: Int -> PollableReturn

-- | An error code used with <tt><i>G_RESOLVER_ERROR</i></tt> in a
--   <a>GError</a> returned from a <a>Resolver</a> routine.
--   
--   <i>Since: 2.22</i>
data ResolverError

-- | the requested name/address/service was not found
ResolverErrorNotFound :: ResolverError

-- | the requested information could not be looked up due to a network
--   error or similar problem
ResolverErrorTemporaryFailure :: ResolverError

-- | unknown error
ResolverErrorInternal :: ResolverError

-- | Catch-all for unknown values
AnotherResolverError :: Int -> ResolverError

-- | Catch exceptions of type <a>ResolverError</a>. This is a specialized
--   version of <a>catchGErrorJustDomain</a>.
catchResolverError :: IO a -> (ResolverError -> GErrorMessage -> IO a) -> IO a

-- | Handle exceptions of type <a>ResolverError</a>. This is a specialized
--   version of <a>handleGErrorJustDomain</a>.
handleResolverError :: (ResolverError -> GErrorMessage -> IO a) -> IO a -> IO a

-- | The type of record that <a>resolverLookupRecords</a> or
--   <a>resolverLookupRecordsAsync</a> should retrieve. The records are
--   returned as lists of <a>GVariant</a> tuples. Each record type has
--   different values in the variant tuples returned.
--   
--   <a>ResolverRecordTypeSrv</a> records are returned as variants with the
--   signature <tt>(qqqs)</tt>, containing a <tt>guint16</tt> with the
--   priority, a <tt>guint16</tt> with the weight, a <tt>guint16</tt> with
--   the port, and a string of the hostname.
--   
--   <a>ResolverRecordTypeMx</a> records are returned as variants with the
--   signature <tt>(qs)</tt>, representing a <tt>guint16</tt> with the
--   preference, and a string containing the mail exchanger hostname.
--   
--   <a>ResolverRecordTypeTxt</a> records are returned as variants with the
--   signature <tt>(as)</tt>, representing an array of the strings in the
--   text record. Note: Most TXT records only contain a single string, but
--   <a>RFC 1035</a> does allow a record to contain multiple strings. The
--   RFC which defines the interpretation of a specific TXT record will
--   likely require concatenation of multiple strings if they are present,
--   as with <a>RFC 7208</a>.
--   
--   <a>ResolverRecordTypeSoa</a> records are returned as variants with the
--   signature <tt>(ssuuuuu)</tt>, representing a string containing the
--   primary name server, a string containing the administrator, the serial
--   as a <tt>guint32</tt>, the refresh interval as a <tt>guint32</tt>, the
--   retry interval as a <tt>guint32</tt>, the expire timeout as a
--   <tt>guint32</tt>, and the TTL as a <tt>guint32</tt>.
--   
--   <a>ResolverRecordTypeNs</a> records are returned as variants with the
--   signature <tt>(s)</tt>, representing a string of the hostname of the
--   name server.
--   
--   <i>Since: 2.34</i>
data ResolverRecordType

-- | look up DNS SRV records for a domain
ResolverRecordTypeSrv :: ResolverRecordType

-- | look up DNS MX records for a domain
ResolverRecordTypeMx :: ResolverRecordType

-- | look up DNS TXT records for a name
ResolverRecordTypeTxt :: ResolverRecordType

-- | look up DNS SOA records for a zone
ResolverRecordTypeSoa :: ResolverRecordType

-- | look up DNS NS records for a domain
ResolverRecordTypeNs :: ResolverRecordType

-- | Catch-all for unknown values
AnotherResolverRecordType :: Int -> ResolverRecordType

-- | An error code used with <tt><i>G_RESOURCE_ERROR</i></tt> in a
--   <a>GError</a> returned from a <a>Resource</a> routine.
--   
--   <i>Since: 2.32</i>
data ResourceError

-- | no file was found at the requested path
ResourceErrorNotFound :: ResourceError

-- | unknown error
ResourceErrorInternal :: ResourceError

-- | Catch-all for unknown values
AnotherResourceError :: Int -> ResourceError

-- | Catch exceptions of type <a>ResourceError</a>. This is a specialized
--   version of <a>catchGErrorJustDomain</a>.
catchResourceError :: IO a -> (ResourceError -> GErrorMessage -> IO a) -> IO a

-- | Handle exceptions of type <a>ResourceError</a>. This is a specialized
--   version of <a>handleGErrorJustDomain</a>.
handleResourceError :: (ResourceError -> GErrorMessage -> IO a) -> IO a -> IO a

-- | Describes an event occurring on a <a>SocketClient</a>. See the
--   <a>SocketClient::event</a> signal for more details.
--   
--   Additional values may be added to this type in the future.
--   
--   <i>Since: 2.32</i>
data SocketClientEvent

-- | The client is doing a DNS lookup.
SocketClientEventResolving :: SocketClientEvent

-- | The client has completed a DNS lookup.
SocketClientEventResolved :: SocketClientEvent

-- | The client is connecting to a remote host (either a proxy or the
--   destination server).
SocketClientEventConnecting :: SocketClientEvent

-- | The client has connected to a remote host.
SocketClientEventConnected :: SocketClientEvent

-- | The client is negotiating with a proxy to connect to the destination
--   server.
SocketClientEventProxyNegotiating :: SocketClientEvent

-- | The client has negotiated with the proxy server.
SocketClientEventProxyNegotiated :: SocketClientEvent

-- | The client is performing a TLS handshake.
SocketClientEventTlsHandshaking :: SocketClientEvent

-- | The client has performed a TLS handshake.
SocketClientEventTlsHandshaked :: SocketClientEvent

-- | The client is done with a particular <a>SocketConnectable</a>.
SocketClientEventComplete :: SocketClientEvent

-- | Catch-all for unknown values
AnotherSocketClientEvent :: Int -> SocketClientEvent

-- | The protocol family of a <a>SocketAddress</a>. (These values are
--   identical to the system defines <tt><i>AF_INET</i></tt>,
--   <tt><i>AF_INET6</i></tt> and <tt><i>AF_UNIX</i></tt>, if available.)
--   
--   <i>Since: 2.22</i>
data SocketFamily

-- | no address family
SocketFamilyInvalid :: SocketFamily

-- | the UNIX domain family
SocketFamilyUnix :: SocketFamily

-- | the IPv4 family
SocketFamilyIpv4 :: SocketFamily

-- | the IPv6 family
SocketFamilyIpv6 :: SocketFamily

-- | Catch-all for unknown values
AnotherSocketFamily :: Int -> SocketFamily

-- | Describes an event occurring on a <a>SocketListener</a>. See the
--   <a>SocketListener::event</a> signal for more details.
--   
--   Additional values may be added to this type in the future.
--   
--   <i>Since: 2.46</i>
data SocketListenerEvent

-- | The listener is about to bind a socket.
SocketListenerEventBinding :: SocketListenerEvent

-- | The listener has bound a socket.
SocketListenerEventBound :: SocketListenerEvent

-- | The listener is about to start listening on this socket.
SocketListenerEventListening :: SocketListenerEvent

-- | The listener is now listening on this socket.
SocketListenerEventListened :: SocketListenerEvent

-- | Catch-all for unknown values
AnotherSocketListenerEvent :: Int -> SocketListenerEvent

-- | A protocol identifier is specified when creating a <a>Socket</a>,
--   which is a family/type specific identifier, where 0 means the default
--   protocol for the particular family/type.
--   
--   This enum contains a set of commonly available and used protocols. You
--   can also pass any other identifiers handled by the platform in order
--   to use protocols not listed here.
--   
--   <i>Since: 2.22</i>
data SocketProtocol

-- | The protocol type is unknown
SocketProtocolUnknown :: SocketProtocol

-- | The default protocol for the family/type
SocketProtocolDefault :: SocketProtocol

-- | TCP over IP
SocketProtocolTcp :: SocketProtocol

-- | UDP over IP
SocketProtocolUdp :: SocketProtocol

-- | SCTP over IP
SocketProtocolSctp :: SocketProtocol

-- | Catch-all for unknown values
AnotherSocketProtocol :: Int -> SocketProtocol

-- | Flags used when creating a <a>Socket</a>. Some protocols may not
--   implement all the socket types.
--   
--   <i>Since: 2.22</i>
data SocketType

-- | Type unknown or wrong
SocketTypeInvalid :: SocketType

-- | Reliable connection-based byte streams (e.g. TCP).
SocketTypeStream :: SocketType

-- | Connectionless, unreliable datagram passing. (e.g. UDP)
SocketTypeDatagram :: SocketType

-- | Reliable connection-based passing of datagrams of fixed maximum length
--   (e.g. SCTP).
SocketTypeSeqpacket :: SocketType

-- | Catch-all for unknown values
AnotherSocketType :: Int -> SocketType

-- | The client authentication mode for a <a>TlsServerConnection</a>.
--   
--   <i>Since: 2.28</i>
data TlsAuthenticationMode

-- | client authentication not required
TlsAuthenticationModeNone :: TlsAuthenticationMode

-- | client authentication is requested
TlsAuthenticationModeRequested :: TlsAuthenticationMode

-- | client authentication is required
TlsAuthenticationModeRequired :: TlsAuthenticationMode

-- | Catch-all for unknown values
AnotherTlsAuthenticationMode :: Int -> TlsAuthenticationMode

-- | An error code used with <tt><i>G_TLS_CHANNEL_BINDING_ERROR</i></tt> in
--   a <a>GError</a> to indicate a TLS channel binding retrieval error.
--   
--   <i>Since: 2.66</i>
data TlsChannelBindingError

-- | Either entire binding retrieval facility or specific binding type is
--   not implemented in the TLS backend.
TlsChannelBindingErrorNotImplemented :: TlsChannelBindingError

-- | The handshake is not yet complete on the connection which is a strong
--   requirement for any existing binding type.
TlsChannelBindingErrorInvalidState :: TlsChannelBindingError

-- | Handshake is complete but binding data is not available. That normally
--   indicates the TLS implementation failed to provide the binding data.
--   For example, some implementations do not provide a peer certificate
--   for resumed connections.
TlsChannelBindingErrorNotAvailable :: TlsChannelBindingError

-- | Binding type is not supported on the current connection. This error
--   could be triggered when requesting <tt>tls-server-end-point</tt>
--   binding data for a certificate which has no hash function or uses
--   multiple hash functions.
TlsChannelBindingErrorNotSupported :: TlsChannelBindingError

-- | Any other backend error preventing binding data retrieval.
TlsChannelBindingErrorGeneralError :: TlsChannelBindingError

-- | Catch-all for unknown values
AnotherTlsChannelBindingError :: Int -> TlsChannelBindingError

-- | Catch exceptions of type <a>TlsChannelBindingError</a>. This is a
--   specialized version of <a>catchGErrorJustDomain</a>.
catchTlsChannelBindingError :: IO a -> (TlsChannelBindingError -> GErrorMessage -> IO a) -> IO a

-- | Handle exceptions of type <a>TlsChannelBindingError</a>. This is a
--   specialized version of <a>handleGErrorJustDomain</a>.
handleTlsChannelBindingError :: (TlsChannelBindingError -> GErrorMessage -> IO a) -> IO a -> IO a

-- | The type of TLS channel binding data to retrieve from
--   <a>TlsConnection</a> or <a>DtlsConnection</a>, as documented by RFC
--   5929 or RFC 9266. The <a>`tls-unique-for-telnet`</a> binding type is
--   not currently implemented.
--   
--   <i>Since: 2.66</i>
data TlsChannelBindingType

-- | <a>`tls-unique`</a> binding type
TlsChannelBindingTypeUnique :: TlsChannelBindingType

-- | <a>`tls-server-end-point`</a> binding type
TlsChannelBindingTypeServerEndPoint :: TlsChannelBindingType

-- | <a>`tls-exporter`</a> binding type. Since: 2.74
TlsChannelBindingTypeExporter :: TlsChannelBindingType

-- | Catch-all for unknown values
AnotherTlsChannelBindingType :: Int -> TlsChannelBindingType

-- | An error code used with <tt><i>G_TLS_ERROR</i></tt> in a <a>GError</a>
--   returned from a TLS-related routine.
--   
--   <i>Since: 2.28</i>
data TlsError

-- | No TLS provider is available
TlsErrorUnavailable :: TlsError

-- | Miscellaneous TLS error
TlsErrorMisc :: TlsError

-- | The certificate presented could not be parsed or failed validation.
TlsErrorBadCertificate :: TlsError

-- | The TLS handshake failed because the peer does not seem to be a TLS
--   server.
TlsErrorNotTls :: TlsError

-- | The TLS handshake failed because the peer's certificate was not
--   acceptable.
TlsErrorHandshake :: TlsError

-- | The TLS handshake failed because the server requested a client-side
--   certificate, but none was provided. See
--   <a>tlsConnectionSetCertificate</a>.
TlsErrorCertificateRequired :: TlsError

-- | The TLS connection was closed without proper notice, which may
--   indicate an attack. See <a>tlsConnectionSetRequireCloseNotify</a>.
TlsErrorEof :: TlsError

-- | The TLS handshake failed because the client sent the fallback SCSV,
--   indicating a protocol downgrade attack. Since: 2.60
TlsErrorInappropriateFallback :: TlsError

-- | The certificate failed to load because a password was incorrect.
--   Since: 2.72
TlsErrorBadCertificatePassword :: TlsError

-- | Catch-all for unknown values
AnotherTlsError :: Int -> TlsError

-- | Catch exceptions of type <a>TlsError</a>. This is a specialized
--   version of <a>catchGErrorJustDomain</a>.
catchTlsError :: IO a -> (TlsError -> GErrorMessage -> IO a) -> IO a

-- | Handle exceptions of type <a>TlsError</a>. This is a specialized
--   version of <a>handleGErrorJustDomain</a>.
handleTlsError :: (TlsError -> GErrorMessage -> IO a) -> IO a -> IO a

-- | <a>TlsInteractionResult</a> is returned by various functions in
--   <a>TlsInteraction</a> when finishing an interaction request.
--   
--   <i>Since: 2.30</i>
data TlsInteractionResult

-- | The interaction was unhandled (i.e. not implemented).
TlsInteractionResultUnhandled :: TlsInteractionResult

-- | The interaction completed, and resulting data is available.
TlsInteractionResultHandled :: TlsInteractionResult

-- | The interaction has failed, or was cancelled. and the operation should
--   be aborted.
TlsInteractionResultFailed :: TlsInteractionResult

-- | Catch-all for unknown values
AnotherTlsInteractionResult :: Int -> TlsInteractionResult

-- | The TLS or DTLS protocol version used by a <a>TlsConnection</a> or
--   <a>DtlsConnection</a>. The integer values of these versions are
--   sequential to ensure newer known protocol versions compare greater
--   than older known versions. Any known DTLS protocol version will
--   compare greater than any SSL or TLS protocol version. The protocol
--   version may be <a>TlsProtocolVersionUnknown</a> if the TLS backend
--   supports a newer protocol version that GLib does not yet know about.
--   This means that it's possible for an unknown DTLS protocol version to
--   compare less than the TLS protocol versions.
--   
--   <i>Since: 2.70</i>
data TlsProtocolVersion

-- | No protocol version or unknown protocol version
TlsProtocolVersionUnknown :: TlsProtocolVersion

-- | SSL 3.0, which is insecure and should not be used
TlsProtocolVersionSsl30 :: TlsProtocolVersion

-- | TLS 1.0, which is insecure and should not be used
TlsProtocolVersionTls10 :: TlsProtocolVersion

-- | TLS 1.1, which is insecure and should not be used
TlsProtocolVersionTls11 :: TlsProtocolVersion

-- | TLS 1.2, defined by <a>RFC 5246</a>
TlsProtocolVersionTls12 :: TlsProtocolVersion

-- | TLS 1.3, defined by <a>RFC 8446</a>
TlsProtocolVersionTls13 :: TlsProtocolVersion

-- | DTLS 1.0, which is insecure and should not be used
TlsProtocolVersionDtls10 :: TlsProtocolVersion

-- | DTLS 1.2, defined by <a>RFC 6347</a>
TlsProtocolVersionDtls12 :: TlsProtocolVersion

-- | Catch-all for unknown values
AnotherTlsProtocolVersion :: Int -> TlsProtocolVersion

-- | When to allow rehandshaking. See
--   <a>tlsConnectionSetRehandshakeMode</a>.
--   
--   <i>Since: 2.28</i>

-- | <i>Deprecated: (Since version 2.60.)Changing the rehandshake mode is
--   no longerrequired for compatibility. Also, rehandshaking has been
--   removedfrom the TLS protocol in TLS 1.3.</i>
data TlsRehandshakeMode

-- | Never allow rehandshaking
TlsRehandshakeModeNever :: TlsRehandshakeMode

-- | Allow safe rehandshaking only
TlsRehandshakeModeSafely :: TlsRehandshakeMode

-- | Allow unsafe rehandshaking
TlsRehandshakeModeUnsafely :: TlsRehandshakeMode

-- | Catch-all for unknown values
AnotherTlsRehandshakeMode :: Int -> TlsRehandshakeMode

-- | The type of name used by a <a>UnixSocketAddress</a>.
--   <a>UnixSocketAddressTypePath</a> indicates a traditional unix domain
--   socket bound to a filesystem path.
--   <a>UnixSocketAddressTypeAnonymous</a> indicates a socket not bound to
--   any name (eg, a client-side socket, or a socket created with
--   <tt><i>socketpair()</i></tt>).
--   
--   For abstract sockets, there are two incompatible ways of naming them;
--   the man pages suggest using the entire <tt>struct sockaddr_un</tt> as
--   the name, padding the unused parts of the <tt><i>sun_path</i></tt>
--   field with zeroes; this corresponds to
--   <a>UnixSocketAddressTypeAbstractPadded</a>. However, many programs
--   instead just use a portion of <tt><i>sun_path</i></tt>, and pass an
--   appropriate smaller length to <tt><i>bind()</i></tt> or
--   <tt><i>connect()</i></tt>. This is
--   <a>UnixSocketAddressTypeAbstract</a>.
--   
--   <i>Since: 2.26</i>
data UnixSocketAddressType

-- | invalid
UnixSocketAddressTypeInvalid :: UnixSocketAddressType

-- | anonymous
UnixSocketAddressTypeAnonymous :: UnixSocketAddressType

-- | a filesystem path
UnixSocketAddressTypePath :: UnixSocketAddressType

-- | an abstract name
UnixSocketAddressTypeAbstract :: UnixSocketAddressType

-- | an abstract name, 0-padded to the full length of a unix socket name
UnixSocketAddressTypeAbstractPadded :: UnixSocketAddressType

-- | Catch-all for unknown values
AnotherUnixSocketAddressType :: Int -> UnixSocketAddressType

-- | Used to select the type of data format to use for
--   <a>ZlibDecompressor</a> and <a>ZlibCompressor</a>.
--   
--   <i>Since: 2.24</i>
data ZlibCompressorFormat

-- | deflate compression with zlib header
ZlibCompressorFormatZlib :: ZlibCompressorFormat

-- | gzip file format
ZlibCompressorFormatGzip :: ZlibCompressorFormat

-- | deflate compression with no header
ZlibCompressorFormatRaw :: ZlibCompressorFormat

-- | Catch-all for unknown values
AnotherZlibCompressorFormat :: Int -> ZlibCompressorFormat
instance Data.GI.Base.BasicTypes.BoxedEnum GI.Gio.Enums.BusType
instance Data.GI.Base.BasicTypes.BoxedEnum GI.Gio.Enums.ConverterResult
instance Data.GI.Base.BasicTypes.BoxedEnum GI.Gio.Enums.CredentialsType
instance Data.GI.Base.BasicTypes.BoxedEnum GI.Gio.Enums.DBusError
instance Data.GI.Base.BasicTypes.BoxedEnum GI.Gio.Enums.DBusMessageByteOrder
instance Data.GI.Base.BasicTypes.BoxedEnum GI.Gio.Enums.DBusMessageHeaderField
instance Data.GI.Base.BasicTypes.BoxedEnum GI.Gio.Enums.DBusMessageType
instance Data.GI.Base.BasicTypes.BoxedEnum GI.Gio.Enums.DataStreamByteOrder
instance Data.GI.Base.BasicTypes.BoxedEnum GI.Gio.Enums.DataStreamNewlineType
instance Data.GI.Base.BasicTypes.BoxedEnum GI.Gio.Enums.DriveStartStopType
instance Data.GI.Base.BasicTypes.BoxedEnum GI.Gio.Enums.EmblemOrigin
instance Data.GI.Base.BasicTypes.BoxedEnum GI.Gio.Enums.FileAttributeStatus
instance Data.GI.Base.BasicTypes.BoxedEnum GI.Gio.Enums.FileAttributeType
instance Data.GI.Base.BasicTypes.BoxedEnum GI.Gio.Enums.FileMonitorEvent
instance Data.GI.Base.BasicTypes.BoxedEnum GI.Gio.Enums.FileType
instance Data.GI.Base.BasicTypes.BoxedEnum GI.Gio.Enums.FilesystemPreviewType
instance Data.GI.Base.BasicTypes.BoxedEnum GI.Gio.Enums.IOErrorEnum
instance Data.GI.Base.BasicTypes.BoxedEnum GI.Gio.Enums.MemoryMonitorWarningLevel
instance Data.GI.Base.BasicTypes.BoxedEnum GI.Gio.Enums.MountOperationResult
instance Data.GI.Base.BasicTypes.BoxedEnum GI.Gio.Enums.NetworkConnectivity
instance Data.GI.Base.BasicTypes.BoxedEnum GI.Gio.Enums.NotificationPriority
instance Data.GI.Base.BasicTypes.BoxedEnum GI.Gio.Enums.PasswordSave
instance Data.GI.Base.BasicTypes.BoxedEnum GI.Gio.Enums.PollableReturn
instance Data.GI.Base.BasicTypes.BoxedEnum GI.Gio.Enums.ResolverError
instance Data.GI.Base.BasicTypes.BoxedEnum GI.Gio.Enums.ResolverRecordType
instance Data.GI.Base.BasicTypes.BoxedEnum GI.Gio.Enums.ResourceError
instance Data.GI.Base.BasicTypes.BoxedEnum GI.Gio.Enums.SocketClientEvent
instance Data.GI.Base.BasicTypes.BoxedEnum GI.Gio.Enums.SocketFamily
instance Data.GI.Base.BasicTypes.BoxedEnum GI.Gio.Enums.SocketListenerEvent
instance Data.GI.Base.BasicTypes.BoxedEnum GI.Gio.Enums.SocketProtocol
instance Data.GI.Base.BasicTypes.BoxedEnum GI.Gio.Enums.SocketType
instance Data.GI.Base.BasicTypes.BoxedEnum GI.Gio.Enums.TlsAuthenticationMode
instance Data.GI.Base.BasicTypes.BoxedEnum GI.Gio.Enums.TlsChannelBindingError
instance Data.GI.Base.BasicTypes.BoxedEnum GI.Gio.Enums.TlsChannelBindingType
instance Data.GI.Base.BasicTypes.BoxedEnum GI.Gio.Enums.TlsError
instance Data.GI.Base.BasicTypes.BoxedEnum GI.Gio.Enums.TlsInteractionResult
instance Data.GI.Base.BasicTypes.BoxedEnum GI.Gio.Enums.TlsProtocolVersion
instance Data.GI.Base.BasicTypes.BoxedEnum GI.Gio.Enums.TlsRehandshakeMode
instance Data.GI.Base.BasicTypes.BoxedEnum GI.Gio.Enums.UnixSocketAddressType
instance Data.GI.Base.BasicTypes.BoxedEnum GI.Gio.Enums.ZlibCompressorFormat
instance GHC.Internal.Enum.Enum GI.Gio.Enums.BusType
instance GHC.Internal.Enum.Enum GI.Gio.Enums.ConverterResult
instance GHC.Internal.Enum.Enum GI.Gio.Enums.CredentialsType
instance GHC.Internal.Enum.Enum GI.Gio.Enums.DBusError
instance GHC.Internal.Enum.Enum GI.Gio.Enums.DBusMessageByteOrder
instance GHC.Internal.Enum.Enum GI.Gio.Enums.DBusMessageHeaderField
instance GHC.Internal.Enum.Enum GI.Gio.Enums.DBusMessageType
instance GHC.Internal.Enum.Enum GI.Gio.Enums.DataStreamByteOrder
instance GHC.Internal.Enum.Enum GI.Gio.Enums.DataStreamNewlineType
instance GHC.Internal.Enum.Enum GI.Gio.Enums.DriveStartStopType
instance GHC.Internal.Enum.Enum GI.Gio.Enums.EmblemOrigin
instance GHC.Internal.Enum.Enum GI.Gio.Enums.FileAttributeStatus
instance GHC.Internal.Enum.Enum GI.Gio.Enums.FileAttributeType
instance GHC.Internal.Enum.Enum GI.Gio.Enums.FileMonitorEvent
instance GHC.Internal.Enum.Enum GI.Gio.Enums.FileType
instance GHC.Internal.Enum.Enum GI.Gio.Enums.FilesystemPreviewType
instance GHC.Internal.Enum.Enum GI.Gio.Enums.IOErrorEnum
instance GHC.Internal.Enum.Enum GI.Gio.Enums.MemoryMonitorWarningLevel
instance GHC.Internal.Enum.Enum GI.Gio.Enums.MountOperationResult
instance GHC.Internal.Enum.Enum GI.Gio.Enums.NetworkConnectivity
instance GHC.Internal.Enum.Enum GI.Gio.Enums.NotificationPriority
instance GHC.Internal.Enum.Enum GI.Gio.Enums.PasswordSave
instance GHC.Internal.Enum.Enum GI.Gio.Enums.PollableReturn
instance GHC.Internal.Enum.Enum GI.Gio.Enums.ResolverError
instance GHC.Internal.Enum.Enum GI.Gio.Enums.ResolverRecordType
instance GHC.Internal.Enum.Enum GI.Gio.Enums.ResourceError
instance GHC.Internal.Enum.Enum GI.Gio.Enums.SocketClientEvent
instance GHC.Internal.Enum.Enum GI.Gio.Enums.SocketFamily
instance GHC.Internal.Enum.Enum GI.Gio.Enums.SocketListenerEvent
instance GHC.Internal.Enum.Enum GI.Gio.Enums.SocketProtocol
instance GHC.Internal.Enum.Enum GI.Gio.Enums.SocketType
instance GHC.Internal.Enum.Enum GI.Gio.Enums.TlsAuthenticationMode
instance GHC.Internal.Enum.Enum GI.Gio.Enums.TlsChannelBindingError
instance GHC.Internal.Enum.Enum GI.Gio.Enums.TlsChannelBindingType
instance GHC.Internal.Enum.Enum GI.Gio.Enums.TlsError
instance GHC.Internal.Enum.Enum GI.Gio.Enums.TlsInteractionResult
instance GHC.Internal.Enum.Enum GI.Gio.Enums.TlsProtocolVersion
instance GHC.Internal.Enum.Enum GI.Gio.Enums.TlsRehandshakeMode
instance GHC.Internal.Enum.Enum GI.Gio.Enums.UnixSocketAddressType
instance GHC.Internal.Enum.Enum GI.Gio.Enums.ZlibCompressorFormat
instance GHC.Classes.Eq GI.Gio.Enums.BusType
instance GHC.Classes.Eq GI.Gio.Enums.ConverterResult
instance GHC.Classes.Eq GI.Gio.Enums.CredentialsType
instance GHC.Classes.Eq GI.Gio.Enums.DBusError
instance GHC.Classes.Eq GI.Gio.Enums.DBusMessageByteOrder
instance GHC.Classes.Eq GI.Gio.Enums.DBusMessageHeaderField
instance GHC.Classes.Eq GI.Gio.Enums.DBusMessageType
instance GHC.Classes.Eq GI.Gio.Enums.DataStreamByteOrder
instance GHC.Classes.Eq GI.Gio.Enums.DataStreamNewlineType
instance GHC.Classes.Eq GI.Gio.Enums.DriveStartStopType
instance GHC.Classes.Eq GI.Gio.Enums.EmblemOrigin
instance GHC.Classes.Eq GI.Gio.Enums.FileAttributeStatus
instance GHC.Classes.Eq GI.Gio.Enums.FileAttributeType
instance GHC.Classes.Eq GI.Gio.Enums.FileMonitorEvent
instance GHC.Classes.Eq GI.Gio.Enums.FileType
instance GHC.Classes.Eq GI.Gio.Enums.FilesystemPreviewType
instance GHC.Classes.Eq GI.Gio.Enums.IOErrorEnum
instance GHC.Classes.Eq GI.Gio.Enums.MemoryMonitorWarningLevel
instance GHC.Classes.Eq GI.Gio.Enums.MountOperationResult
instance GHC.Classes.Eq GI.Gio.Enums.NetworkConnectivity
instance GHC.Classes.Eq GI.Gio.Enums.NotificationPriority
instance GHC.Classes.Eq GI.Gio.Enums.PasswordSave
instance GHC.Classes.Eq GI.Gio.Enums.PollableReturn
instance GHC.Classes.Eq GI.Gio.Enums.ResolverError
instance GHC.Classes.Eq GI.Gio.Enums.ResolverRecordType
instance GHC.Classes.Eq GI.Gio.Enums.ResourceError
instance GHC.Classes.Eq GI.Gio.Enums.SocketClientEvent
instance GHC.Classes.Eq GI.Gio.Enums.SocketFamily
instance GHC.Classes.Eq GI.Gio.Enums.SocketListenerEvent
instance GHC.Classes.Eq GI.Gio.Enums.SocketProtocol
instance GHC.Classes.Eq GI.Gio.Enums.SocketType
instance GHC.Classes.Eq GI.Gio.Enums.TlsAuthenticationMode
instance GHC.Classes.Eq GI.Gio.Enums.TlsChannelBindingError
instance GHC.Classes.Eq GI.Gio.Enums.TlsChannelBindingType
instance GHC.Classes.Eq GI.Gio.Enums.TlsError
instance GHC.Classes.Eq GI.Gio.Enums.TlsInteractionResult
instance GHC.Classes.Eq GI.Gio.Enums.TlsProtocolVersion
instance GHC.Classes.Eq GI.Gio.Enums.TlsRehandshakeMode
instance GHC.Classes.Eq GI.Gio.Enums.UnixSocketAddressType
instance GHC.Classes.Eq GI.Gio.Enums.ZlibCompressorFormat
instance Data.GI.Base.GError.GErrorClass GI.Gio.Enums.DBusError
instance Data.GI.Base.GError.GErrorClass GI.Gio.Enums.IOErrorEnum
instance Data.GI.Base.GError.GErrorClass GI.Gio.Enums.ResolverError
instance Data.GI.Base.GError.GErrorClass GI.Gio.Enums.ResourceError
instance Data.GI.Base.GError.GErrorClass GI.Gio.Enums.TlsChannelBindingError
instance Data.GI.Base.GError.GErrorClass GI.Gio.Enums.TlsError
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Enums.BusType
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Enums.ConverterResult
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Enums.CredentialsType
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Enums.DBusError
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Enums.DBusMessageByteOrder
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Enums.DBusMessageHeaderField
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Enums.DBusMessageType
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Enums.DataStreamByteOrder
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Enums.DataStreamNewlineType
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Enums.DriveStartStopType
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Enums.EmblemOrigin
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Enums.FileAttributeStatus
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Enums.FileAttributeType
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Enums.FileMonitorEvent
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Enums.FileType
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Enums.FilesystemPreviewType
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Enums.IOErrorEnum
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Enums.MemoryMonitorWarningLevel
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Enums.MountOperationResult
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Enums.NetworkConnectivity
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Enums.NotificationPriority
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Enums.PasswordSave
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Enums.PollableReturn
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Enums.ResolverError
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Enums.ResolverRecordType
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Enums.ResourceError
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Enums.SocketClientEvent
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Enums.SocketFamily
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Enums.SocketListenerEvent
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Enums.SocketProtocol
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Enums.SocketType
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Enums.TlsAuthenticationMode
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Enums.TlsChannelBindingError
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Enums.TlsChannelBindingType
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Enums.TlsError
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Enums.TlsInteractionResult
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Enums.TlsProtocolVersion
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Enums.TlsRehandshakeMode
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Enums.UnixSocketAddressType
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Enums.ZlibCompressorFormat
instance GHC.Classes.Ord GI.Gio.Enums.BusType
instance GHC.Classes.Ord GI.Gio.Enums.ConverterResult
instance GHC.Classes.Ord GI.Gio.Enums.CredentialsType
instance GHC.Classes.Ord GI.Gio.Enums.DBusError
instance GHC.Classes.Ord GI.Gio.Enums.DBusMessageByteOrder
instance GHC.Classes.Ord GI.Gio.Enums.DBusMessageHeaderField
instance GHC.Classes.Ord GI.Gio.Enums.DBusMessageType
instance GHC.Classes.Ord GI.Gio.Enums.DataStreamByteOrder
instance GHC.Classes.Ord GI.Gio.Enums.DataStreamNewlineType
instance GHC.Classes.Ord GI.Gio.Enums.DriveStartStopType
instance GHC.Classes.Ord GI.Gio.Enums.EmblemOrigin
instance GHC.Classes.Ord GI.Gio.Enums.FileAttributeStatus
instance GHC.Classes.Ord GI.Gio.Enums.FileAttributeType
instance GHC.Classes.Ord GI.Gio.Enums.FileMonitorEvent
instance GHC.Classes.Ord GI.Gio.Enums.FileType
instance GHC.Classes.Ord GI.Gio.Enums.FilesystemPreviewType
instance GHC.Classes.Ord GI.Gio.Enums.IOErrorEnum
instance GHC.Classes.Ord GI.Gio.Enums.MemoryMonitorWarningLevel
instance GHC.Classes.Ord GI.Gio.Enums.MountOperationResult
instance GHC.Classes.Ord GI.Gio.Enums.NetworkConnectivity
instance GHC.Classes.Ord GI.Gio.Enums.NotificationPriority
instance GHC.Classes.Ord GI.Gio.Enums.PasswordSave
instance GHC.Classes.Ord GI.Gio.Enums.PollableReturn
instance GHC.Classes.Ord GI.Gio.Enums.ResolverError
instance GHC.Classes.Ord GI.Gio.Enums.ResolverRecordType
instance GHC.Classes.Ord GI.Gio.Enums.ResourceError
instance GHC.Classes.Ord GI.Gio.Enums.SocketClientEvent
instance GHC.Classes.Ord GI.Gio.Enums.SocketFamily
instance GHC.Classes.Ord GI.Gio.Enums.SocketListenerEvent
instance GHC.Classes.Ord GI.Gio.Enums.SocketProtocol
instance GHC.Classes.Ord GI.Gio.Enums.SocketType
instance GHC.Classes.Ord GI.Gio.Enums.TlsAuthenticationMode
instance GHC.Classes.Ord GI.Gio.Enums.TlsChannelBindingError
instance GHC.Classes.Ord GI.Gio.Enums.TlsChannelBindingType
instance GHC.Classes.Ord GI.Gio.Enums.TlsError
instance GHC.Classes.Ord GI.Gio.Enums.TlsInteractionResult
instance GHC.Classes.Ord GI.Gio.Enums.TlsProtocolVersion
instance GHC.Classes.Ord GI.Gio.Enums.TlsRehandshakeMode
instance GHC.Classes.Ord GI.Gio.Enums.UnixSocketAddressType
instance GHC.Classes.Ord GI.Gio.Enums.ZlibCompressorFormat
instance GHC.Internal.Show.Show GI.Gio.Enums.BusType
instance GHC.Internal.Show.Show GI.Gio.Enums.ConverterResult
instance GHC.Internal.Show.Show GI.Gio.Enums.CredentialsType
instance GHC.Internal.Show.Show GI.Gio.Enums.DBusError
instance GHC.Internal.Show.Show GI.Gio.Enums.DBusMessageByteOrder
instance GHC.Internal.Show.Show GI.Gio.Enums.DBusMessageHeaderField
instance GHC.Internal.Show.Show GI.Gio.Enums.DBusMessageType
instance GHC.Internal.Show.Show GI.Gio.Enums.DataStreamByteOrder
instance GHC.Internal.Show.Show GI.Gio.Enums.DataStreamNewlineType
instance GHC.Internal.Show.Show GI.Gio.Enums.DriveStartStopType
instance GHC.Internal.Show.Show GI.Gio.Enums.EmblemOrigin
instance GHC.Internal.Show.Show GI.Gio.Enums.FileAttributeStatus
instance GHC.Internal.Show.Show GI.Gio.Enums.FileAttributeType
instance GHC.Internal.Show.Show GI.Gio.Enums.FileMonitorEvent
instance GHC.Internal.Show.Show GI.Gio.Enums.FileType
instance GHC.Internal.Show.Show GI.Gio.Enums.FilesystemPreviewType
instance GHC.Internal.Show.Show GI.Gio.Enums.IOErrorEnum
instance GHC.Internal.Show.Show GI.Gio.Enums.MemoryMonitorWarningLevel
instance GHC.Internal.Show.Show GI.Gio.Enums.MountOperationResult
instance GHC.Internal.Show.Show GI.Gio.Enums.NetworkConnectivity
instance GHC.Internal.Show.Show GI.Gio.Enums.NotificationPriority
instance GHC.Internal.Show.Show GI.Gio.Enums.PasswordSave
instance GHC.Internal.Show.Show GI.Gio.Enums.PollableReturn
instance GHC.Internal.Show.Show GI.Gio.Enums.ResolverError
instance GHC.Internal.Show.Show GI.Gio.Enums.ResolverRecordType
instance GHC.Internal.Show.Show GI.Gio.Enums.ResourceError
instance GHC.Internal.Show.Show GI.Gio.Enums.SocketClientEvent
instance GHC.Internal.Show.Show GI.Gio.Enums.SocketFamily
instance GHC.Internal.Show.Show GI.Gio.Enums.SocketListenerEvent
instance GHC.Internal.Show.Show GI.Gio.Enums.SocketProtocol
instance GHC.Internal.Show.Show GI.Gio.Enums.SocketType
instance GHC.Internal.Show.Show GI.Gio.Enums.TlsAuthenticationMode
instance GHC.Internal.Show.Show GI.Gio.Enums.TlsChannelBindingError
instance GHC.Internal.Show.Show GI.Gio.Enums.TlsChannelBindingType
instance GHC.Internal.Show.Show GI.Gio.Enums.TlsError
instance GHC.Internal.Show.Show GI.Gio.Enums.TlsInteractionResult
instance GHC.Internal.Show.Show GI.Gio.Enums.TlsProtocolVersion
instance GHC.Internal.Show.Show GI.Gio.Enums.TlsRehandshakeMode
instance GHC.Internal.Show.Show GI.Gio.Enums.UnixSocketAddressType
instance GHC.Internal.Show.Show GI.Gio.Enums.ZlibCompressorFormat
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Enums.BusType
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Enums.ConverterResult
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Enums.CredentialsType
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Enums.DBusError
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Enums.DBusMessageByteOrder
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Enums.DBusMessageHeaderField
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Enums.DBusMessageType
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Enums.DataStreamByteOrder
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Enums.DataStreamNewlineType
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Enums.DriveStartStopType
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Enums.EmblemOrigin
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Enums.FileAttributeStatus
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Enums.FileAttributeType
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Enums.FileMonitorEvent
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Enums.FileType
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Enums.FilesystemPreviewType
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Enums.IOErrorEnum
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Enums.MemoryMonitorWarningLevel
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Enums.MountOperationResult
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Enums.NetworkConnectivity
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Enums.NotificationPriority
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Enums.PasswordSave
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Enums.PollableReturn
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Enums.ResolverError
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Enums.ResolverRecordType
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Enums.ResourceError
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Enums.SocketClientEvent
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Enums.SocketFamily
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Enums.SocketListenerEvent
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Enums.SocketProtocol
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Enums.SocketType
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Enums.TlsAuthenticationMode
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Enums.TlsChannelBindingError
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Enums.TlsChannelBindingType
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Enums.TlsError
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Enums.TlsInteractionResult
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Enums.TlsProtocolVersion
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Enums.TlsRehandshakeMode
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Enums.UnixSocketAddressType
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Enums.ZlibCompressorFormat


module GI.Gio.Flags

-- | Flags used when creating a <a>AppInfo</a>.
data AppInfoCreateFlags

-- | No flags.
AppInfoCreateFlagsNone :: AppInfoCreateFlags

-- | Application opens in a terminal window.
AppInfoCreateFlagsNeedsTerminal :: AppInfoCreateFlags

-- | Application supports URI arguments.
AppInfoCreateFlagsSupportsUris :: AppInfoCreateFlags

-- | Application supports startup notification. Since 2.26
AppInfoCreateFlagsSupportsStartupNotification :: AppInfoCreateFlags

-- | Catch-all for unknown values
AnotherAppInfoCreateFlags :: Int -> AppInfoCreateFlags

-- | Flags used to define the behaviour of a <a>Application</a>.
--   
--   <i>Since: 2.28</i>
data ApplicationFlags

-- | Default flags.
ApplicationFlagsFlagsNone :: ApplicationFlags

-- | Default flags.
--   
--   <i>Since: 2.74</i>
ApplicationFlagsDefaultFlags :: ApplicationFlags

-- | Run as a service. In this mode, registration fails if the service is
--   already running, and the application will initially wait up to 10
--   seconds for an initial activation message to arrive.
ApplicationFlagsIsService :: ApplicationFlags

-- | Don't try to become the primary instance.
ApplicationFlagsIsLauncher :: ApplicationFlags

-- | This application handles opening files (in the primary instance). Note
--   that this flag only affects the default implementation of
--   <tt><i>local_command_line()</i></tt>, and has no effect if
--   <a>ApplicationFlagsHandlesCommandLine</a> is given. See
--   <a>applicationRun</a> for details.
ApplicationFlagsHandlesOpen :: ApplicationFlags

-- | This application handles command line arguments (in the primary
--   instance). Note that this flag only affect the default implementation
--   of <tt><i>local_command_line()</i></tt>. See <a>applicationRun</a> for
--   details.
ApplicationFlagsHandlesCommandLine :: ApplicationFlags

-- | Send the environment of the launching process to the primary instance.
--   Set this flag if your application is expected to behave differently
--   depending on certain environment variables. For instance, an editor
--   might be expected to use the <tt>GIT_COMMITTER_NAME</tt> environment
--   variable when editing a git commit message. The environment is
--   available to the <a>Application::commandLine</a> signal handler, via
--   <a>applicationCommandLineGetenv</a>.
ApplicationFlagsSendEnvironment :: ApplicationFlags

-- | Make no attempts to do any of the typical single-instance application
--   negotiation, even if the application ID is given. The application
--   neither attempts to become the owner of the application ID nor does it
--   check if an existing owner already exists. Everything occurs in the
--   local process. Since: 2.30.
ApplicationFlagsNonUnique :: ApplicationFlags

-- | Allow users to override the application ID from the command line with
--   <tt>--gapplication-app-id</tt>. Since: 2.48
ApplicationFlagsCanOverrideAppId :: ApplicationFlags

-- | Allow another instance to take over the bus name. Since: 2.60
ApplicationFlagsAllowReplacement :: ApplicationFlags

-- | Take over from another instance. This flag is usually set by passing
--   <tt>--gapplication-replace</tt> on the commandline. Since: 2.60
ApplicationFlagsReplace :: ApplicationFlags

-- | Catch-all for unknown values
AnotherApplicationFlags :: Int -> ApplicationFlags

-- | <a>AskPasswordFlags</a> are used to request specific information from
--   the user, or to notify the user of their choices in an authentication
--   situation.
data AskPasswordFlags

-- | operation requires a password.
AskPasswordFlagsNeedPassword :: AskPasswordFlags

-- | operation requires a username.
AskPasswordFlagsNeedUsername :: AskPasswordFlags

-- | operation requires a domain.
AskPasswordFlagsNeedDomain :: AskPasswordFlags

-- | operation supports saving settings.
AskPasswordFlagsSavingSupported :: AskPasswordFlags

-- | operation supports anonymous users.
AskPasswordFlagsAnonymousSupported :: AskPasswordFlags

-- | operation takes TCRYPT parameters (Since: 2.58)
AskPasswordFlagsTcrypt :: AskPasswordFlags

-- | Catch-all for unknown values
AnotherAskPasswordFlags :: Int -> AskPasswordFlags

-- | Flags used in <tt><i>g_bus_own_name()</i></tt>.
--   
--   <i>Since: 2.26</i>
data BusNameOwnerFlags

-- | No flags set.
BusNameOwnerFlagsNone :: BusNameOwnerFlags

-- | Allow another message bus connection to claim the name.
BusNameOwnerFlagsAllowReplacement :: BusNameOwnerFlags

-- | If another message bus connection owns the name and have specified
--   <a>BusNameOwnerFlagsAllowReplacement</a>, then take the name from the
--   other connection.
BusNameOwnerFlagsReplace :: BusNameOwnerFlags

-- | If another message bus connection owns the name, immediately return an
--   error from <a>busOwnName</a> rather than entering the waiting queue
--   for that name.
--   
--   <i>Since: 2.54</i>
BusNameOwnerFlagsDoNotQueue :: BusNameOwnerFlags

-- | Catch-all for unknown values
AnotherBusNameOwnerFlags :: Int -> BusNameOwnerFlags

-- | Flags used in <tt><i>g_bus_watch_name()</i></tt>.
--   
--   <i>Since: 2.26</i>
data BusNameWatcherFlags

-- | No flags set.
BusNameWatcherFlagsNone :: BusNameWatcherFlags

-- | If no-one owns the name when beginning to watch the name, ask the bus
--   to launch an owner for the name.
BusNameWatcherFlagsAutoStart :: BusNameWatcherFlags

-- | Catch-all for unknown values
AnotherBusNameWatcherFlags :: Int -> BusNameWatcherFlags

-- | Flags used when calling a <a>converterConvert</a>.
--   
--   <i>Since: 2.24</i>
data ConverterFlags

-- | No flags.
ConverterFlagsNone :: ConverterFlags

-- | At end of input data
ConverterFlagsInputAtEnd :: ConverterFlags

-- | Flush data
ConverterFlagsFlush :: ConverterFlags

-- | Catch-all for unknown values
AnotherConverterFlags :: Int -> ConverterFlags

-- | Flags used in <a>dBusConnectionCall</a> and similar APIs.
--   
--   <i>Since: 2.26</i>
data DBusCallFlags

-- | No flags set.
DBusCallFlagsNone :: DBusCallFlags

-- | The bus must not launch an owner for the destination name in response
--   to this method invocation.
DBusCallFlagsNoAutoStart :: DBusCallFlags

-- | the caller is prepared to wait for interactive authorization. Since
--   2.46.
DBusCallFlagsAllowInteractiveAuthorization :: DBusCallFlags

-- | Catch-all for unknown values
AnotherDBusCallFlags :: Int -> DBusCallFlags

-- | Capabilities negotiated with the remote peer.
--   
--   <i>Since: 2.26</i>
data DBusCapabilityFlags

-- | No flags set.
DBusCapabilityFlagsNone :: DBusCapabilityFlags

-- | The connection supports exchanging UNIX file descriptors with the
--   remote peer.
DBusCapabilityFlagsUnixFdPassing :: DBusCapabilityFlags

-- | Catch-all for unknown values
AnotherDBusCapabilityFlags :: Int -> DBusCapabilityFlags

-- | Flags used when creating a new <a>DBusConnection</a>.
--   
--   <i>Since: 2.26</i>
data DBusConnectionFlags

-- | No flags set.
DBusConnectionFlagsNone :: DBusConnectionFlags

-- | Perform authentication against server.
DBusConnectionFlagsAuthenticationClient :: DBusConnectionFlags

-- | Perform authentication against client.
DBusConnectionFlagsAuthenticationServer :: DBusConnectionFlags

-- | When authenticating as a server, allow the anonymous authentication
--   method.
DBusConnectionFlagsAuthenticationAllowAnonymous :: DBusConnectionFlags

-- | Pass this flag if connecting to a peer that is a message bus. This
--   means that the <tt><i>Hello()</i></tt> method will be invoked as part
--   of the connection setup.
DBusConnectionFlagsMessageBusConnection :: DBusConnectionFlags

-- | If set, processing of D-Bus messages is delayed until
--   <a>dBusConnectionStartMessageProcessing</a> is called.
DBusConnectionFlagsDelayMessageProcessing :: DBusConnectionFlags

-- | When authenticating as a server, require the UID of the peer to be the
--   same as the UID of the server. (Since: 2.68)
DBusConnectionFlagsAuthenticationRequireSameUser :: DBusConnectionFlags

-- | When authenticating, try to use protocols that work across a Linux
--   user namespace boundary, even if this reduces interoperability with
--   older D-Bus implementations. This currently affects client-side
--   <tt>EXTERNAL</tt> authentication, for which this flag makes
--   connections to a server in another user namespace succeed, but causes
--   a deadlock when connecting to a GDBus server older than 2.73.3. Since:
--   2.74
DBusConnectionFlagsCrossNamespace :: DBusConnectionFlags

-- | Catch-all for unknown values
AnotherDBusConnectionFlags :: Int -> DBusConnectionFlags

-- | Flags describing the behavior of a <a>DBusInterfaceSkeleton</a>
--   instance.
--   
--   <i>Since: 2.30</i>
data DBusInterfaceSkeletonFlags

-- | No flags set.
DBusInterfaceSkeletonFlagsNone :: DBusInterfaceSkeletonFlags

-- | Each method invocation is handled in a thread dedicated to the
--   invocation. This means that the method implementation can use blocking
--   IO without blocking any other part of the process. It also means that
--   the method implementation must use locking to access data structures
--   used by other threads.
DBusInterfaceSkeletonFlagsHandleMethodInvocationsInThread :: DBusInterfaceSkeletonFlags

-- | Catch-all for unknown values
AnotherDBusInterfaceSkeletonFlags :: Int -> DBusInterfaceSkeletonFlags

-- | Message flags used in <a>DBusMessage</a>.
--   
--   <i>Since: 2.26</i>
data DBusMessageFlags

-- | No flags set.
DBusMessageFlagsNone :: DBusMessageFlags

-- | A reply is not expected.
DBusMessageFlagsNoReplyExpected :: DBusMessageFlags

-- | The bus must not launch an owner for the destination name in response
--   to this message.
DBusMessageFlagsNoAutoStart :: DBusMessageFlags

-- | If set on a method call, this flag means that the caller is prepared
--   to wait for interactive authorization. Since 2.46.
DBusMessageFlagsAllowInteractiveAuthorization :: DBusMessageFlags

-- | Catch-all for unknown values
AnotherDBusMessageFlags :: Int -> DBusMessageFlags

-- | Flags used when constructing a <a>DBusObjectManagerClient</a>.
--   
--   <i>Since: 2.30</i>
data DBusObjectManagerClientFlags

-- | No flags set.
DBusObjectManagerClientFlagsNone :: DBusObjectManagerClientFlags

-- | If not set and the manager is for a well-known name, then request the
--   bus to launch an owner for the name if no-one owns the name. This flag
--   can only be used in managers for well-known names.
DBusObjectManagerClientFlagsDoNotAutoStart :: DBusObjectManagerClientFlags

-- | Catch-all for unknown values
AnotherDBusObjectManagerClientFlags :: Int -> DBusObjectManagerClientFlags

-- | Flags describing the access control of a D-Bus property.
--   
--   <i>Since: 2.26</i>
data DBusPropertyInfoFlags

-- | No flags set.
DBusPropertyInfoFlagsNone :: DBusPropertyInfoFlags

-- | Property is readable.
DBusPropertyInfoFlagsReadable :: DBusPropertyInfoFlags

-- | Property is writable.
DBusPropertyInfoFlagsWritable :: DBusPropertyInfoFlags

-- | Catch-all for unknown values
AnotherDBusPropertyInfoFlags :: Int -> DBusPropertyInfoFlags

-- | Flags used when constructing an instance of a <a>DBusProxy</a> derived
--   class.
--   
--   <i>Since: 2.26</i>
data DBusProxyFlags

-- | No flags set.
DBusProxyFlagsNone :: DBusProxyFlags

-- | Don't load properties.
DBusProxyFlagsDoNotLoadProperties :: DBusProxyFlags

-- | Don't connect to signals on the remote object.
DBusProxyFlagsDoNotConnectSignals :: DBusProxyFlags

-- | If the proxy is for a well-known name, do not ask the bus to launch an
--   owner during proxy initialization or a method call. This flag is only
--   meaningful in proxies for well-known names.
DBusProxyFlagsDoNotAutoStart :: DBusProxyFlags

-- | If set, the property value for any <b>invalidated property</b> will be
--   (asynchronously) retrieved upon receiving the
--   <a>`PropertiesChanged`</a> D-Bus signal and the property will not
--   cause emission of the <a>DBusProxy::gPropertiesChanged</a> signal.
--   When the value is received the <a>DBusProxy::gPropertiesChanged</a>
--   signal is emitted for the property along with the retrieved value.
--   Since 2.32.
DBusProxyFlagsGetInvalidatedProperties :: DBusProxyFlags

-- | If the proxy is for a well-known name, do not ask the bus to launch an
--   owner during proxy initialization, but allow it to be autostarted by a
--   method call. This flag is only meaningful in proxies for well-known
--   names, and only if <a>DBusProxyFlagsDoNotAutoStart</a> is not also
--   specified.
DBusProxyFlagsDoNotAutoStartAtConstruction :: DBusProxyFlags

-- | Don't actually send the AddMatch D-Bus call for this signal
--   subscription. This gives you more control over which match rules you
--   add (but you must add them manually). (Since: 2.72)
DBusProxyFlagsNoMatchRule :: DBusProxyFlags

-- | Catch-all for unknown values
AnotherDBusProxyFlags :: Int -> DBusProxyFlags

-- | Flags used when sending <tt><i>GDBusMessages</i></tt> on a
--   <a>DBusConnection</a>.
--   
--   <i>Since: 2.26</i>
data DBusSendMessageFlags

-- | No flags set.
DBusSendMessageFlagsNone :: DBusSendMessageFlags

-- | Do not automatically assign a serial number from the
--   <a>DBusConnection</a> object when sending a message.
DBusSendMessageFlagsPreserveSerial :: DBusSendMessageFlags

-- | Catch-all for unknown values
AnotherDBusSendMessageFlags :: Int -> DBusSendMessageFlags

-- | Flags used when creating a <a>DBusServer</a>.
--   
--   <i>Since: 2.26</i>
data DBusServerFlags

-- | No flags set.
DBusServerFlagsNone :: DBusServerFlags

-- | All <a>DBusServer::newConnection</a> signals will run in separated
--   dedicated threads (see signal for details).
DBusServerFlagsRunInThread :: DBusServerFlags

-- | Allow the anonymous authentication method.
DBusServerFlagsAuthenticationAllowAnonymous :: DBusServerFlags

-- | Require the UID of the peer to be the same as the UID of the server
--   when authenticating. (Since: 2.68)
DBusServerFlagsAuthenticationRequireSameUser :: DBusServerFlags

-- | Catch-all for unknown values
AnotherDBusServerFlags :: Int -> DBusServerFlags

-- | Flags used when subscribing to signals via
--   <a>dBusConnectionSignalSubscribe</a>.
--   
--   <i>Since: 2.26</i>
data DBusSignalFlags

-- | No flags set.
DBusSignalFlagsNone :: DBusSignalFlags

-- | Don't actually send the AddMatch D-Bus call for this signal
--   subscription. This gives you more control over which match rules you
--   add (but you must add them manually).
DBusSignalFlagsNoMatchRule :: DBusSignalFlags

-- | Match first arguments that contain a bus or interface name with the
--   given namespace.
DBusSignalFlagsMatchArg0Namespace :: DBusSignalFlags

-- | Match first arguments that contain an object path that is either
--   equivalent to the given path, or one of the paths is a subpath of the
--   other.
DBusSignalFlagsMatchArg0Path :: DBusSignalFlags

-- | Catch-all for unknown values
AnotherDBusSignalFlags :: Int -> DBusSignalFlags

-- | Flags passed to <a>dBusConnectionRegisterSubtree</a>.
--   
--   <i>Since: 2.26</i>
data DBusSubtreeFlags

-- | No flags set.
DBusSubtreeFlagsNone :: DBusSubtreeFlags

-- | Method calls to objects not in the enumerated range will still be
--   dispatched. This is useful if you want to dynamically spawn objects in
--   the subtree.
DBusSubtreeFlagsDispatchToUnenumeratedNodes :: DBusSubtreeFlags

-- | Catch-all for unknown values
AnotherDBusSubtreeFlags :: Int -> DBusSubtreeFlags

-- | Flags used when starting a drive.
--   
--   <i>Since: 2.22</i>
data DriveStartFlags

-- | No flags set.
DriveStartFlagsNone :: DriveStartFlags

-- | Catch-all for unknown values
AnotherDriveStartFlags :: Int -> DriveStartFlags

-- | Flags specifying the behaviour of an attribute.
data FileAttributeInfoFlags

-- | no flags set.
FileAttributeInfoFlagsNone :: FileAttributeInfoFlags

-- | copy the attribute values when the file is copied.
FileAttributeInfoFlagsCopyWithFile :: FileAttributeInfoFlags

-- | copy the attribute values when the file is moved.
FileAttributeInfoFlagsCopyWhenMoved :: FileAttributeInfoFlags

-- | Catch-all for unknown values
AnotherFileAttributeInfoFlags :: Int -> FileAttributeInfoFlags

-- | Flags used when copying or moving files.
data FileCopyFlags

-- | No flags set.
FileCopyFlagsNone :: FileCopyFlags

-- | Overwrite any existing files
FileCopyFlagsOverwrite :: FileCopyFlags

-- | Make a backup of any existing files.
FileCopyFlagsBackup :: FileCopyFlags

-- | Don't follow symlinks.
FileCopyFlagsNofollowSymlinks :: FileCopyFlags

-- | Copy all file metadata instead of just default set used for copy (see
--   <a>FileInfo</a>).
FileCopyFlagsAllMetadata :: FileCopyFlags

-- | Don't use copy and delete fallback if native move not supported.
FileCopyFlagsNoFallbackForMove :: FileCopyFlags

-- | Leaves target file with default perms, instead of setting the source
--   file perms.
FileCopyFlagsTargetDefaultPerms :: FileCopyFlags

-- | Use default modification timestamps instead of copying them from the
--   source file. Since 2.80
FileCopyFlagsTargetDefaultModifiedTime :: FileCopyFlags

-- | Catch-all for unknown values
AnotherFileCopyFlags :: Int -> FileCopyFlags

-- | Flags used when an operation may create a file.
data FileCreateFlags

-- | No flags set.
FileCreateFlagsNone :: FileCreateFlags

-- | Create a file that can only be accessed by the current user.
FileCreateFlagsPrivate :: FileCreateFlags

-- | Replace the destination as if it didn't exist before. Don't try to
--   keep any old permissions, replace instead of following links. This is
--   generally useful if you're doing a "copy over" rather than a "save new
--   version of" replace operation. You can think of it as "unlink
--   destination" before writing to it, although the implementation may not
--   be exactly like that. This flag can only be used with
--   <a>fileReplace</a> and its variants, including
--   <a>fileReplaceContents</a>. Since 2.20
FileCreateFlagsReplaceDestination :: FileCreateFlags

-- | Catch-all for unknown values
AnotherFileCreateFlags :: Int -> FileCreateFlags

-- | Flags that can be used with <a>fileMeasureDiskUsage</a>.
--   
--   <i>Since: 2.38</i>
data FileMeasureFlags

-- | No flags set.
FileMeasureFlagsNone :: FileMeasureFlags

-- | Report any error encountered while traversing the directory tree.
--   Normally errors are only reported for the toplevel file.
FileMeasureFlagsReportAnyError :: FileMeasureFlags

-- | Tally usage based on apparent file sizes. Normally, the block-size is
--   used, if available, as this is a more accurate representation of disk
--   space used. Compare with <tt>du --apparent-size</tt>. Since GLib 2.78.
--   and similarly to <tt>du</tt> since GNU Coreutils 9.2, this will ignore
--   the sizes of file types other than regular files and links, as the
--   sizes of other file types are not specified in a standard way.
FileMeasureFlagsApparentSize :: FileMeasureFlags

-- | Do not cross mount point boundaries. Compare with <tt>du -x</tt>.
FileMeasureFlagsNoXdev :: FileMeasureFlags

-- | Catch-all for unknown values
AnotherFileMeasureFlags :: Int -> FileMeasureFlags

-- | Flags used to set what a <a>FileMonitor</a> will watch for.
data FileMonitorFlags

-- | No flags set.
FileMonitorFlagsNone :: FileMonitorFlags

-- | Watch for mount events.
FileMonitorFlagsWatchMounts :: FileMonitorFlags

-- | Pair DELETED and CREATED events caused by file renames (moves) and
--   send a single G_FILE_MONITOR_EVENT_MOVED event instead (NB: not
--   supported on all backends; the default behaviour -without specifying
--   this flag- is to send single DELETED and CREATED events). Deprecated
--   since 2.46: use <a>FileMonitorFlagsWatchMoves</a> instead.
FileMonitorFlagsSendMoved :: FileMonitorFlags

-- | Watch for changes to the file made via another hard link. Since 2.36.
FileMonitorFlagsWatchHardLinks :: FileMonitorFlags

-- | Watch for rename operations on a monitored directory. This causes
--   <a>FileMonitorEventRenamed</a>, <a>FileMonitorEventMovedIn</a> and
--   <a>FileMonitorEventMovedOut</a> events to be emitted when possible.
--   Since: 2.46.
FileMonitorFlagsWatchMoves :: FileMonitorFlags

-- | Catch-all for unknown values
AnotherFileMonitorFlags :: Int -> FileMonitorFlags

-- | Flags used when querying a <a>FileInfo</a>.
data FileQueryInfoFlags

-- | No flags set.
FileQueryInfoFlagsNone :: FileQueryInfoFlags

-- | Don't follow symlinks.
FileQueryInfoFlagsNofollowSymlinks :: FileQueryInfoFlags

-- | Catch-all for unknown values
AnotherFileQueryInfoFlags :: Int -> FileQueryInfoFlags

-- | Flags for use with <tt><i>g_io_module_scope_new()</i></tt>.
--   
--   <i>Since: 2.30</i>
data IOModuleScopeFlags

-- | No module scan flags
IOModuleScopeFlagsNone :: IOModuleScopeFlags

-- | When using this scope to load or scan modules, automatically block a
--   modules which has the same base basename as previously loaded module.
IOModuleScopeFlagsBlockDuplicates :: IOModuleScopeFlags

-- | Catch-all for unknown values
AnotherIOModuleScopeFlags :: Int -> IOModuleScopeFlags

-- | GIOStreamSpliceFlags determine how streams should be spliced.
--   
--   <i>Since: 2.28</i>
data IOStreamSpliceFlags

-- | Do not close either stream.
IOStreamSpliceFlagsNone :: IOStreamSpliceFlags

-- | Close the first stream after the splice.
IOStreamSpliceFlagsCloseStream1 :: IOStreamSpliceFlags

-- | Close the second stream after the splice.
IOStreamSpliceFlagsCloseStream2 :: IOStreamSpliceFlags

-- | Wait for both splice operations to finish before calling the callback.
IOStreamSpliceFlagsWaitForBoth :: IOStreamSpliceFlags

-- | Catch-all for unknown values
AnotherIOStreamSpliceFlags :: Int -> IOStreamSpliceFlags

-- | Flags used when mounting a mount.
data MountMountFlags

-- | No flags set.
MountMountFlagsNone :: MountMountFlags

-- | Catch-all for unknown values
AnotherMountMountFlags :: Int -> MountMountFlags

-- | Flags used when an unmounting a mount.
data MountUnmountFlags

-- | No flags set.
MountUnmountFlagsNone :: MountUnmountFlags

-- | Unmount even if there are outstanding file operations on the mount.
MountUnmountFlagsForce :: MountUnmountFlags

-- | Catch-all for unknown values
AnotherMountUnmountFlags :: Int -> MountUnmountFlags

-- | GOutputStreamSpliceFlags determine how streams should be spliced.
data OutputStreamSpliceFlags

-- | Do not close either stream.
OutputStreamSpliceFlagsNone :: OutputStreamSpliceFlags

-- | Close the source stream after the splice.
OutputStreamSpliceFlagsCloseSource :: OutputStreamSpliceFlags

-- | Close the target stream after the splice.
OutputStreamSpliceFlagsCloseTarget :: OutputStreamSpliceFlags

-- | Catch-all for unknown values
AnotherOutputStreamSpliceFlags :: Int -> OutputStreamSpliceFlags

-- | Flags to modify lookup behavior.
--   
--   <i>Since: 2.60</i>
data ResolverNameLookupFlags

-- | default behavior (same as <a>resolverLookupByName</a>)
ResolverNameLookupFlagsDefault :: ResolverNameLookupFlags

-- | only resolve ipv4 addresses
ResolverNameLookupFlagsIpv4Only :: ResolverNameLookupFlags

-- | only resolve ipv6 addresses
ResolverNameLookupFlagsIpv6Only :: ResolverNameLookupFlags

-- | Catch-all for unknown values
AnotherResolverNameLookupFlags :: Int -> ResolverNameLookupFlags

-- | GResourceFlags give information about a particular file inside a
--   resource bundle.
--   
--   <i>Since: 2.32</i>
data ResourceFlags

-- | No flags set.
ResourceFlagsNone :: ResourceFlags

-- | The file is compressed.
ResourceFlagsCompressed :: ResourceFlags

-- | Catch-all for unknown values
AnotherResourceFlags :: Int -> ResourceFlags

-- | GResourceLookupFlags determine how resource path lookups are handled.
--   
--   <i>Since: 2.32</i>
data ResourceLookupFlags

-- | No flags set.
ResourceLookupFlagsNone :: ResourceLookupFlags

-- | Catch-all for unknown values
AnotherResourceLookupFlags :: Int -> ResourceLookupFlags

-- | Flags used when creating a binding.
--   
--   These flags determine in which direction the binding works. The
--   default is to synchronize in both directions.
data SettingsBindFlags

-- | Equivalent to <tt>G_SETTINGS_BIND_GET|G_SETTINGS_BIND_SET</tt>
SettingsBindFlagsDefault :: SettingsBindFlags

-- | Update the <a>Object</a> property when the setting changes. It is an
--   error to use this flag if the property is not writable.
SettingsBindFlagsGet :: SettingsBindFlags

-- | Update the setting when the <a>Object</a> property changes. It is an
--   error to use this flag if the property is not readable.
SettingsBindFlagsSet :: SettingsBindFlags

-- | Do not try to bind a ‘sensitivity’ property to the writability of the
--   setting
SettingsBindFlagsNoSensitivity :: SettingsBindFlags

-- | When set in addition to
--   [flags<i><tt>gio</tt></i>.SettingsBindFlags.GET], set the
--   <a>Object</a> property value initially from the setting, but do not
--   listen for changes of the setting
SettingsBindFlagsGetNoChanges :: SettingsBindFlags

-- | When passed to <a>settingsBind</a>, uses a pair of mapping functions
--   that invert the boolean value when mapping between the setting and the
--   property. The setting and property must both be booleans. You cannot
--   pass this flag to <a>settingsBindWithMapping</a>.
SettingsBindFlagsInvertBoolean :: SettingsBindFlags

-- | Catch-all for unknown values
AnotherSettingsBindFlags :: Int -> SettingsBindFlags

-- | Flags used in <a>socketReceiveMessage</a> and
--   <a>socketSendMessage</a>. The flags listed in the enum are some
--   commonly available flags, but the values used for them are the same as
--   on the platform, and any other flags are passed in/out as is. So to
--   use a platform specific flag, just include the right system header and
--   pass in the flag.
--   
--   <i>Since: 2.22</i>
data SocketMsgFlags

-- | No flags.
SocketMsgFlagsNone :: SocketMsgFlags

-- | Request to send/receive out of band data.
SocketMsgFlagsOob :: SocketMsgFlags

-- | Read data from the socket without removing it from the queue.
SocketMsgFlagsPeek :: SocketMsgFlags

-- | Don't use a gateway to send out the packet, only send to hosts on
--   directly connected networks.
SocketMsgFlagsDontroute :: SocketMsgFlags

-- | Catch-all for unknown values
AnotherSocketMsgFlags :: Int -> SocketMsgFlags

-- | Flags to define the behaviour of a <a>Subprocess</a>.
--   
--   Note that the default for stdin is to redirect from
--   <tt>/dev/null</tt>. For stdout and stderr the default are for them to
--   inherit the corresponding descriptor from the calling process.
--   
--   Note that it is a programmer error to mix 'incompatible' flags. For
--   example, you may not request both <a>SubprocessFlagsStdoutPipe</a> and
--   <a>SubprocessFlagsStdoutSilence</a>.
--   
--   <i>Since: 2.40</i>
data SubprocessFlags

-- | No flags.
SubprocessFlagsNone :: SubprocessFlags

-- | create a pipe for the stdin of the spawned process that can be
--   accessed with <a>subprocessGetStdinPipe</a>.
SubprocessFlagsStdinPipe :: SubprocessFlags

-- | stdin is inherited from the calling process.
SubprocessFlagsStdinInherit :: SubprocessFlags

-- | create a pipe for the stdout of the spawned process that can be
--   accessed with <a>subprocessGetStdoutPipe</a>.
SubprocessFlagsStdoutPipe :: SubprocessFlags

-- | silence the stdout of the spawned process (ie: redirect to
--   <tt>/dev/null</tt>).
SubprocessFlagsStdoutSilence :: SubprocessFlags

-- | create a pipe for the stderr of the spawned process that can be
--   accessed with <a>subprocessGetStderrPipe</a>.
SubprocessFlagsStderrPipe :: SubprocessFlags

-- | silence the stderr of the spawned process (ie: redirect to
--   <tt>/dev/null</tt>).
SubprocessFlagsStderrSilence :: SubprocessFlags

-- | merge the stderr of the spawned process with whatever the stdout
--   happens to be. This is a good way of directing both streams to a
--   common log file, for example.
SubprocessFlagsStderrMerge :: SubprocessFlags

-- | spawned processes will inherit the file descriptors of their parent,
--   unless those descriptors have been explicitly marked as close-on-exec.
--   This flag has no effect over the "standard" file descriptors (stdin,
--   stdout, stderr).
SubprocessFlagsInheritFds :: SubprocessFlags

-- | if path searching is needed when spawning the subprocess, use the
--   <tt>PATH</tt> in the launcher environment. (Since: 2.72)
SubprocessFlagsSearchPathFromEnvp :: SubprocessFlags

-- | Catch-all for unknown values
AnotherSubprocessFlags :: Int -> SubprocessFlags

-- | Flags to define future <a>TestDBus</a> behaviour.
--   
--   <i>Since: 2.34</i>
data TestDBusFlags

-- | No flags.
TestDBusFlagsNone :: TestDBusFlags

-- | Catch-all for unknown values
AnotherTestDBusFlags :: Int -> TestDBusFlags

-- | A set of flags describing TLS certification validation. This can be
--   used to describe why a particular certificate was rejected (for
--   example, in <a>TlsConnection::acceptCertificate</a>).
--   
--   GLib guarantees that if certificate verification fails, at least one
--   flag will be set, but it does not guarantee that all possible flags
--   will be set. Accordingly, you may not safely decide to ignore any
--   particular type of error. For example, it would be incorrect to mask
--   <a>TlsCertificateFlagsExpired</a> if you want to allow expired
--   certificates, because this could potentially be the only error flag
--   set even if other problems exist with the certificate.
--   
--   <i>Since: 2.28</i>
data TlsCertificateFlags

-- | No flags set. Since: 2.74
TlsCertificateFlagsNoFlags :: TlsCertificateFlags

-- | The signing certificate authority is not known.
TlsCertificateFlagsUnknownCa :: TlsCertificateFlags

-- | The certificate does not match the expected identity of the site that
--   it was retrieved from.
TlsCertificateFlagsBadIdentity :: TlsCertificateFlags

-- | The certificate's activation time is still in the future
TlsCertificateFlagsNotActivated :: TlsCertificateFlags

-- | The certificate has expired
TlsCertificateFlagsExpired :: TlsCertificateFlags

-- | The certificate has been revoked according to the
--   <a>TlsConnection</a>'s certificate revocation list.
TlsCertificateFlagsRevoked :: TlsCertificateFlags

-- | The certificate's algorithm is considered insecure.
TlsCertificateFlagsInsecure :: TlsCertificateFlags

-- | Some other error occurred validating the certificate
TlsCertificateFlagsGenericError :: TlsCertificateFlags

-- | the combination of all of the above flags
TlsCertificateFlagsValidateAll :: TlsCertificateFlags

-- | Catch-all for unknown values
AnotherTlsCertificateFlags :: Int -> TlsCertificateFlags

-- | Flags for <a>tlsInteractionRequestCertificate</a>,
--   <a>tlsInteractionRequestCertificateAsync</a>, and
--   <a>tlsInteractionInvokeRequestCertificate</a>.
--   
--   <i>Since: 2.40</i>
data TlsCertificateRequestFlags

-- | No flags
TlsCertificateRequestFlagsNone :: TlsCertificateRequestFlags

-- | Catch-all for unknown values
AnotherTlsCertificateRequestFlags :: Int -> TlsCertificateRequestFlags

-- | Flags for <a>tlsDatabaseLookupCertificateForHandle</a>,
--   <a>tlsDatabaseLookupCertificateIssuer</a>, and
--   <a>tlsDatabaseLookupCertificatesIssuedBy</a>.
--   
--   <i>Since: 2.30</i>
data TlsDatabaseLookupFlags

-- | No lookup flags
TlsDatabaseLookupFlagsNone :: TlsDatabaseLookupFlags

-- | Restrict lookup to certificates that have a private key.
TlsDatabaseLookupFlagsKeypair :: TlsDatabaseLookupFlags

-- | Catch-all for unknown values
AnotherTlsDatabaseLookupFlags :: Int -> TlsDatabaseLookupFlags

-- | Flags for <a>tlsDatabaseVerifyChain</a>.
--   
--   <i>Since: 2.30</i>
data TlsDatabaseVerifyFlags

-- | No verification flags
TlsDatabaseVerifyFlagsNone :: TlsDatabaseVerifyFlags

-- | Catch-all for unknown values
AnotherTlsDatabaseVerifyFlags :: Int -> TlsDatabaseVerifyFlags

-- | Various flags for the password.
--   
--   <i>Since: 2.30</i>
data TlsPasswordFlags

-- | No flags
TlsPasswordFlagsNone :: TlsPasswordFlags

-- | The password was wrong, and the user should retry.
TlsPasswordFlagsRetry :: TlsPasswordFlags

-- | Hint to the user that the password has been wrong many times, and the
--   user may not have many chances left.
TlsPasswordFlagsManyTries :: TlsPasswordFlags

-- | Hint to the user that this is the last try to get this password right.
TlsPasswordFlagsFinalTry :: TlsPasswordFlags

-- | For PKCS <tt><i>11</i></tt>, the user PIN is required. Since: 2.70.
TlsPasswordFlagsPkcs11User :: TlsPasswordFlags

-- | For PKCS <tt><i>11</i></tt>, the security officer PIN is required.
--   Since: 2.70.
TlsPasswordFlagsPkcs11SecurityOfficer :: TlsPasswordFlags

-- | For PKCS <tt><i>11</i></tt>, the context-specific PIN is required.
--   Since: 2.70.
TlsPasswordFlagsPkcs11ContextSpecific :: TlsPasswordFlags

-- | Catch-all for unknown values
AnotherTlsPasswordFlags :: Int -> TlsPasswordFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.Gio.Flags.AppInfoCreateFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.Gio.Flags.ApplicationFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.Gio.Flags.AskPasswordFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.Gio.Flags.BusNameOwnerFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.Gio.Flags.BusNameWatcherFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.Gio.Flags.ConverterFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.Gio.Flags.DBusCallFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.Gio.Flags.DBusCapabilityFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.Gio.Flags.DBusConnectionFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.Gio.Flags.DBusInterfaceSkeletonFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.Gio.Flags.DBusMessageFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.Gio.Flags.DBusObjectManagerClientFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.Gio.Flags.DBusPropertyInfoFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.Gio.Flags.DBusProxyFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.Gio.Flags.DBusSendMessageFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.Gio.Flags.DBusServerFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.Gio.Flags.DBusSignalFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.Gio.Flags.DBusSubtreeFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.Gio.Flags.DriveStartFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.Gio.Flags.FileAttributeInfoFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.Gio.Flags.FileCopyFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.Gio.Flags.FileCreateFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.Gio.Flags.FileMeasureFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.Gio.Flags.FileMonitorFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.Gio.Flags.FileQueryInfoFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.Gio.Flags.IOModuleScopeFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.Gio.Flags.IOStreamSpliceFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.Gio.Flags.MountMountFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.Gio.Flags.MountUnmountFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.Gio.Flags.OutputStreamSpliceFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.Gio.Flags.ResolverNameLookupFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.Gio.Flags.ResourceFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.Gio.Flags.ResourceLookupFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.Gio.Flags.SettingsBindFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.Gio.Flags.SocketMsgFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.Gio.Flags.SubprocessFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.Gio.Flags.TestDBusFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.Gio.Flags.TlsCertificateFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.Gio.Flags.TlsCertificateRequestFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.Gio.Flags.TlsDatabaseLookupFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.Gio.Flags.TlsDatabaseVerifyFlags
instance Data.GI.Base.BasicTypes.BoxedFlags GI.Gio.Flags.TlsPasswordFlags
instance GHC.Internal.Enum.Enum GI.Gio.Flags.AppInfoCreateFlags
instance GHC.Internal.Enum.Enum GI.Gio.Flags.ApplicationFlags
instance GHC.Internal.Enum.Enum GI.Gio.Flags.AskPasswordFlags
instance GHC.Internal.Enum.Enum GI.Gio.Flags.BusNameOwnerFlags
instance GHC.Internal.Enum.Enum GI.Gio.Flags.BusNameWatcherFlags
instance GHC.Internal.Enum.Enum GI.Gio.Flags.ConverterFlags
instance GHC.Internal.Enum.Enum GI.Gio.Flags.DBusCallFlags
instance GHC.Internal.Enum.Enum GI.Gio.Flags.DBusCapabilityFlags
instance GHC.Internal.Enum.Enum GI.Gio.Flags.DBusConnectionFlags
instance GHC.Internal.Enum.Enum GI.Gio.Flags.DBusInterfaceSkeletonFlags
instance GHC.Internal.Enum.Enum GI.Gio.Flags.DBusMessageFlags
instance GHC.Internal.Enum.Enum GI.Gio.Flags.DBusObjectManagerClientFlags
instance GHC.Internal.Enum.Enum GI.Gio.Flags.DBusPropertyInfoFlags
instance GHC.Internal.Enum.Enum GI.Gio.Flags.DBusProxyFlags
instance GHC.Internal.Enum.Enum GI.Gio.Flags.DBusSendMessageFlags
instance GHC.Internal.Enum.Enum GI.Gio.Flags.DBusServerFlags
instance GHC.Internal.Enum.Enum GI.Gio.Flags.DBusSignalFlags
instance GHC.Internal.Enum.Enum GI.Gio.Flags.DBusSubtreeFlags
instance GHC.Internal.Enum.Enum GI.Gio.Flags.DriveStartFlags
instance GHC.Internal.Enum.Enum GI.Gio.Flags.FileAttributeInfoFlags
instance GHC.Internal.Enum.Enum GI.Gio.Flags.FileCopyFlags
instance GHC.Internal.Enum.Enum GI.Gio.Flags.FileCreateFlags
instance GHC.Internal.Enum.Enum GI.Gio.Flags.FileMeasureFlags
instance GHC.Internal.Enum.Enum GI.Gio.Flags.FileMonitorFlags
instance GHC.Internal.Enum.Enum GI.Gio.Flags.FileQueryInfoFlags
instance GHC.Internal.Enum.Enum GI.Gio.Flags.IOModuleScopeFlags
instance GHC.Internal.Enum.Enum GI.Gio.Flags.IOStreamSpliceFlags
instance GHC.Internal.Enum.Enum GI.Gio.Flags.MountMountFlags
instance GHC.Internal.Enum.Enum GI.Gio.Flags.MountUnmountFlags
instance GHC.Internal.Enum.Enum GI.Gio.Flags.OutputStreamSpliceFlags
instance GHC.Internal.Enum.Enum GI.Gio.Flags.ResolverNameLookupFlags
instance GHC.Internal.Enum.Enum GI.Gio.Flags.ResourceFlags
instance GHC.Internal.Enum.Enum GI.Gio.Flags.ResourceLookupFlags
instance GHC.Internal.Enum.Enum GI.Gio.Flags.SettingsBindFlags
instance GHC.Internal.Enum.Enum GI.Gio.Flags.SocketMsgFlags
instance GHC.Internal.Enum.Enum GI.Gio.Flags.SubprocessFlags
instance GHC.Internal.Enum.Enum GI.Gio.Flags.TestDBusFlags
instance GHC.Internal.Enum.Enum GI.Gio.Flags.TlsCertificateFlags
instance GHC.Internal.Enum.Enum GI.Gio.Flags.TlsCertificateRequestFlags
instance GHC.Internal.Enum.Enum GI.Gio.Flags.TlsDatabaseLookupFlags
instance GHC.Internal.Enum.Enum GI.Gio.Flags.TlsDatabaseVerifyFlags
instance GHC.Internal.Enum.Enum GI.Gio.Flags.TlsPasswordFlags
instance GHC.Classes.Eq GI.Gio.Flags.AppInfoCreateFlags
instance GHC.Classes.Eq GI.Gio.Flags.ApplicationFlags
instance GHC.Classes.Eq GI.Gio.Flags.AskPasswordFlags
instance GHC.Classes.Eq GI.Gio.Flags.BusNameOwnerFlags
instance GHC.Classes.Eq GI.Gio.Flags.BusNameWatcherFlags
instance GHC.Classes.Eq GI.Gio.Flags.ConverterFlags
instance GHC.Classes.Eq GI.Gio.Flags.DBusCallFlags
instance GHC.Classes.Eq GI.Gio.Flags.DBusCapabilityFlags
instance GHC.Classes.Eq GI.Gio.Flags.DBusConnectionFlags
instance GHC.Classes.Eq GI.Gio.Flags.DBusInterfaceSkeletonFlags
instance GHC.Classes.Eq GI.Gio.Flags.DBusMessageFlags
instance GHC.Classes.Eq GI.Gio.Flags.DBusObjectManagerClientFlags
instance GHC.Classes.Eq GI.Gio.Flags.DBusPropertyInfoFlags
instance GHC.Classes.Eq GI.Gio.Flags.DBusProxyFlags
instance GHC.Classes.Eq GI.Gio.Flags.DBusSendMessageFlags
instance GHC.Classes.Eq GI.Gio.Flags.DBusServerFlags
instance GHC.Classes.Eq GI.Gio.Flags.DBusSignalFlags
instance GHC.Classes.Eq GI.Gio.Flags.DBusSubtreeFlags
instance GHC.Classes.Eq GI.Gio.Flags.DriveStartFlags
instance GHC.Classes.Eq GI.Gio.Flags.FileAttributeInfoFlags
instance GHC.Classes.Eq GI.Gio.Flags.FileCopyFlags
instance GHC.Classes.Eq GI.Gio.Flags.FileCreateFlags
instance GHC.Classes.Eq GI.Gio.Flags.FileMeasureFlags
instance GHC.Classes.Eq GI.Gio.Flags.FileMonitorFlags
instance GHC.Classes.Eq GI.Gio.Flags.FileQueryInfoFlags
instance GHC.Classes.Eq GI.Gio.Flags.IOModuleScopeFlags
instance GHC.Classes.Eq GI.Gio.Flags.IOStreamSpliceFlags
instance GHC.Classes.Eq GI.Gio.Flags.MountMountFlags
instance GHC.Classes.Eq GI.Gio.Flags.MountUnmountFlags
instance GHC.Classes.Eq GI.Gio.Flags.OutputStreamSpliceFlags
instance GHC.Classes.Eq GI.Gio.Flags.ResolverNameLookupFlags
instance GHC.Classes.Eq GI.Gio.Flags.ResourceFlags
instance GHC.Classes.Eq GI.Gio.Flags.ResourceLookupFlags
instance GHC.Classes.Eq GI.Gio.Flags.SettingsBindFlags
instance GHC.Classes.Eq GI.Gio.Flags.SocketMsgFlags
instance GHC.Classes.Eq GI.Gio.Flags.SubprocessFlags
instance GHC.Classes.Eq GI.Gio.Flags.TestDBusFlags
instance GHC.Classes.Eq GI.Gio.Flags.TlsCertificateFlags
instance GHC.Classes.Eq GI.Gio.Flags.TlsCertificateRequestFlags
instance GHC.Classes.Eq GI.Gio.Flags.TlsDatabaseLookupFlags
instance GHC.Classes.Eq GI.Gio.Flags.TlsDatabaseVerifyFlags
instance GHC.Classes.Eq GI.Gio.Flags.TlsPasswordFlags
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Flags.AppInfoCreateFlags
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Flags.ApplicationFlags
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Flags.AskPasswordFlags
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Flags.BusNameOwnerFlags
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Flags.BusNameWatcherFlags
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Flags.ConverterFlags
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Flags.DBusCallFlags
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Flags.DBusCapabilityFlags
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Flags.DBusConnectionFlags
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Flags.DBusInterfaceSkeletonFlags
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Flags.DBusMessageFlags
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Flags.DBusObjectManagerClientFlags
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Flags.DBusPropertyInfoFlags
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Flags.DBusProxyFlags
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Flags.DBusSendMessageFlags
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Flags.DBusServerFlags
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Flags.DBusSignalFlags
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Flags.DBusSubtreeFlags
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Flags.DriveStartFlags
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Flags.FileAttributeInfoFlags
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Flags.FileCopyFlags
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Flags.FileCreateFlags
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Flags.FileMeasureFlags
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Flags.FileMonitorFlags
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Flags.FileQueryInfoFlags
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Flags.IOModuleScopeFlags
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Flags.IOStreamSpliceFlags
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Flags.MountMountFlags
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Flags.MountUnmountFlags
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Flags.OutputStreamSpliceFlags
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Flags.ResolverNameLookupFlags
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Flags.ResourceFlags
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Flags.ResourceLookupFlags
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Flags.SettingsBindFlags
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Flags.SocketMsgFlags
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Flags.SubprocessFlags
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Flags.TestDBusFlags
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Flags.TlsCertificateFlags
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Flags.TlsCertificateRequestFlags
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Flags.TlsDatabaseLookupFlags
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Flags.TlsDatabaseVerifyFlags
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Flags.TlsPasswordFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.Gio.Flags.AppInfoCreateFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.Gio.Flags.ApplicationFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.Gio.Flags.AskPasswordFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.Gio.Flags.BusNameOwnerFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.Gio.Flags.BusNameWatcherFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.Gio.Flags.ConverterFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.Gio.Flags.DBusCallFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.Gio.Flags.DBusCapabilityFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.Gio.Flags.DBusConnectionFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.Gio.Flags.DBusInterfaceSkeletonFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.Gio.Flags.DBusMessageFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.Gio.Flags.DBusObjectManagerClientFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.Gio.Flags.DBusPropertyInfoFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.Gio.Flags.DBusProxyFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.Gio.Flags.DBusSendMessageFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.Gio.Flags.DBusServerFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.Gio.Flags.DBusSignalFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.Gio.Flags.DBusSubtreeFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.Gio.Flags.DriveStartFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.Gio.Flags.FileAttributeInfoFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.Gio.Flags.FileCopyFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.Gio.Flags.FileCreateFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.Gio.Flags.FileMeasureFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.Gio.Flags.FileMonitorFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.Gio.Flags.FileQueryInfoFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.Gio.Flags.IOModuleScopeFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.Gio.Flags.IOStreamSpliceFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.Gio.Flags.MountMountFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.Gio.Flags.MountUnmountFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.Gio.Flags.OutputStreamSpliceFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.Gio.Flags.ResolverNameLookupFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.Gio.Flags.ResourceFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.Gio.Flags.ResourceLookupFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.Gio.Flags.SettingsBindFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.Gio.Flags.SocketMsgFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.Gio.Flags.SubprocessFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.Gio.Flags.TestDBusFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.Gio.Flags.TlsCertificateFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.Gio.Flags.TlsCertificateRequestFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.Gio.Flags.TlsDatabaseLookupFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.Gio.Flags.TlsDatabaseVerifyFlags
instance Data.GI.Base.BasicTypes.IsGFlag GI.Gio.Flags.TlsPasswordFlags
instance GHC.Classes.Ord GI.Gio.Flags.AppInfoCreateFlags
instance GHC.Classes.Ord GI.Gio.Flags.ApplicationFlags
instance GHC.Classes.Ord GI.Gio.Flags.AskPasswordFlags
instance GHC.Classes.Ord GI.Gio.Flags.BusNameOwnerFlags
instance GHC.Classes.Ord GI.Gio.Flags.BusNameWatcherFlags
instance GHC.Classes.Ord GI.Gio.Flags.ConverterFlags
instance GHC.Classes.Ord GI.Gio.Flags.DBusCallFlags
instance GHC.Classes.Ord GI.Gio.Flags.DBusCapabilityFlags
instance GHC.Classes.Ord GI.Gio.Flags.DBusConnectionFlags
instance GHC.Classes.Ord GI.Gio.Flags.DBusInterfaceSkeletonFlags
instance GHC.Classes.Ord GI.Gio.Flags.DBusMessageFlags
instance GHC.Classes.Ord GI.Gio.Flags.DBusObjectManagerClientFlags
instance GHC.Classes.Ord GI.Gio.Flags.DBusPropertyInfoFlags
instance GHC.Classes.Ord GI.Gio.Flags.DBusProxyFlags
instance GHC.Classes.Ord GI.Gio.Flags.DBusSendMessageFlags
instance GHC.Classes.Ord GI.Gio.Flags.DBusServerFlags
instance GHC.Classes.Ord GI.Gio.Flags.DBusSignalFlags
instance GHC.Classes.Ord GI.Gio.Flags.DBusSubtreeFlags
instance GHC.Classes.Ord GI.Gio.Flags.DriveStartFlags
instance GHC.Classes.Ord GI.Gio.Flags.FileAttributeInfoFlags
instance GHC.Classes.Ord GI.Gio.Flags.FileCopyFlags
instance GHC.Classes.Ord GI.Gio.Flags.FileCreateFlags
instance GHC.Classes.Ord GI.Gio.Flags.FileMeasureFlags
instance GHC.Classes.Ord GI.Gio.Flags.FileMonitorFlags
instance GHC.Classes.Ord GI.Gio.Flags.FileQueryInfoFlags
instance GHC.Classes.Ord GI.Gio.Flags.IOModuleScopeFlags
instance GHC.Classes.Ord GI.Gio.Flags.IOStreamSpliceFlags
instance GHC.Classes.Ord GI.Gio.Flags.MountMountFlags
instance GHC.Classes.Ord GI.Gio.Flags.MountUnmountFlags
instance GHC.Classes.Ord GI.Gio.Flags.OutputStreamSpliceFlags
instance GHC.Classes.Ord GI.Gio.Flags.ResolverNameLookupFlags
instance GHC.Classes.Ord GI.Gio.Flags.ResourceFlags
instance GHC.Classes.Ord GI.Gio.Flags.ResourceLookupFlags
instance GHC.Classes.Ord GI.Gio.Flags.SettingsBindFlags
instance GHC.Classes.Ord GI.Gio.Flags.SocketMsgFlags
instance GHC.Classes.Ord GI.Gio.Flags.SubprocessFlags
instance GHC.Classes.Ord GI.Gio.Flags.TestDBusFlags
instance GHC.Classes.Ord GI.Gio.Flags.TlsCertificateFlags
instance GHC.Classes.Ord GI.Gio.Flags.TlsCertificateRequestFlags
instance GHC.Classes.Ord GI.Gio.Flags.TlsDatabaseLookupFlags
instance GHC.Classes.Ord GI.Gio.Flags.TlsDatabaseVerifyFlags
instance GHC.Classes.Ord GI.Gio.Flags.TlsPasswordFlags
instance GHC.Internal.Show.Show GI.Gio.Flags.AppInfoCreateFlags
instance GHC.Internal.Show.Show GI.Gio.Flags.ApplicationFlags
instance GHC.Internal.Show.Show GI.Gio.Flags.AskPasswordFlags
instance GHC.Internal.Show.Show GI.Gio.Flags.BusNameOwnerFlags
instance GHC.Internal.Show.Show GI.Gio.Flags.BusNameWatcherFlags
instance GHC.Internal.Show.Show GI.Gio.Flags.ConverterFlags
instance GHC.Internal.Show.Show GI.Gio.Flags.DBusCallFlags
instance GHC.Internal.Show.Show GI.Gio.Flags.DBusCapabilityFlags
instance GHC.Internal.Show.Show GI.Gio.Flags.DBusConnectionFlags
instance GHC.Internal.Show.Show GI.Gio.Flags.DBusInterfaceSkeletonFlags
instance GHC.Internal.Show.Show GI.Gio.Flags.DBusMessageFlags
instance GHC.Internal.Show.Show GI.Gio.Flags.DBusObjectManagerClientFlags
instance GHC.Internal.Show.Show GI.Gio.Flags.DBusPropertyInfoFlags
instance GHC.Internal.Show.Show GI.Gio.Flags.DBusProxyFlags
instance GHC.Internal.Show.Show GI.Gio.Flags.DBusSendMessageFlags
instance GHC.Internal.Show.Show GI.Gio.Flags.DBusServerFlags
instance GHC.Internal.Show.Show GI.Gio.Flags.DBusSignalFlags
instance GHC.Internal.Show.Show GI.Gio.Flags.DBusSubtreeFlags
instance GHC.Internal.Show.Show GI.Gio.Flags.DriveStartFlags
instance GHC.Internal.Show.Show GI.Gio.Flags.FileAttributeInfoFlags
instance GHC.Internal.Show.Show GI.Gio.Flags.FileCopyFlags
instance GHC.Internal.Show.Show GI.Gio.Flags.FileCreateFlags
instance GHC.Internal.Show.Show GI.Gio.Flags.FileMeasureFlags
instance GHC.Internal.Show.Show GI.Gio.Flags.FileMonitorFlags
instance GHC.Internal.Show.Show GI.Gio.Flags.FileQueryInfoFlags
instance GHC.Internal.Show.Show GI.Gio.Flags.IOModuleScopeFlags
instance GHC.Internal.Show.Show GI.Gio.Flags.IOStreamSpliceFlags
instance GHC.Internal.Show.Show GI.Gio.Flags.MountMountFlags
instance GHC.Internal.Show.Show GI.Gio.Flags.MountUnmountFlags
instance GHC.Internal.Show.Show GI.Gio.Flags.OutputStreamSpliceFlags
instance GHC.Internal.Show.Show GI.Gio.Flags.ResolverNameLookupFlags
instance GHC.Internal.Show.Show GI.Gio.Flags.ResourceFlags
instance GHC.Internal.Show.Show GI.Gio.Flags.ResourceLookupFlags
instance GHC.Internal.Show.Show GI.Gio.Flags.SettingsBindFlags
instance GHC.Internal.Show.Show GI.Gio.Flags.SocketMsgFlags
instance GHC.Internal.Show.Show GI.Gio.Flags.SubprocessFlags
instance GHC.Internal.Show.Show GI.Gio.Flags.TestDBusFlags
instance GHC.Internal.Show.Show GI.Gio.Flags.TlsCertificateFlags
instance GHC.Internal.Show.Show GI.Gio.Flags.TlsCertificateRequestFlags
instance GHC.Internal.Show.Show GI.Gio.Flags.TlsDatabaseLookupFlags
instance GHC.Internal.Show.Show GI.Gio.Flags.TlsDatabaseVerifyFlags
instance GHC.Internal.Show.Show GI.Gio.Flags.TlsPasswordFlags
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Flags.AppInfoCreateFlags
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Flags.ApplicationFlags
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Flags.AskPasswordFlags
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Flags.BusNameOwnerFlags
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Flags.BusNameWatcherFlags
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Flags.ConverterFlags
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Flags.DBusCallFlags
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Flags.DBusCapabilityFlags
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Flags.DBusConnectionFlags
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Flags.DBusInterfaceSkeletonFlags
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Flags.DBusMessageFlags
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Flags.DBusObjectManagerClientFlags
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Flags.DBusPropertyInfoFlags
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Flags.DBusProxyFlags
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Flags.DBusSendMessageFlags
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Flags.DBusServerFlags
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Flags.DBusSignalFlags
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Flags.DBusSubtreeFlags
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Flags.DriveStartFlags
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Flags.FileAttributeInfoFlags
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Flags.FileCopyFlags
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Flags.FileCreateFlags
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Flags.FileMeasureFlags
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Flags.FileMonitorFlags
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Flags.FileQueryInfoFlags
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Flags.IOModuleScopeFlags
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Flags.IOStreamSpliceFlags
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Flags.MountMountFlags
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Flags.MountUnmountFlags
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Flags.OutputStreamSpliceFlags
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Flags.ResolverNameLookupFlags
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Flags.ResourceFlags
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Flags.ResourceLookupFlags
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Flags.SettingsBindFlags
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Flags.SocketMsgFlags
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Flags.SubprocessFlags
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Flags.TestDBusFlags
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Flags.TlsCertificateFlags
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Flags.TlsCertificateRequestFlags
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Flags.TlsDatabaseLookupFlags
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Flags.TlsDatabaseVerifyFlags
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Flags.TlsPasswordFlags


-- | <tt>GAction</tt> represents a single named action.
--   
--   The main interface to an action is that it can be activated with
--   <a>actionActivate</a>. This results in the 'activate' signal being
--   emitted. An activation has a <tt>GVariant</tt> parameter (which may be
--   <tt>NULL</tt>). The correct type for the parameter is determined by a
--   static parameter type (which is given at construction time).
--   
--   An action may optionally have a state, in which case the state may be
--   set with <a>actionChangeState</a>. This call takes a
--   [type<i><tt>gLib</tt></i>.Variant]. The correct type for the state is
--   determined by a static state type (which is given at construction
--   time).
--   
--   The state may have a hint associated with it, specifying its valid
--   range.
--   
--   <tt>GAction</tt> is merely the interface to the concept of an action,
--   as described above. Various implementations of actions exist,
--   including <a>SimpleAction</a>.
--   
--   In all cases, the implementing class is responsible for storing the
--   name of the action, the parameter type, the enabled state, the
--   optional state type and the state and emitting the appropriate signals
--   when these change. The implementor is responsible for filtering calls
--   to <a>actionActivate</a> and <a>actionChangeState</a> for type safety
--   and for the state being enabled.
--   
--   Probably the only useful thing to do with a <tt>GAction</tt> is to put
--   it inside of a <a>SimpleActionGroup</a>.
module GI.Gio.Interfaces.Action

-- | Memory-managed wrapper type.
newtype Action
Action :: ManagedPtr Action -> Action

-- | Type class for types which can be safely cast to <a>Action</a>, for
--   instance with <a>toAction</a>.
class (GObject o, IsDescendantOf Action o) => IsAction o

-- | Cast to <a>Action</a>, for types for which this is known to be safe.
--   For general casts, use <a>castTo</a>.
toAction :: (MonadIO m, IsAction o) => o -> m Action

-- | Activates the action.
--   
--   <i><tt>parameter</tt></i> must be the correct type of parameter for
--   the action (ie: the parameter type given at construction time). If the
--   parameter type was <tt>NULL</tt> then <i><tt>parameter</tt></i> must
--   also be <tt>NULL</tt>.
--   
--   If the <i><tt>parameter</tt></i> [type<i><tt>gLib</tt></i>.Variant] is
--   floating, it is consumed.
--   
--   <i>Since: 2.28</i>
actionActivate :: (HasCallStack, MonadIO m, IsAction a) => a -> Maybe GVariant -> m ()

-- | Request for the state of <i><tt>action</tt></i> to be changed to
--   <i><tt>value</tt></i>.
--   
--   The action must be stateful and <i><tt>value</tt></i> must be of the
--   correct type. See <a>actionGetStateType</a>.
--   
--   This call merely requests a change. The action may refuse to change
--   its state or may change its state to something other than
--   <i><tt>value</tt></i>. See <a>actionGetStateHint</a>.
--   
--   If the <i><tt>value</tt></i> [type<i><tt>gLib</tt></i>.Variant] is
--   floating, it is consumed.
--   
--   <i>Since: 2.30</i>
actionChangeState :: (HasCallStack, MonadIO m, IsAction a) => a -> GVariant -> m ()

-- | Checks if <i><tt>action</tt></i> is currently enabled.
--   
--   An action must be enabled in order to be activated or in order to have
--   its state changed from outside callers.
--   
--   <i>Since: 2.28</i>
actionGetEnabled :: (HasCallStack, MonadIO m, IsAction a) => a -> m Bool

-- | Queries the name of <i><tt>action</tt></i>.
--   
--   <i>Since: 2.28</i>
actionGetName :: (HasCallStack, MonadIO m, IsAction a) => a -> m Text

-- | Queries the type of the parameter that must be given when activating
--   <i><tt>action</tt></i>.
--   
--   When activating the action using <a>actionActivate</a>, the
--   [type<i><tt>gLib</tt></i>.Variant] given to that function must be of
--   the type returned by this function.
--   
--   In the case that this function returns <tt>NULL</tt>, you must not
--   give any [type<i><tt>gLib</tt></i>.Variant], but <tt>NULL</tt>
--   instead.
--   
--   <i>Since: 2.28</i>
actionGetParameterType :: (HasCallStack, MonadIO m, IsAction a) => a -> m (Maybe VariantType)

-- | Queries the current state of <i><tt>action</tt></i>.
--   
--   If the action is not stateful then <tt>NULL</tt> will be returned. If
--   the action is stateful then the type of the return value is the type
--   given by <a>actionGetStateType</a>.
--   
--   The return value (if non-<tt>NULL</tt>) should be freed with
--   <a>variantUnref</a> when it is no longer required.
--   
--   <i>Since: 2.28</i>
actionGetState :: (HasCallStack, MonadIO m, IsAction a) => a -> m (Maybe GVariant)

-- | Requests a hint about the valid range of values for the state of
--   <i><tt>action</tt></i>.
--   
--   If <tt>NULL</tt> is returned it either means that the action is not
--   stateful or that there is no hint about the valid range of values for
--   the state of the action.
--   
--   If a [type<i><tt>gLib</tt></i>.Variant] array is returned then each
--   item in the array is a possible value for the state. If a
--   [type<i><tt>gLib</tt></i>.Variant] pair (ie: two-tuple) is returned
--   then the tuple specifies the inclusive lower and upper bound of valid
--   values for the state.
--   
--   In any case, the information is merely a hint. It may be possible to
--   have a state value outside of the hinted range and setting a value
--   within the range may fail.
--   
--   The return value (if non-<tt>NULL</tt>) should be freed with
--   <a>variantUnref</a> when it is no longer required.
--   
--   <i>Since: 2.28</i>
actionGetStateHint :: (HasCallStack, MonadIO m, IsAction a) => a -> m (Maybe GVariant)

-- | Queries the type of the state of <i><tt>action</tt></i>.
--   
--   If the action is stateful (e.g. created with
--   <a>simpleActionNewStateful</a>) then this function returns the
--   [type<i><tt>gLib</tt></i>.VariantType] of the state. This is the type
--   of the initial value given as the state. All calls to
--   <a>actionChangeState</a> must give a
--   [type<i><tt>gLib</tt></i>.Variant] of this type and
--   <a>actionGetState</a> will return a [type<i><tt>gLib</tt></i>.Variant]
--   of the same type.
--   
--   If the action is not stateful (e.g. created with
--   <a>simpleActionNew</a>) then this function will return <tt>NULL</tt>.
--   In that case, <a>actionGetState</a> will return <tt>NULL</tt> and you
--   must not call <a>actionChangeState</a>.
--   
--   <i>Since: 2.28</i>
actionGetStateType :: (HasCallStack, MonadIO m, IsAction a) => a -> m (Maybe VariantType)

-- | Checks if <i><tt>actionName</tt></i> is valid.
--   
--   <i><tt>actionName</tt></i> is valid if it consists only of
--   alphanumeric characters, plus <tt>-</tt> and <tt>.</tt>. The empty
--   string is not a valid action name.
--   
--   It is an error to call this function with a non-UTF-8
--   <i><tt>actionName</tt></i>. <i><tt>actionName</tt></i> must not be
--   <tt>NULL</tt>.
--   
--   <i>Since: 2.38</i>
actionNameIsValid :: (HasCallStack, MonadIO m) => Text -> m Bool

-- | Parses a detailed action name into its separate name and target
--   components.
--   
--   Detailed action names can have three formats.
--   
--   The first format is used to represent an action name with no target
--   value and consists of just an action name containing no whitespace nor
--   the characters <tt>:</tt>, <tt>(</tt> or <tt>)</tt>. For example:
--   <tt>app.action</tt>.
--   
--   The second format is used to represent an action with a target value
--   that is a non-empty string consisting only of alphanumerics, plus
--   <tt>-</tt> and <tt>.</tt>. In that case, the action name and target
--   value are separated by a double colon (<tt>::</tt>). For example:
--   <tt>app.action::target</tt>.
--   
--   The third format is used to represent an action with any type of
--   target value, including strings. The target value follows the action
--   name, surrounded in parens. For example: <tt>app.action(42)</tt>. The
--   target value is parsed using <a>variantParse</a>. If a tuple-typed
--   value is desired, it must be specified in the same way, resulting in
--   two sets of parens, for example: <tt>app.action((1,2,3))</tt>. A
--   string target can be specified this way as well:
--   <tt>app.action('target')</tt>. For strings, this third format must be
--   used if target value is empty or contains characters other than
--   alphanumerics, <tt>-</tt> and <tt>.</tt>.
--   
--   If this function returns <tt>TRUE</tt>, a non-<tt>NULL</tt> value is
--   guaranteed to be returned in <i><tt>actionName</tt></i> (if a pointer
--   is passed in). A <tt>NULL</tt> value may still be returned in
--   <i><tt>targetValue</tt></i>, as the <i><tt>detailedName</tt></i> may
--   not contain a target.
--   
--   If returned, the [type<i><tt>gLib</tt></i>.Variant] in
--   <i><tt>targetValue</tt></i> is guaranteed to not be floating.
--   
--   <i>Since: 2.38</i>
actionParseDetailedName :: (HasCallStack, MonadIO m) => Text -> m (Text, Maybe GVariant)

-- | Formats a detailed action name from <i><tt>actionName</tt></i> and
--   <i><tt>targetValue</tt></i>.
--   
--   It is an error to call this function with an invalid action name.
--   
--   This function is the opposite of <a>actionParseDetailedName</a>. It
--   will produce a string that can be parsed back to the
--   <i><tt>actionName</tt></i> and <i><tt>targetValue</tt></i> by that
--   function.
--   
--   See that function for the types of strings that will be printed by
--   this function.
--   
--   <i>Since: 2.38</i>
actionPrintDetailedName :: (HasCallStack, MonadIO m) => Text -> Maybe GVariant -> m Text

-- | Get the value of the “<tt>enabled</tt>” property. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> action #enabled
--   </pre>
getActionEnabled :: (MonadIO m, IsAction o) => o -> m Bool

-- | Get the value of the “<tt>name</tt>” property. When <a>overloading</a>
--   is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> action #name
--   </pre>
getActionName :: (MonadIO m, IsAction o) => o -> m Text

-- | Get the value of the “<tt>parameter-type</tt>” property. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> action #parameterType
--   </pre>
getActionParameterType :: (MonadIO m, IsAction o) => o -> m (Maybe VariantType)

-- | Get the value of the “<tt>state</tt>” property. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> action #state
--   </pre>
getActionState :: (MonadIO m, IsAction o) => o -> m (Maybe GVariant)

-- | Get the value of the “<tt>state-type</tt>” property. When
--   <a>overloading</a> is enabled, this is equivalent to
--   
--   <pre>
--   <a>get</a> action #stateType
--   </pre>
getActionStateType :: (MonadIO m, IsAction o) => o -> m (Maybe VariantType)
instance GHC.Classes.Eq GI.Gio.Interfaces.Action.Action
instance Data.GI.Base.BasicTypes.GObject GI.Gio.Interfaces.Action.Action
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Interfaces.Action.Action
instance (Data.GI.Base.BasicTypes.GObject o, Data.GI.Base.Overloading.IsDescendantOf GI.Gio.Interfaces.Action.Action o) => GI.Gio.Interfaces.Action.IsAction o
instance Data.GI.Base.GValue.IsGValue (GHC.Internal.Maybe.Maybe GI.Gio.Interfaces.Action.Action)
instance Data.GI.Base.BasicTypes.ManagedPtrNewtype GI.Gio.Interfaces.Action.Action
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Interfaces.Action.Action


-- | <tt>GActionGroup</tt> represents a group of actions.
--   
--   Actions can be used to expose functionality in a structured way,
--   either from one part of a program to another, or to the outside world.
--   Action groups are often used together with a
--   [type<i><tt>gio</tt></i>.MenuModel] that provides additional
--   representation data for displaying the actions to the user, e.g. in a
--   menu.
--   
--   The main way to interact with the actions in a <tt>GActionGroup</tt>
--   is to activate them with <a>actionGroupActivateAction</a>. Activating
--   an action may require a [type<i><tt>gLib</tt></i>.Variant] parameter.
--   The required type of the parameter can be inquired with
--   <a>actionGroupGetActionParameterType</a>. Actions may be disabled, see
--   <a>actionGroupGetActionEnabled</a>. Activating a disabled action has
--   no effect.
--   
--   Actions may optionally have a state in the form of a
--   [type<i><tt>gLib</tt></i>.Variant]. The current state of an action can
--   be inquired with <a>actionGroupGetActionState</a>. Activating a
--   stateful action may change its state, but it is also possible to set
--   the state by calling <a>actionGroupChangeActionState</a>.
--   
--   As typical example, consider a text editing application which has an
--   option to change the current font to ‘bold’. A good way to represent
--   this would be a stateful action, with a boolean state. Activating the
--   action would toggle the state.
--   
--   Each action in the group has a unique name (which is a string). All
--   method calls, except <a>actionGroupListActions</a> take the name of an
--   action as an argument.
--   
--   The <tt>GActionGroup</tt> API is meant to be the ‘public’ API to the
--   action group. The calls here are exactly the interaction that
--   ‘external forces’ (eg: UI, incoming D-Bus messages, etc.) are supposed
--   to have with actions. ‘Internal’ APIs (ie: ones meant only to be
--   accessed by the action group implementation) are found on subclasses.
--   This is why you will find – for example –
--   <a>actionGroupGetActionEnabled</a> but not an equivalent
--   <tt>set_action_enabled()</tt> method.
--   
--   Signals are emitted on the action group in response to state changes
--   on individual actions.
--   
--   Implementations of <tt>GActionGroup</tt> should provide
--   implementations for the virtual functions
--   <a>actionGroupListActions</a> and <a>actionGroupQueryAction</a>. The
--   other virtual functions should not be implemented — their ‘wrappers’
--   are actually implemented with calls to <a>actionGroupQueryAction</a>.
module GI.Gio.Interfaces.ActionGroup

-- | Memory-managed wrapper type.
newtype ActionGroup
ActionGroup :: ManagedPtr ActionGroup -> ActionGroup

-- | Type class for types which can be safely cast to <a>ActionGroup</a>,
--   for instance with <a>toActionGroup</a>.
class (GObject o, IsDescendantOf ActionGroup o) => IsActionGroup o

-- | Cast to <a>ActionGroup</a>, for types for which this is known to be
--   safe. For general casts, use <a>castTo</a>.
toActionGroup :: (MonadIO m, IsActionGroup o) => o -> m ActionGroup

-- | Emits the <a>ActionGroup::actionAdded</a> signal on
--   <i><tt>actionGroup</tt></i>.
--   
--   This function should only be called by
--   [type<i><tt>gio</tt></i>.ActionGroup] implementations.
--   
--   <i>Since: 2.28</i>
actionGroupActionAdded :: (HasCallStack, MonadIO m, IsActionGroup a) => a -> Text -> m ()

-- | Emits the <a>ActionGroup::actionEnabledChanged</a> signal on
--   <i><tt>actionGroup</tt></i>.
--   
--   This function should only be called by
--   [type<i><tt>gio</tt></i>.ActionGroup] implementations.
--   
--   <i>Since: 2.28</i>
actionGroupActionEnabledChanged :: (HasCallStack, MonadIO m, IsActionGroup a) => a -> Text -> Bool -> m ()

-- | Emits the <a>ActionGroup::actionRemoved</a> signal on
--   <i><tt>actionGroup</tt></i>.
--   
--   This function should only be called by
--   [type<i><tt>gio</tt></i>.ActionGroup] implementations.
--   
--   <i>Since: 2.28</i>
actionGroupActionRemoved :: (HasCallStack, MonadIO m, IsActionGroup a) => a -> Text -> m ()

-- | Emits the <a>ActionGroup::actionStateChanged</a> signal on
--   <i><tt>actionGroup</tt></i>.
--   
--   This function should only be called by
--   [type<i><tt>gio</tt></i>.ActionGroup] implementations.
--   
--   <i>Since: 2.28</i>
actionGroupActionStateChanged :: (HasCallStack, MonadIO m, IsActionGroup a) => a -> Text -> GVariant -> m ()

-- | Activate the named action within <i><tt>actionGroup</tt></i>.
--   
--   If the action is expecting a parameter, then the correct type of
--   parameter must be given as <i><tt>parameter</tt></i>. If the action is
--   expecting no parameters then <i><tt>parameter</tt></i> must be
--   <tt>NULL</tt>. See <a>actionGroupGetActionParameterType</a>.
--   
--   If the [type<i><tt>gio</tt></i>.ActionGroup] implementation supports
--   asynchronous remote activation over D-Bus, this call may return before
--   the relevant D-Bus traffic has been sent, or any replies have been
--   received. In order to block on such asynchronous activation calls,
--   <a>dBusConnectionFlush</a> should be called prior to the code, which
--   depends on the result of the action activation. Without flushing the
--   D-Bus connection, there is no guarantee that the action would have
--   been activated.
--   
--   The following code which runs in a remote app instance, shows an
--   example of a ‘quit’ action being activated on the primary app instance
--   over D-Bus. Here <a>dBusConnectionFlush</a> is called before
--   <tt>exit()</tt>. Without <tt>g_dbus_connection_flush()</tt>, the
--   ‘quit’ action may fail to be activated on the primary instance.
--   
--   <h3><i>c code</i></h3>
--   
--   <pre>
--   // call ‘quit’ action on primary instance
--   g_action_group_activate_action (G_ACTION_GROUP (app), "quit", NULL);
--   
--   // make sure the action is activated now
--   g_dbus_connection_flush (…);
--   
--   g_debug ("Application has been terminated. Exiting.");
--   
--   exit (0);
--   </pre>
--   
--   <i>Since: 2.28</i>
actionGroupActivateAction :: (HasCallStack, MonadIO m, IsActionGroup a) => a -> Text -> Maybe GVariant -> m ()

-- | Request for the state of the named action within
--   <i><tt>actionGroup</tt></i> to be changed to <i><tt>value</tt></i>.
--   
--   The action must be stateful and <i><tt>value</tt></i> must be of the
--   correct type. See <a>actionGroupGetActionStateType</a>.
--   
--   This call merely requests a change. The action may refuse to change
--   its state or may change its state to something other than
--   <i><tt>value</tt></i>. See <a>actionGroupGetActionStateHint</a>.
--   
--   If the <i><tt>value</tt></i> GVariant is floating, it is consumed.
--   
--   <i>Since: 2.28</i>
actionGroupChangeActionState :: (HasCallStack, MonadIO m, IsActionGroup a) => a -> Text -> GVariant -> m ()

-- | Checks if the named action within <i><tt>actionGroup</tt></i> is
--   currently enabled.
--   
--   An action must be enabled in order to be activated or in order to have
--   its state changed from outside callers.
--   
--   <i>Since: 2.28</i>
actionGroupGetActionEnabled :: (HasCallStack, MonadIO m, IsActionGroup a) => a -> Text -> m Bool

-- | Queries the type of the parameter that must be given when activating
--   the named action within <i><tt>actionGroup</tt></i>.
--   
--   When activating the action using <a>actionGroupActivateAction</a>, the
--   [type<i><tt>gLib</tt></i>.Variant] given to that function must be of
--   the type returned by this function.
--   
--   In the case that this function returns <tt>NULL</tt>, you must not
--   give any [type<i><tt>gLib</tt></i>.Variant], but <tt>NULL</tt>
--   instead.
--   
--   The parameter type of a particular action will never change but it is
--   possible for an action to be removed and for a new action to be added
--   with the same name but a different parameter type.
--   
--   <i>Since: 2.28</i>
actionGroupGetActionParameterType :: (HasCallStack, MonadIO m, IsActionGroup a) => a -> Text -> m (Maybe VariantType)

-- | Queries the current state of the named action within
--   <i><tt>actionGroup</tt></i>.
--   
--   If the action is not stateful then <tt>NULL</tt> will be returned. If
--   the action is stateful then the type of the return value is the type
--   given by <a>actionGroupGetActionStateType</a>.
--   
--   The return value (if non-<tt>NULL</tt>) should be freed with
--   <a>variantUnref</a> when it is no longer required.
--   
--   <i>Since: 2.28</i>
actionGroupGetActionState :: (HasCallStack, MonadIO m, IsActionGroup a) => a -> Text -> m (Maybe GVariant)

-- | Requests a hint about the valid range of values for the state of the
--   named action within <i><tt>actionGroup</tt></i>.
--   
--   If <tt>NULL</tt> is returned it either means that the action is not
--   stateful or that there is no hint about the valid range of values for
--   the state of the action.
--   
--   If a [type<i><tt>gLib</tt></i>.Variant] array is returned then each
--   item in the array is a possible value for the state. If a
--   [type<i><tt>gLib</tt></i>.Variant] pair (ie: two-tuple) is returned
--   then the tuple specifies the inclusive lower and upper bound of valid
--   values for the state.
--   
--   In any case, the information is merely a hint. It may be possible to
--   have a state value outside of the hinted range and setting a value
--   within the range may fail.
--   
--   The return value (if non-<tt>NULL</tt>) should be freed with
--   <a>variantUnref</a> when it is no longer required.
--   
--   <i>Since: 2.28</i>
actionGroupGetActionStateHint :: (HasCallStack, MonadIO m, IsActionGroup a) => a -> Text -> m (Maybe GVariant)

-- | Queries the type of the state of the named action within
--   <i><tt>actionGroup</tt></i>.
--   
--   If the action is stateful then this function returns the
--   [type<i><tt>gLib</tt></i>.VariantType] of the state. All calls to
--   <a>actionGroupChangeActionState</a> must give a
--   [type<i><tt>gLib</tt></i>.Variant] of this type and
--   <a>actionGroupGetActionState</a> will return a
--   [type<i><tt>gLib</tt></i>.Variant] of the same type.
--   
--   If the action is not stateful then this function will return
--   <tt>NULL</tt>. In that case, <a>actionGroupGetActionState</a> will
--   return <tt>NULL</tt> and you must not call
--   <a>actionGroupChangeActionState</a>.
--   
--   The state type of a particular action will never change but it is
--   possible for an action to be removed and for a new action to be added
--   with the same name but a different state type.
--   
--   <i>Since: 2.28</i>
actionGroupGetActionStateType :: (HasCallStack, MonadIO m, IsActionGroup a) => a -> Text -> m (Maybe VariantType)

-- | Checks if the named action exists within <i><tt>actionGroup</tt></i>.
--   
--   <i>Since: 2.28</i>
actionGroupHasAction :: (HasCallStack, MonadIO m, IsActionGroup a) => a -> Text -> m Bool

-- | Lists the actions contained within <i><tt>actionGroup</tt></i>.
--   
--   The caller is responsible for freeing the list with <a>strfreev</a>
--   when it is no longer required.
--   
--   <i>Since: 2.28</i>
actionGroupListActions :: (HasCallStack, MonadIO m, IsActionGroup a) => a -> m [Text]

-- | Queries all aspects of the named action within an
--   <i><tt>actionGroup</tt></i>.
--   
--   This function acquires the information available from
--   <a>actionGroupHasAction</a>, <a>actionGroupGetActionEnabled</a>,
--   <a>actionGroupGetActionParameterType</a>,
--   <a>actionGroupGetActionStateType</a>,
--   <a>actionGroupGetActionStateHint</a> and
--   <a>actionGroupGetActionState</a> with a single function call.
--   
--   This provides two main benefits.
--   
--   The first is the improvement in efficiency that comes with not having
--   to perform repeated lookups of the action in order to discover
--   different things about it. The second is that implementing
--   [type<i><tt>gio</tt></i>.ActionGroup] can now be done by only
--   overriding this one virtual function.
--   
--   The interface provides a default implementation of this function that
--   calls the individual functions, as required, to fetch the information.
--   The interface also provides default implementations of those functions
--   that call this function. All implementations, therefore, must override
--   either this function or all of the others.
--   
--   If the action exists, <tt>TRUE</tt> is returned and any of the
--   requested fields (as indicated by having a non-<tt>NULL</tt> reference
--   passed in) are filled. If the action doesn’t exist, <tt>FALSE</tt> is
--   returned and the fields may or may not have been modified.
--   
--   <i>Since: 2.32</i>
actionGroupQueryAction :: (HasCallStack, MonadIO m, IsActionGroup a) => a -> Text -> m (Bool, Bool, VariantType, VariantType, GVariant, GVariant)

-- | Signals that a new action was just added to the group.
--   
--   This signal is emitted after the action has been added and is now
--   visible.
--   
--   <i>Since: 2.28</i>
type ActionGroupActionAddedCallback = Text -> IO ()

-- | Connect a signal handler for the <a>actionAdded</a> signal, to be run
--   after the default handler. When <a>overloading</a> is enabled, this is
--   equivalent to
--   
--   <pre>
--   <a>after</a> actionGroup #actionAdded callback
--   </pre>
--   
--   This signal admits a optional parameter <tt>detail</tt>. If it's not
--   <tt>Nothing</tt>, we will connect to “<tt>action-added::detail</tt>”
--   instead.
--   
--   By default the object invoking the signal is not passed to the
--   callback. If you need to access it, you can use the implit
--   <tt>?self</tt> parameter. Note that this requires activating the
--   <tt>ImplicitParams</tt> GHC extension.
afterActionGroupActionAdded :: (IsActionGroup a, MonadIO m) => a -> Maybe Text -> ((?self :: a) => ActionGroupActionAddedCallback) -> m SignalHandlerId

-- | Connect a signal handler for the <a>actionAdded</a> signal, to be run
--   before the default handler. When <a>overloading</a> is enabled, this
--   is equivalent to
--   
--   <pre>
--   <a>on</a> actionGroup #actionAdded callback
--   </pre>
--   
--   This signal admits a optional parameter <tt>detail</tt>. If it's not
--   <tt>Nothing</tt>, we will connect to “<tt>action-added::detail</tt>”
--   instead.
onActionGroupActionAdded :: (IsActionGroup a, MonadIO m) => a -> Maybe Text -> ((?self :: a) => ActionGroupActionAddedCallback) -> m SignalHandlerId

-- | Signals that the enabled status of the named action has changed.
--   
--   <i>Since: 2.28</i>
type ActionGroupActionEnabledChangedCallback = Text -> Bool -> IO ()

-- | Connect a signal handler for the <a>actionEnabledChanged</a> signal,
--   to be run after the default handler. When <a>overloading</a> is
--   enabled, this is equivalent to
--   
--   <pre>
--   <a>after</a> actionGroup #actionEnabledChanged callback
--   </pre>
--   
--   This signal admits a optional parameter <tt>detail</tt>. If it's not
--   <tt>Nothing</tt>, we will connect to
--   “<tt>action-enabled-changed::detail</tt>” instead.
--   
--   By default the object invoking the signal is not passed to the
--   callback. If you need to access it, you can use the implit
--   <tt>?self</tt> parameter. Note that this requires activating the
--   <tt>ImplicitParams</tt> GHC extension.
afterActionGroupActionEnabledChanged :: (IsActionGroup a, MonadIO m) => a -> Maybe Text -> ((?self :: a) => ActionGroupActionEnabledChangedCallback) -> m SignalHandlerId

-- | Connect a signal handler for the <a>actionEnabledChanged</a> signal,
--   to be run before the default handler. When <a>overloading</a> is
--   enabled, this is equivalent to
--   
--   <pre>
--   <a>on</a> actionGroup #actionEnabledChanged callback
--   </pre>
--   
--   This signal admits a optional parameter <tt>detail</tt>. If it's not
--   <tt>Nothing</tt>, we will connect to
--   “<tt>action-enabled-changed::detail</tt>” instead.
onActionGroupActionEnabledChanged :: (IsActionGroup a, MonadIO m) => a -> Maybe Text -> ((?self :: a) => ActionGroupActionEnabledChangedCallback) -> m SignalHandlerId

-- | Signals that an action is just about to be removed from the group.
--   
--   This signal is emitted before the action is removed, so the action is
--   still visible and can be queried from the signal handler.
--   
--   <i>Since: 2.28</i>
type ActionGroupActionRemovedCallback = Text -> IO ()

-- | Connect a signal handler for the <a>actionRemoved</a> signal, to be
--   run after the default handler. When <a>overloading</a> is enabled,
--   this is equivalent to
--   
--   <pre>
--   <a>after</a> actionGroup #actionRemoved callback
--   </pre>
--   
--   This signal admits a optional parameter <tt>detail</tt>. If it's not
--   <tt>Nothing</tt>, we will connect to “<tt>action-removed::detail</tt>”
--   instead.
--   
--   By default the object invoking the signal is not passed to the
--   callback. If you need to access it, you can use the implit
--   <tt>?self</tt> parameter. Note that this requires activating the
--   <tt>ImplicitParams</tt> GHC extension.
afterActionGroupActionRemoved :: (IsActionGroup a, MonadIO m) => a -> Maybe Text -> ((?self :: a) => ActionGroupActionRemovedCallback) -> m SignalHandlerId

-- | Connect a signal handler for the <a>actionRemoved</a> signal, to be
--   run before the default handler. When <a>overloading</a> is enabled,
--   this is equivalent to
--   
--   <pre>
--   <a>on</a> actionGroup #actionRemoved callback
--   </pre>
--   
--   This signal admits a optional parameter <tt>detail</tt>. If it's not
--   <tt>Nothing</tt>, we will connect to “<tt>action-removed::detail</tt>”
--   instead.
onActionGroupActionRemoved :: (IsActionGroup a, MonadIO m) => a -> Maybe Text -> ((?self :: a) => ActionGroupActionRemovedCallback) -> m SignalHandlerId

-- | Signals that the state of the named action has changed.
--   
--   <i>Since: 2.28</i>
type ActionGroupActionStateChangedCallback = Text -> GVariant -> IO ()

-- | Connect a signal handler for the <a>actionStateChanged</a> signal, to
--   be run after the default handler. When <a>overloading</a> is enabled,
--   this is equivalent to
--   
--   <pre>
--   <a>after</a> actionGroup #actionStateChanged callback
--   </pre>
--   
--   This signal admits a optional parameter <tt>detail</tt>. If it's not
--   <tt>Nothing</tt>, we will connect to
--   “<tt>action-state-changed::detail</tt>” instead.
--   
--   By default the object invoking the signal is not passed to the
--   callback. If you need to access it, you can use the implit
--   <tt>?self</tt> parameter. Note that this requires activating the
--   <tt>ImplicitParams</tt> GHC extension.
afterActionGroupActionStateChanged :: (IsActionGroup a, MonadIO m) => a -> Maybe Text -> ((?self :: a) => ActionGroupActionStateChangedCallback) -> m SignalHandlerId

-- | Connect a signal handler for the <a>actionStateChanged</a> signal, to
--   be run before the default handler. When <a>overloading</a> is enabled,
--   this is equivalent to
--   
--   <pre>
--   <a>on</a> actionGroup #actionStateChanged callback
--   </pre>
--   
--   This signal admits a optional parameter <tt>detail</tt>. If it's not
--   <tt>Nothing</tt>, we will connect to
--   “<tt>action-state-changed::detail</tt>” instead.
onActionGroupActionStateChanged :: (IsActionGroup a, MonadIO m) => a -> Maybe Text -> ((?self :: a) => ActionGroupActionStateChangedCallback) -> m SignalHandlerId
instance GHC.Classes.Eq GI.Gio.Interfaces.ActionGroup.ActionGroup
instance Data.GI.Base.BasicTypes.GObject GI.Gio.Interfaces.ActionGroup.ActionGroup
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Interfaces.ActionGroup.ActionGroup
instance (Data.GI.Base.BasicTypes.GObject o, Data.GI.Base.Overloading.IsDescendantOf GI.Gio.Interfaces.ActionGroup.ActionGroup o) => GI.Gio.Interfaces.ActionGroup.IsActionGroup o
instance Data.GI.Base.GValue.IsGValue (GHC.Internal.Maybe.Maybe GI.Gio.Interfaces.ActionGroup.ActionGroup)
instance Data.GI.Base.BasicTypes.ManagedPtrNewtype GI.Gio.Interfaces.ActionGroup.ActionGroup
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Interfaces.ActionGroup.ActionGroup


-- | <tt>GAsyncResult</tt> provides a base class for implementing
--   asynchronous function results.
--   
--   Asynchronous operations are broken up into two separate operations
--   which are chained together by a <tt>GAsyncReadyCallback</tt>. To begin
--   an asynchronous operation, provide a <tt>GAsyncReadyCallback</tt> to
--   the asynchronous function. This callback will be triggered when the
--   operation has completed, and must be run in a later iteration of the
--   thread-default main context (see <a>mainContextPushThreadDefault</a>)
--   from where the operation was initiated. It will be passed a
--   <tt>GAsyncResult</tt> instance filled with the details of the
--   operation's success or failure, the object the asynchronous function
--   was started for and any error codes returned. The asynchronous
--   callback function is then expected to call the corresponding
--   <tt>_finish()</tt> function, passing the object the function was
--   called for, the <tt>GAsyncResult</tt> instance, and (optionally) an
--   <i><tt>error</tt></i> to grab any error conditions that may have
--   occurred.
--   
--   The <tt>_finish()</tt> function for an operation takes the generic
--   result (of type <tt>GAsyncResult</tt>) and returns the specific result
--   that the operation in question yields (e.g. a <a>FileEnumerator</a>
--   for a "enumerate children" operation). If the result or error status
--   of the operation is not needed, there is no need to call the
--   <tt>_finish()</tt> function; GIO will take care of cleaning up the
--   result and error information after the <tt>GAsyncReadyCallback</tt>
--   returns. You can pass <tt>NULL</tt> for the
--   <tt>GAsyncReadyCallback</tt> if you don't need to take any action at
--   all after the operation completes. Applications may also take a
--   reference to the <tt>GAsyncResult</tt> and call <tt>_finish()</tt>
--   later; however, the <tt>_finish()</tt> function may be called at most
--   once.
--   
--   Example of a typical asynchronous operation flow:
--   
--   <h3><i>c code</i></h3>
--   
--   <pre>
--   void _theoretical_frobnitz_async (Theoretical         *t,
--                                     GCancellable        *c,
--                                     GAsyncReadyCallback  cb,
--                                     gpointer             u);
--   
--   gboolean _theoretical_frobnitz_finish (Theoretical   *t,
--                                          GAsyncResult  *res,
--                                          GError       **e);
--   
--   static void
--   frobnitz_result_func (GObject      *source_object,
--   		 GAsyncResult *res,
--   		 gpointer      user_data)
--   {
--     gboolean success = FALSE;
--   
--     success = _theoretical_frobnitz_finish (source_object, res, NULL);
--   
--     if (success)
--       g_printf ("Hurray!\n");
--     else
--       g_printf ("Uh oh!\n");
--   
--     ...
--   
--   }
--   
--   int main (int argc, void *argv[])
--   {
--      ...
--   
--      _theoretical_frobnitz_async (theoretical_data,
--                                   NULL,
--                                   frobnitz_result_func,
--                                   NULL);
--   
--      ...
--   }
--   </pre>
--   
--   The callback for an asynchronous operation is called only once, and is
--   always called, even in the case of a cancelled operation. On
--   cancellation the result is a <tt>G_IO_ERROR_CANCELLED</tt> error.
--   
--   <h2>I/O Priority</h2>
--   
--   Many I/O-related asynchronous operations have a priority parameter,
--   which is used in certain cases to determine the order in which
--   operations are executed. They are not used to determine system-wide
--   I/O scheduling. Priorities are integers, with lower numbers indicating
--   higher priority. It is recommended to choose priorities between
--   <tt>G_PRIORITY_LOW</tt> and <tt>G_PRIORITY_HIGH</tt>, with
--   <tt>G_PRIORITY_DEFAULT</tt> as a default.
module GI.Gio.Interfaces.AsyncResult

-- | Memory-managed wrapper type.
newtype AsyncResult
AsyncResult :: ManagedPtr AsyncResult -> AsyncResult

-- | Type class for types which can be safely cast to <a>AsyncResult</a>,
--   for instance with <a>toAsyncResult</a>.
class (GObject o, IsDescendantOf AsyncResult o) => IsAsyncResult o

-- | Cast to <a>AsyncResult</a>, for types for which this is known to be
--   safe. For general casts, use <a>castTo</a>.
toAsyncResult :: (MonadIO m, IsAsyncResult o) => o -> m AsyncResult

-- | Gets the source object from a <a>AsyncResult</a>.
asyncResultGetSourceObject :: (HasCallStack, MonadIO m, IsAsyncResult a) => a -> m (Maybe Object)

-- | Gets the user data from a <a>AsyncResult</a>.
asyncResultGetUserData :: (HasCallStack, MonadIO m, IsAsyncResult a) => a -> m (Ptr ())

-- | Checks if <i><tt>res</tt></i> has the given <i><tt>sourceTag</tt></i>
--   (generally a function pointer indicating the function
--   <i><tt>res</tt></i> was created by).
--   
--   <i>Since: 2.34</i>
asyncResultIsTagged :: (HasCallStack, MonadIO m, IsAsyncResult a) => a -> Ptr () -> m Bool

-- | If <i><tt>res</tt></i> is a <a>SimpleAsyncResult</a>, this is
--   equivalent to <a>simpleAsyncResultPropagateError</a>. Otherwise it
--   returns <tt>FALSE</tt>.
--   
--   This can be used for legacy error handling in async
--   <tt>*_finish()</tt> wrapper functions that traditionally handled
--   <a>SimpleAsyncResult</a> error returns themselves rather than calling
--   into the virtual method. This should not be used in new code;
--   <a>AsyncResult</a> errors that are set by virtual methods should also
--   be extracted by virtual methods, to enable subclasses to chain up
--   correctly.
--   
--   <i>Since: 2.34</i>
asyncResultLegacyPropagateError :: (HasCallStack, MonadIO m, IsAsyncResult a) => a -> m ()
instance GHC.Classes.Eq GI.Gio.Interfaces.AsyncResult.AsyncResult
instance Data.GI.Base.BasicTypes.GObject GI.Gio.Interfaces.AsyncResult.AsyncResult
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Interfaces.AsyncResult.AsyncResult
instance (Data.GI.Base.BasicTypes.GObject o, Data.GI.Base.Overloading.IsDescendantOf GI.Gio.Interfaces.AsyncResult.AsyncResult o) => GI.Gio.Interfaces.AsyncResult.IsAsyncResult o
instance Data.GI.Base.GValue.IsGValue (GHC.Internal.Maybe.Maybe GI.Gio.Interfaces.AsyncResult.AsyncResult)
instance Data.GI.Base.BasicTypes.ManagedPtrNewtype GI.Gio.Interfaces.AsyncResult.AsyncResult
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Interfaces.AsyncResult.AsyncResult


-- | <tt>GConverter</tt> is an interface for streaming conversions.
--   
--   <tt>GConverter</tt> is implemented by objects that convert binary data
--   in various ways. The conversion can be stateful and may fail at any
--   place.
--   
--   Some example conversions are: character set conversion, compression,
--   decompression and regular expression replace.
--   
--   <i>Since: 2.24</i>
module GI.Gio.Interfaces.Converter

-- | Memory-managed wrapper type.
newtype Converter
Converter :: ManagedPtr Converter -> Converter

-- | Type class for types which can be safely cast to <a>Converter</a>, for
--   instance with <a>toConverter</a>.
class (GObject o, IsDescendantOf Converter o) => IsConverter o

-- | Cast to <a>Converter</a>, for types for which this is known to be
--   safe. For general casts, use <a>castTo</a>.
toConverter :: (MonadIO m, IsConverter o) => o -> m Converter

-- | This is the main operation used when converting data. It is to be
--   called multiple times in a loop, and each time it will do some work,
--   i.e. producing some output (in <i><tt>outbuf</tt></i>) or consuming
--   some input (from <i><tt>inbuf</tt></i>) or both. If its not possible
--   to do any work an error is returned.
--   
--   Note that a single call may not consume all input (or any input at
--   all). Also a call may produce output even if given no input, due to
--   state stored in the converter producing output.
--   
--   If any data was either produced or consumed, and then an error
--   happens, then only the successful conversion is reported and the error
--   is returned on the next call.
--   
--   A full conversion loop involves calling this method repeatedly, each
--   time giving it new input and space output space. When there is no more
--   input data after the data in <i><tt>inbuf</tt></i>, the flag
--   <a>ConverterFlagsInputAtEnd</a> must be set. The loop will be (unless
--   some error happens) returning <a>ConverterResultConverted</a> each
--   time until all data is consumed and all output is produced, then
--   <a>ConverterResultFinished</a> is returned instead. Note, that
--   <a>ConverterResultFinished</a> may be returned even if
--   <a>ConverterFlagsInputAtEnd</a> is not set, for instance in a
--   decompression converter where the end of data is detectable from the
--   data (and there might even be other data after the end of the
--   compressed data).
--   
--   When some data has successfully been converted
--   <i><tt>bytesRead</tt></i> and is set to the number of bytes read from
--   <i><tt>inbuf</tt></i>, and <i><tt>bytesWritten</tt></i> is set to
--   indicate how many bytes was written to <i><tt>outbuf</tt></i>. If
--   there are more data to output or consume (i.e. unless the
--   <a>ConverterFlagsInputAtEnd</a> is specified) then
--   <a>ConverterResultConverted</a> is returned, and if no more data is to
--   be output then <a>ConverterResultFinished</a> is returned.
--   
--   On error <a>ConverterResultError</a> is returned and
--   <i><tt>error</tt></i> is set accordingly. Some errors need special
--   handling:
--   
--   <a>IOErrorEnumNoSpace</a> is returned if there is not enough space to
--   write the resulting converted data, the application should call the
--   function again with a larger <i><tt>outbuf</tt></i> to continue.
--   
--   <a>IOErrorEnumPartialInput</a> is returned if there is not enough
--   input to fully determine what the conversion should produce, and the
--   <a>ConverterFlagsInputAtEnd</a> flag is not set. This happens for
--   example with an incomplete multibyte sequence when converting text, or
--   when a regexp matches up to the end of the input (and may match
--   further input). It may also happen when <i><tt>inbufSize</tt></i> is
--   zero and there is no more data to produce.
--   
--   When this happens the application should read more input and then call
--   the function again. If further input shows that there is no more data
--   call the function again with the same data but with the
--   <a>ConverterFlagsInputAtEnd</a> flag set. This may cause the
--   conversion to finish as e.g. in the regexp match case (or, to fail
--   again with <a>IOErrorEnumPartialInput</a> in e.g. a charset conversion
--   where the input is actually partial).
--   
--   After <a>converterConvert</a> has returned
--   <a>ConverterResultFinished</a> the converter object is in an invalid
--   state where its not allowed to call <a>converterConvert</a> anymore.
--   At this time you can only free the object or call
--   <a>converterReset</a> to reset it to the initial state.
--   
--   If the flag <a>ConverterFlagsFlush</a> is set then conversion is
--   modified to try to write out all internal state to the output. The
--   application has to call the function multiple times with the flag set,
--   and when the available input has been consumed and all internal state
--   has been produced then <a>ConverterResultFlushed</a> (or
--   <a>ConverterResultFinished</a> if really at the end) is returned
--   instead of <a>ConverterResultConverted</a>. This is somewhat similar
--   to what happens at the end of the input stream, but done in the middle
--   of the data.
--   
--   This has different meanings for different conversions. For instance in
--   a compression converter it would mean that we flush all the
--   compression state into output such that if you uncompress the
--   compressed data you get back all the input data. Doing this may make
--   the final file larger due to padding though. Another example is a
--   regexp conversion, where if you at the end of the flushed data have a
--   match, but there is also a potential longer match. In the non-flushed
--   case we would ask for more input, but when flushing we treat this as
--   the end of input and do the match.
--   
--   Flushing is not always possible (like if a charset converter flushes
--   at a partial multibyte sequence). Converters are supposed to try to
--   produce as much output as possible and then return an error (typically
--   <a>IOErrorEnumPartialInput</a>).
--   
--   <i>Since: 2.24</i>
converterConvert :: (HasCallStack, MonadIO m, IsConverter a) => a -> Maybe ByteString -> ByteString -> [ConverterFlags] -> m (ConverterResult, CSize, CSize)

-- | Applies <i><tt>converter</tt></i> to the data in
--   <i><tt>bytes</tt></i>.
--   
--   <i>Since: 2.82</i>
converterConvertBytes :: (HasCallStack, MonadIO m, IsConverter a) => a -> Bytes -> m Bytes

-- | Resets all internal state in the converter, making it behave as if it
--   was just created. If the converter has any internal state that would
--   produce output then that output is lost.
--   
--   <i>Since: 2.24</i>
converterReset :: (HasCallStack, MonadIO m, IsConverter a) => a -> m ()
instance GHC.Classes.Eq GI.Gio.Interfaces.Converter.Converter
instance Data.GI.Base.BasicTypes.GObject GI.Gio.Interfaces.Converter.Converter
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Interfaces.Converter.Converter
instance (Data.GI.Base.BasicTypes.GObject o, Data.GI.Base.Overloading.IsDescendantOf GI.Gio.Interfaces.Converter.Converter o) => GI.Gio.Interfaces.Converter.IsConverter o
instance Data.GI.Base.GValue.IsGValue (GHC.Internal.Maybe.Maybe GI.Gio.Interfaces.Converter.Converter)
instance Data.GI.Base.BasicTypes.ManagedPtrNewtype GI.Gio.Interfaces.Converter.Converter
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Interfaces.Converter.Converter


-- | <tt>GIcon</tt> is a very minimal interface for icons. It provides
--   functions for checking the equality of two icons, hashing of icons and
--   serializing an icon to and from strings.
--   
--   <tt>GIcon</tt> does not provide the actual pixmap for the icon as this
--   is out of GIO's scope, however implementations of <tt>GIcon</tt> may
--   contain the name of an icon (see <a>ThemedIcon</a>), or the path to an
--   icon (see <a>LoadableIcon</a>).
--   
--   To obtain a hash of a <tt>GIcon</tt>, see <a>iconHash</a>.
--   
--   To check if two <tt>GIcon</tt>s are equal, see <a>iconEqual</a>.
--   
--   For serializing a <tt>GIcon</tt>, use <a>iconSerialize</a> and
--   <a>iconDeserialize</a>.
--   
--   If you want to consume <tt>GIcon</tt> (for example, in a toolkit) you
--   must be prepared to handle at least the three following cases:
--   <a>LoadableIcon</a>, <a>ThemedIcon</a> and <a>EmblemedIcon</a>. It may
--   also make sense to have fast-paths for other cases (like handling
--   <a>`GdkPixbuf`</a> directly, for example) but all compliant
--   <tt>GIcon</tt> implementations outside of GIO must implement
--   <a>LoadableIcon</a>.
--   
--   If your application or library provides one or more <tt>GIcon</tt>
--   implementations you need to ensure that your new implementation also
--   implements <a>LoadableIcon</a>. Additionally, you must provide an
--   implementation of <a>iconSerialize</a> that gives a result that is
--   understood by <a>iconDeserialize</a>, yielding one of the built-in
--   icon types.
module GI.Gio.Interfaces.Icon

-- | Memory-managed wrapper type.
newtype Icon
Icon :: ManagedPtr Icon -> Icon

-- | Type class for types which can be safely cast to <a>Icon</a>, for
--   instance with <a>toIcon</a>.
class (GObject o, IsDescendantOf Icon o) => IsIcon o

-- | Cast to <a>Icon</a>, for types for which this is known to be safe. For
--   general casts, use <a>castTo</a>.
toIcon :: (MonadIO m, IsIcon o) => o -> m Icon

-- | Deserializes a <a>Icon</a> previously serialized using
--   <a>iconSerialize</a>.
--   
--   <i>Since: 2.38</i>
iconDeserialize :: (HasCallStack, MonadIO m) => GVariant -> m (Maybe Icon)

-- | Checks if two icons are equal.
iconEqual :: (HasCallStack, MonadIO m, IsIcon a, IsIcon b) => Maybe a -> Maybe b -> m Bool

-- | Gets a hash for an icon.
iconHash :: (HasCallStack, MonadIO m, IsIcon a) => a -> m Word32

-- | Generate a <a>Icon</a> instance from <i><tt>str</tt></i>. This
--   function can fail if <i><tt>str</tt></i> is not valid - see
--   <a>iconToString</a> for discussion.
--   
--   If your application or library provides one or more <a>Icon</a>
--   implementations you need to ensure that each <a>GType</a> is
--   registered with the type system prior to calling
--   <a>iconNewForString</a>.
--   
--   <i>Since: 2.20</i>
iconNewForString :: (HasCallStack, MonadIO m) => Text -> m Icon

-- | Serializes a <a>Icon</a> into a <a>GVariant</a>. An equivalent
--   <a>Icon</a> can be retrieved back by calling <a>iconDeserialize</a> on
--   the returned value. As serialization will avoid using raw icon data
--   when possible, it only makes sense to transfer the <a>GVariant</a>
--   between processes on the same machine, (as opposed to over the
--   network), and within the same file system namespace.
--   
--   <i>Since: 2.38</i>
iconSerialize :: (HasCallStack, MonadIO m, IsIcon a) => a -> m (Maybe GVariant)

-- | Generates a textual representation of <i><tt>icon</tt></i> that can be
--   used for serialization such as when passing <i><tt>icon</tt></i> to a
--   different process or saving it to persistent storage. Use
--   <a>iconNewForString</a> to get <i><tt>icon</tt></i> back from the
--   returned string.
--   
--   The encoding of the returned string is proprietary to <a>Icon</a>
--   except in the following two cases
--   
--   <ul>
--   <li>If <i><tt>icon</tt></i> is a <a>FileIcon</a>, the returned string
--   is a native path (such as <tt>/path/to/my icon.png</tt>) without
--   escaping if the <a>File</a> for <i><tt>icon</tt></i> is a native file.
--   If the file is not native, the returned string is the result of
--   <a>fileGetUri</a> (such as
--   <tt>sftp://path/to/my%20icon.png</tt>).</li>
--   <li>If <i><tt>icon</tt></i> is a <a>ThemedIcon</a> with exactly one
--   name and no fallbacks, the encoding is simply the name (such as
--   <tt>network-server</tt>).</li>
--   </ul>
--   
--   <i>Since: 2.20</i>
iconToString :: (HasCallStack, MonadIO m, IsIcon a) => a -> m (Maybe Text)
instance GHC.Classes.Eq GI.Gio.Interfaces.Icon.Icon
instance Data.GI.Base.BasicTypes.GObject GI.Gio.Interfaces.Icon.Icon
instance Data.GI.Base.Overloading.HasParentTypes GI.Gio.Interfaces.Icon.Icon
instance Data.GI.Base.GValue.IsGValue (GHC.Internal.Maybe.Maybe GI.Gio.Interfaces.Icon.Icon)
instance (Data.GI.Base.BasicTypes.GObject o, Data.GI.Base.Overloading.IsDescendantOf GI.Gio.Interfaces.Icon.Icon o) => GI.Gio.Interfaces.Icon.IsIcon o
instance Data.GI.Base.BasicTypes.ManagedPtrNewtype GI.Gio.Interfaces.Icon.Icon
instance Data.GI.Base.BasicTypes.TypedObject GI.Gio.Interfaces.Icon.Icon


-- | <tt>GListModel</tt> is an interface that represents a mutable list of
--   <a>Object</a>. Its main intention is as a model for various widgets in
--   user interfaces, such as list views, but it can also be used as a
--   convenient method of returning lists of data, with support for
--   updates.
--   
--   Each object in the list may also report changes in itself via some
--   mechanism (normally the <a>Object::notify</a> signal). Taken together
--   with the <a>ListModel::itemsChanged</a> signal, this provides for a
--   list that can change its membership, and in which the members can
--   change their individual properties.
--   
--   A good example would be the list of visible wireless network access
--   points, where each access point can report dynamic properties such as
--   signal strength.
--   
--   It is important to note that the <tt>GListModel</tt> itself does not
--   report changes to the individual items. It only reports changes to the
--   list membership. If you want to observe changes to the objects
--   themselves then you need to connect signals to the objects that you
--   are interested in.
--   
--   All items in a <tt>GListModel</tt> are of (or derived from) the same
--   type. <a>listModelGetItemType</a> returns that type. The type may be
--   an interface, in which case all objects in the list must implement it.
--   
--   The semantics are close to that of an array: <a>listModelGetNItems</a>
--   returns the number of items in the list and <a>listModelGetItem</a>
--   returns an item at a (0-based) position. In order to allow
--   implementations to calculate the list length lazily, you can also
--   iterate over items: starting from 0, repeatedly call
--   <a>listModelGetItem</a> until it returns <tt>NULL</tt>.
--   
--   An implementation may create objects lazily, but must take care to
--   return the same object for a given position until all references to it
--   are gone.
--   
--   On the other side, a consumer is expected only to hold references on
--   objects that are currently ‘user visible’, in order to facilitate the
--   maximum level of laziness in the implementation of the list and to
--   reduce the required number of signal connections at a given time.
--   
--   This interface is intended only to be used from a single thread. The
--   thread in which it is appropriate to use it depends on the particular
--   implementation, but typically it will be from the thread that owns the
--   thread-default main context (see <a>mainContextPushThreadDefault</a>)
--   in effect at the time that the model was created.
--   
--   Over time, it has established itself as good practice for list model
--   implementations to provide properties <tt>item-type</tt> and
--   <tt>n-items</tt> to ease working with them. While it is not required,
--   it is recommended that implementations provide these two properties.
--   They should return the values of <a>listModelGetItemType</a> and
--   <a>listModelGetNItems</a> respectively and be defined as such:
--   
--   <h3><i>c code</i></h3>
--   
--   <pre>
--   properties[PROP_ITEM_TYPE] =
--     g_param_spec_gtype ("item-type", NULL, NULL, G_TYPE_OBJECT,
--                         G_PARAM_CONSTRUCT_ONLY | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
--   properties[PROP_N_ITEMS] =
--     g_param_spec_uint ("n-items", NULL, NULL, 0, G_MAXUINT, 0,
--                        G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
--   </pre>
module GI.Gio.Interfaces.ListModel

-- | Memory-managed wrapper type.
newtype ListModel
ListModel :: ManagedPtr ListModel -> ListModel

-- | Type class for types which can be safely cast to <a>ListModel</a>, for
--   instance with <a>toListModel</a>.
class (GObject o, IsDescendantOf ListModel o) => IsListModel o

-- | Cast to <a>ListModel</a>, for types for which this is known to be
--   safe. For general casts, use <a>castTo</a>.
toListModel :: (MonadIO m, IsListModel o) => o -> m ListModel

-- | Get the item at <i><tt>position</tt></i>.
--   
--   If <i><tt>position</tt></i> is greater than the number of items in
--   <i><tt>list</tt></i>, <a>Nothing</a> is returned.
--   
--   <a>Nothing</a> is never returned for an index that is smaller than the
--   length of the list.
--   
--   This function is meant to be used by language bindings in place of
--   <tt><i>g_list_model_get_item()</i></tt>.
--   
--   See also: <a>listModelGetNItems</a>
--   
--   <i>Since: 2.44</i>
listModelGetItem :: (HasCallStack, MonadIO m, IsListModel a) => a -> Word32 -> m (Maybe Object)

-- | Gets the type of the items in <i><tt>list</tt></i>.
--   
--   All items returned from <tt><i>g_list_model_get_item()</i></tt> are of
--   the type returned by this function, or a subtype, or if the type is an
--   interface, they are an implementation of that interface.
--   
--   The item type of a <a>ListModel</a> can not change during the life of
--   the model.
--   
--   <i>Since: 2.44</i>
listModelGetItemType :: (HasCallStack, MonadIO m, IsListModel a) => a -> m GType

-- | Gets the number of items in <i><tt>list</tt></i>.
--   
--   Depending on the model implementation, calling this function may be
--   less efficient than iterating the list with increasing values for
--   <i><tt>position</tt></i> until <tt><i>g_list_model_get_item()</i></tt>
--   returns <a>Nothing</a>.
--   
--   <i>Since: 2.44</i>
listModelGetNItems :: (HasCallStack, MonadIO m, IsListModel a) => a -> m Word32

-- | Emits the <a>ListModel::itemsChanged</a> signal on
--   <i><tt>list</tt></i>.
--   
--   This function should only be called by classes implementing
--   <a>ListModel</a>. It has to be called after the internal
--   representation of <i><tt>list</tt></i> has been updated, because
--   handlers connected to this signal might query the new state of the
--   list.
--   
--   Implementations must only make changes to the model (as visible to its
--   consumer) in places that will not cause problems for that consumer.
--   For models that are driven directly by a write API (such as
--   <a>ListStore</a>), changes can be reported in response to uses of that
--   API. For models that represent remote data, changes should only be
--   made from a fresh mainloop dispatch. It is particularly not permitted
--   to make changes in response to a call to the <a>ListModel</a> consumer
--   API.
--   
--   Stated another way: in general, it is assumed that code making a
--   series of accesses to the model via the API, without returning to the
--   mainloop, and without calling other code, will continue to view the
--   same contents of the model.
--   
--   <i>Since: 2.44</i>
listModelItemsChanged :: (HasCallStack, MonadIO m, IsListModel a) => a -> Word32 -> Word32 -> Word32 -> m ()

-- | This signal is emitted whenever items were added to or removed from
--   <i><tt>list</tt></i>. At <i><tt>position</tt></i>,
--   <i><tt>removed</tt></i> items were removed and <i><tt>added</tt></i>
--   items were added in their place.
--   
--   Note: If <tt>removed != added</tt>, the positions of all later items
--   in the model change.
--   
--   <i>Since: 2.44</i>
type ListModelItemsChangedCallback = Word32 -> Word32 -> Word32 -> IO ()

-- | Connect a signal handler for the <a>itemsChanged</a> signal, to be run
--   after the default handler. When <a>overloading</a> is enabled, this is
--   equivalent to
--   
--   <pre>
--   <a>after</a> listModel #itemsChanged callback
--   </pre>
--   
--   By default the object invoking the signal is not passed to the
--   callback. If you need to access it, you can use the implit
--   <tt>?self</tt> parameter. Note that this requires act                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            