CVE-2021-22204: Improper Control of Generation of Code ('Code Injection') (CWE-94)
value: Improper neutralization of user data in the DjVu file format in ExifTool versions 7.44 and up allows arbitrary code execution when parsing the malicious image
CWE description: The product constructs all or part of a code segment using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the syntax or behavior of the intended code segment.
CVSS v3 base score: 7.8
Published: 2021-04-23T18:15Z
Repository: https://github.com/exiftool/exiftool
Language: HTML
Files changed: Changes, META.json, META.yml, README, config_files/acdsee.config, exiftool, html/ExifTool.html, html/ExifTool.pdf, html/Shift.pdf, html/TagNames/FujiFilm.html, html/TagNames/Jpeg2000.html, html/TagNames/MacOS.html, html/TagNames/Panasonic.html, html/TagNames/PhaseOne.html, html/TagNames/Sony.html, html/TagNames/index.html, html/exiftool_pod.html, html/exiftool_pod.pdf, html/history.html, html/index.html, html/install.html, lib/Image/ExifTool.pm, lib/Image/ExifTool.pod, lib/Image/ExifTool/DjVu.pm, lib/Image/ExifTool/FujiFilm.pm, lib/Image/ExifTool/Jpeg2000.pm, lib/Image/ExifTool/MacOS.pm, lib/Image/ExifTool/Microsoft.pm, lib/Image/ExifTool/Panasonic.pm, lib/Image/ExifTool/PhaseOne.pm, lib/Image/ExifTool/Sony.pm, lib/Image/ExifTool/TagLookup.pm, lib/Image/ExifTool/TagNames.pod, lib/Image/ExifTool/Writer.pl, perl-Image-ExifTool.spec, t/ExifTool_2.out, t/ExifTool_29.out, t/Writer_51.out, windows_exiftool
Commit date: 2021-04-13 11:11:46 -0400
Commit message: Update to 12.24

Diff: diff --git a/Changes b/Changes
index 3e694fe7..16922a81 100644
--- a/Changes
+++ b/Changes
@@ -5,10 +5,21 @@ ExifTool Version History
 RSS feed: https://exiftool.org/rss.xml
 
 Note: The most recent production release is Version 12.16. (Other versions are
 considered development releases, and are not uploaded to MetaCPAN.)
 
+Apr. 13, 2021 - Version 12.24
+
+  - Added a new PhaseOne RawFormat value (thanks LibRaw)
+  - Decode a new Sony tag (thanks Jos Roost)
+  - Decode a few new Panasonic and FujiFilm tags (thanks LibRaw and Greybeard)
+  - Patched security vulnerability in DjVu reader
+  - Updated acdsee.config in distribution (thanks StarGeek)
+  - Recognize AutoCAD DXF files
+  - More work on experimental JUMBF read support
+  - More work on experimental JXL read/write support
+
 Apr. 1, 2021 - Version 12.23
 
   - Added support for Olympus ORI files
   - Added experimental read/write support for JPEG XL images
   - Added experimental read support for JUMBF metadata in JPEG and Jpeg2000
diff --git a/META.json b/META.json
index f7969da4..f59bd9cd 100644
--- a/META.json
+++ b/META.json
@@ -45,8 +45,8 @@
             "perl" : "5.004"
          }
       }
    },
    "release_status" : "stable",
-   "version" : "12.23",
+   "version" : "12.24",
    "x_serialization_backend" : "JSON::PP version 4.02"
 }
diff --git a/META.yml b/META.yml
index 3211347e..c874781e 100644
--- a/META.yml
+++ b/META.yml
@@ -26,7 +26,7 @@ recommends:
   IO::Uncompress::RawInflate: 0
   POSIX::strptime: 0
   Time::HiRes: 0
 requires:
   perl: 5.004
-version: 12.23
+version: 12.24
 x_serialization_backend: 'JSON::PP version 4.02'
diff --git a/README b/README
index 7e6d3873..bad3817d 100644
--- a/README
+++ b/README
@@ -104,12 +104,12 @@ the directory where you downloaded the ExifTool distribution package.
 Assuming, for example, you downloaded it to a folder called "Desktop" in
 your home directory, then you would type the following commands in a
 terminal window to extract and run ExifTool:
 
   cd ~/Desktop
-  gzip -dc Image-ExifTool-12.23.tar.gz | tar -xf -
-  cd Image-ExifTool-12.23
+  gzip -dc Image-ExifTool-12.24.tar.gz | tar -xf -
+  cd Image-ExifTool-12.24
   ./exiftool t/images/ExifTool.jpg
 
 Note:  These commands extract meta information from one of the test images. 
 To use one of your images instead, enter the full path name of your file in
 place of "t/images/ExifTool.jpg".
diff --git a/config_files/acdsee.config b/config_files/acdsee.config
index f05fdba9..86330f2e 100644
--- a/config_files/acdsee.config
+++ b/config_files/acdsee.config
@@ -1,23 +1,79 @@
 #------------------------------------------------------------------------------
 # File:         acdsee.config
 #
 # Description:  This config file defines ACDSee XMP region tags for writing.
+#               The following tags are created in the XMP-acdsee-rs group
 #
-# Usage:        exiftool -config acdsee.config -ACDSEETAG=VALUE FILE ...
+#                   RegionInfoACDSee : The structured tag for the ACDSee regions
+#                                      (similar to XMP-mwg-rs:RegionInfo)
+#
+#                   The following tags are the width, height, and unit of the
+#                   image at the time of processing  when storing image region
+#                   metadata.  They are similar to the AppliedToDimensions tags
+#                   of the MWG regions.
+#                       ACDSeeRegionAppliedToDimensionsH : Height of the image
+#                       ACDSeeRegionAppliedToDimensionsUnit : Unit of the image
+#                       ACDSeeRegionAppliedToDimensionsW : Width of the image
+#
+#                   Actual region data, stored in an array.  These flattened tags
+#                   are treated as List Type tags.  There are two region types,
+#                   the ALYArea and the DLYArea.  The ALYArea tags tags assigned
+#                   by ACDSee and are usually square in dimensions.  The DLYArea
+#                   tags are both the tags assigned by ACDSee (but possibly
+#                   rectangular instead of square) as well as any  manual
+#                   assigned tags.  They are similar to the area tags of the MWG
+#                   regions.
+#                       ACDSeeRegionDLYAreaH : Height of DLY region
+#                       ACDSeeRegionDLYAreaW : Width of DLY region
+#                       ACDSeeRegionDLYAreaX : X centerpoint of DLY region
+#                       ACDSeeRegionDLYAreaY : Y centerpoint of DLY region
+#                       ACDSeeRegionALYAreaH : Height of ALY region
+#                       ACDSeeRegionALYAreaW : Width of ALY region
+#                       ACDSeeRegionALYAreaX : X centerpoint of ALY region
+#                       ACDSeeRegionALYAreaY : Y centerpoint of ALY region
+#                       ACDSeeRegionName : Name of region
+#                       ACDSeeRegionType : Type of region
+#                       ACDSeeRegionNameAssignType : How the type was assigned.
+#                                                    "Manual" is the only known
+#                                                    entry at this time
+#
+#               Conversion tags.  These tags can be used to convert other region
+#               type tags to ACDSee regions.
+#                   MPRegion2ACDSeeRegion : Converts a Microsoft RegionInfoMP
+#                   IPTCRegion2ACDSeeRegion : Converts an IPTC ImageRegion
+#                   MWGRegion2ACDSeeRegion : Converts a MWG RegionInfo
+#
+# Usage:        To set individual tags
+#               exiftool -config acdsee.config -ACDSEETAG=VALUE FILE ...
+#
+#               To convert Microsoft Regions to ACDSee regions
+#               exiftool -config acdsee.config "-RegionInfoACDSee<MPRegion2ACDSeeRegion" File ...
+#               To convert IPTC regions to ACDSee regions
+#               exiftool -config acdsee.config "-RegionInfoACDSee<IPTCRegion2ACDSeeRegion" File ...
+#               To convert MWG Regions to ACDSee regions
+#               exiftool -config acdsee.config "-RegionInfoACDSee<MWGRegion2ACDSeeRegion" File ...
 #
 # Requires:     ExifTool version 10.28 or later
 #
 # Revisions:    2020/01/28 - Bryan K. Williams (aka StarGeek) Created
+#               2021/04/08 - BKW Added tags to convert from Microsoft, IPTC,
+#                            and MWG regions to ACDSee regions based upon
+#                            convert_regions.config.  Expanded docs.
+#                            Shortened ADCSee tag names and added shortcuts
+#                            from original names to new names, for example
+#                            "RegionInfoACDSeeAppliedToDimensions*" -> "ACDSeeRegionAppliedToDimensions*"
+#                            "RegionInfoACDSeeRegionList* -> "ACDSeeRegion*"
 #------------------------------------------------------------------------------
+use Data::Dumper;
 
 my %sACDSeeDimensions = (
     STRUCT_NAME => 'ACDSee Dimensions',
     NAMESPACE   => {'acdsee-stDim' => 'http://ns.acdsee.com/sType/Dimensions#'},
-    'w'           => { Writable => 'real' },
-    'h'           => { Writable => 'real' },
-    'unit'        => { },
+    'w'         => { Writable => 'real' },
+    'h'         => { Writable => 'real' },
+    'unit'      => { },
 );
 
 my %sACDSeeArea = (
     STRUCT_NAME => 'ACDSee Area',
     NAMESPACE => { 'acdsee-stArea' => 'http://ns.acdsee.com/sType/Area#' },
@@ -36,36 +92,167 @@ my %sACDSeeRegionStruct = (
     NameAssignType  => { },
     Type            => { },
 );
 
 %Image::ExifTool::UserDefined = (
-    # new XMP namespaces (eg. xxx) must be added to the Main XMP table:
+    # new XMP namespaces for ACDSee regions
     'Image::ExifTool::XMP::Main' => {
         'acdsee-rs' => { # <-- must be the same as the NAMESPACE prefix
             SubDirectory => { 
                 TagTable => 'Image::ExifTool::UserDefined::ACDSeeRegions' 
             },
         },
     },
+    'Image::ExifTool::Composite' => {
+    # create an ACDSee RegionInfo structure from a Microsoft RegionInfoMP structure
+        MPRegion2ACDSeeRegion => {
+            Require => {
+                0 => 'RegionInfoMP',
+                1 => 'ImageWidth',
+                2 => 'ImageHeight',
+            },
+            ValueConv => q{
+                my ($rgn, @newRgns);
+                foreach $rgn (@{$val[0]{Regions}}) {
+                    my $name = $$rgn{PersonDisplayName};
+                    next unless $$rgn{Rectangle} or defined $name;
+                    my %newRgn = ( Type => 'Face' );
+                    if (defined $name) {
+                        # don't add ignored faces
+                        next if $name eq 'ffffffffffffffff';
+                        $newRgn{Name} = $name;
+                    }
+                    if ($$rgn{Rectangle}) {
+                        my @rect = split /\s*,\s*/, $$rgn{Rectangle};
+                        $newRgn{DLYArea} = {
+                            X => $rect[0] + $rect[2]/2,
+                            Y => $rect[1] + $rect[3]/2,
+                            W => $rect[2],
+                            H => $rect[3],
+                        } if @rect == 4;
+                    }
+                    push @newRgns, \%newRgn;
+                }
+                return {
+                    AppliedToDimensions => { W => $val[1], H => $val[2], Unit => 'pixel' },
+                    RegionList => \@newRgns,
+                };
+            },
+        },
+        # create an ACDSee RegionInfo structure from an IPTC ImageRegion list
+        IPTCRegion2ACDSeeRegion => {
+            Require => {
+                0 => 'ImageRegion',
+                1 => 'ImageWidth',
+                2 => 'ImageHeight',
+            },
+            ValueConv => q{
+                my ($rgn, @newRgns);
+                my $rgns = ref $val[0] eq 'ARRAY' ? $val[0] : [ $val[0] ]; 
+                foreach $rgn (@$rgns) {
+                    my %newRgn = ( Type => 'Face' );
+                    if ($$rgn{RegionBoundary} and $$rgn{RegionBoundary}{RbShape} eq 'rectangle') {
+                        my @rect = @{$$rgn{RegionBoundary}}{'RbX','RbY','RbW','RbH'};
+                        if ($$rgn{RegionBoundary}{RbUnit} eq 'pixel') {
+                            $rect[0] /= $val[1],  $rect[2] /= $val[1];
+                            $rect[1] /= $val[2];  $rect[3] /= $val[2];
+                        }
+                        $newRgn{'DLYArea'} = {
+                            X => $rect[0] + $rect[2]/2,
+                            Y => $rect[1] + $rect[3]/2,
+                            W => $rect[2],
+                            H => $rect[3],
+                        };
+                    } else {
+                        next unless defined $$rgn{Name};
+                    }
+                    $newRgn{Name} = $$rgn{Name} if defined $$rgn{Name};
+                    push @newRgns, \%newRgn;
+                }
+                return {
+                    AppliedToDimensions => { 'W' => $val[1], 'H' => $val[2], 'Unit' => 'pixel' },
+                    RegionList => \@newRgns,
+                };
+            },
+        },
+
+        # create an MWG RegionInfo structure from an IPTC ImageRegion list
+        MWGRegion2ACDSeeRegion => {
+            Require => {
+                0 => 'RegionInfo',
+                1 => 'ImageWidth',
+                2 => 'ImageHeight',
+            },
+            ValueConv => q{
+                my ($rgn, @newRgns);
+                my %newRgn;
+                foreach $rgn (@{$val[0]{RegionList}}) {
+                    next unless $$rgn{Area} or defined $$rgn{Name};
+                    my %newRgn;
+                    if ($$rgn{Area}) {
+                        $newRgn{'DLYArea'} = {
+                            'X' => $$rgn{Area}{'X'},
+                            'Y' => $$rgn{Area}{'Y'},
+                            'W' => $$rgn{Area}{'W'},
+                            'H' => $$rgn{Area}{'H'},
+                        };
+                    };
+                    $newRgn{Name} = $$rgn{Name} if defined $$rgn{Name};
+                    $newRgn{'Type'} = $$rgn{'Type'} if defined $$rgn{'Type'};
+                    push @newRgns, \%newRgn;
+                }
+                return {
+                    'AppliedToDimensions' => $val[0]{'AppliedToDimensions'},
+                    RegionList => \@newRgns,
+                }
+            },
+        },
+        ####
+    },
 );
 
 %Image::ExifTool::UserDefined::ACDSeeRegions = (
     GROUPS => { 0 => 'XMP', 1 => 'XMP-acdsee', 2 => 'Image' },
     NAMESPACE => { 'acdsee-rs' => 'http://ns.acdsee.com/regions/' },
     WRITABLE => 'string', # (default to string-type tags)
     Regions => {
         Name => 'RegionInfoACDSee',
+        FlatName => 'ACDSee',
         # the "Struct" entry defines the structure fields
         Struct => {
             # optional structure name (used for warning messages only)
             STRUCT_NAME => 'ACDSee RegionInfo',        
             RegionList => {
+                FlatName => 'Region',
                 Struct => \%sACDSeeRegionStruct,
                 List => 'Bag',
             },
-            AppliedToDimensions => { Struct => \%sACDSeeDimensions },
+            AppliedToDimensions => { 
+            FlatName => 'RegionAppliedToDimensions',Struct => \%sACDSeeDimensions },
         },
     },
 );
 
+# Shortcuts to old names added so as not to break previously used commands
+%Image::ExifTool::UserDefined::Shortcuts = (
+    RegionInfoACDSeeAppliedToDimensionsH        => 'ACDSeeRegionAppliedToDimensionsH',
+    RegionInfoACDSeeAppliedToDimensionsUnit     => 'ACDSeeRegionAppliedToDimensionsUnit',
+    RegionInfoACDSeeAppliedToDimensionsW        => 'ACDSeeRegionAppliedToDimensionsW',
+    RegionInfoACDSeeRegionListDLYAreaH          => 'ACDSeeRegionDLYAreaH',
+    RegionInfoACDSeeRegionListDLYAreaW          => 'ACDSeeRegionDLYAreaW',
+    RegionInfoACDSeeRegionListDLYAreaX          => 'ACDSeeRegionDLYAreaX',  
+    RegionInfoACDSeeRegionListDLYAreaY          => 'ACDSeeRegionDLYAreaY',
+    RegionInfoACDSeeRegionListALGAreaH          => 'ACDSeeRegionALGAreaH',
+    RegionInfoACDSeeRegionListALGAreaW          => 'ACDSeeRegionALGAreaW',
+    RegionInfoACDSeeRegionListALGAreaX          => 'ACDSeeRegionALGAreaX',
+    RegionInfoACDSeeRegionListALGAreaY          => 'ACDSeeRegionALGAreaY',
+    RegionInfoACDSeeRegionListName              => 'ACDSeeRegionName',
+    RegionInfoACDSeeRegionListType              => 'ACDSeeRegionType',
+    RegionInfoACDSeeRegionListNameAssignType    => 'ACDSeeRegionNameAssignType',
+);
+
+# Forced -struct option during debugging
+#%Image::ExifTool::UserDefined::Options = (
+#   Struct => 1,
+#);
 #------------------------------------------------------------------------------
 1;  #end
\ No newline at end of file
diff --git a/exiftool b/exiftool
index 1df77e34..f6a4caea 100755
--- a/exiftool
+++ b/exiftool
@@ -8,11 +8,11 @@
 #               (See html/history.html for revision history)
 #------------------------------------------------------------------------------
 use strict;
 require 5.004;
 
-my $version = '12.23';
+my $version = '12.24';
 
 # add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
 my $exeDir;
 BEGIN {
     # (undocumented -xpath option added in 11.91, must come before other options)
@@ -5391,11 +5391,11 @@ with this command:
 
     exiftool -p test.fmt a.jpg b.jpg
 
 produces output like this:
 
-    -- Generated by ExifTool 12.23 --
+    -- Generated by ExifTool 12.24 --
     File: a.jpg - 2003:10:31 15:44:19
     (f/5.6, 1/60s, ISO 100)
     File: b.jpg - 2006:05:23 11:57:38
     (f/8.0, 1/13s, ISO 100)
     -- end --
diff --git a/html/ExifTool.html b/html/ExifTool.html
index ce0cb898..3b71f3b8 100644
--- a/html/ExifTool.html
+++ b/html/ExifTool.html
@@ -427,11 +427,11 @@ numerical options.</p>
     Tag values representing large binary data blocks (eg. ThumbnailImage)
     are not necessarily extracted unless this option is set or the tag is
     specifically requested by name.</td>
     <td align=center>0 or 1</td><td align=center>undef</td></tr>
 <tr id="BlockExtract"><td>BlockExtract</td><td>Flag to extract some directories
-    (mentioned in the Tag Name documentation) as a block.</td>
+    (mentioned in the <a href="TagNames/index.html">Tag Name documentation</a>) as a block.</td>
     <td align=center><table class=clear>
     <tr><td valign=top align=right><b>0</b>&nbsp;=</td><td>Extract as block only if tag specified by name</td></tr>
     <tr><td valign=top align=right><b>1</b>&nbsp;=</td><td>Extract as block, and extract contained tags</td></tr>
     <tr><td valign=top align=right><b>2</b>&nbsp;=</td><td>Extract as block without contained tags</td></tr>
     </table></td><td align=center>undef</td></tr>
@@ -785,11 +785,11 @@ numerical options.</p>
     <td align=center>undef</td></tr>
 <tr id="RequestAll"><td>RequestAll</td><td>Flag to request all tags to be extracted.
     This causes some tags to be generated which normally would not be unless specifically
     requested (by passing the tag name to <a href="#ImageInfo">ImageInfo</a> or
     <a href="#ExtractInfo">ExtractInfo</a>).  May be set to 2 or 3 to enable generation
-    of some additional tags as mentioned in the tag name documentation.</td>
+    of some additional tags as mentioned in the <a href="TagNames/index.html">Tag Name documentation</a>.</td>
     <td align=center>0, 1, 2 or 3</td><td align=center>undef</td></tr>
 <tr id="RequestTags"><td>RequestTags</td><td>List of additional tag and/or group names
     to request in the next call to <a href="#ExtractInfo">ExtractInfo</a>. This option is
     useful only for tags/groups which aren't extracted unless specifically requested. Groups
     are requested by adding a colon after the name (eg. "MacOS:"). Names are converted to lower
diff --git a/html/ExifTool.pdf b/html/ExifTool.pdf
index c1735324..82f1a631 100644
--- a/html/ExifTool.pdf
+++ b/html/ExifTool.pdf
@@ -10,11 +10,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                     1)Tj
+(                           -- Image::ExifTool 12.24 --                                     1)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (EXIFTOOL\(1\)           User Contributed Perl Documentation          EXIFTOOL\(1\))Tj
 0 -4.4 TD
 (N)Tj
@@ -187,11 +187,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                     2)Tj
+(                           -- Image::ExifTool 12.24 --                                     2)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (         ARW   r/w   | EXV   r/w/c | M2TS  r     | PBM   r/w   | SRW   r/w)Tj
 0 -1.1 TD
 (         ASF   r     | F4A/V r/w   | M4A/V r/w   | PCD   r     | SVG   r)Tj
@@ -382,11 +382,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                     3)Tj
+(                           -- Image::ExifTool 12.24 --                                     3)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (       be exported with the ":Public" export list.)Tj
 0 -2.2 TD
 (M)Tj
@@ -617,11 +617,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                     4)Tj
+(                           -- Image::ExifTool 12.24 --                                     4)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (               Advantages of using the object-oriented form are that options)Tj
 0 -1.1 TD
 (               may be set before calling "ImageInfo", and the object may be)Tj
@@ -768,11 +768,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                     5)Tj
+(                           -- Image::ExifTool 12.24 --                                     5)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (               "Sort" settings the entries may not be in the same order as)Tj
 0 -1.1 TD
 (               requested.\)  If a requested tag doesn't exist, a tag key is)Tj
@@ -953,21 +953,21 @@ endobj
 >>
 >>
 endobj
 21 0 obj
 <<
-/Length 3832
+/Length 3828
 >>
 stream
 BT
 /TT2 1 Tf
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                     6)Tj
+(                           -- Image::ExifTool 12.24 --                                     6)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (           As well as tags representing information extracted from the image,)Tj
 0 -1.1 TD
 (           the following Extra tags generated by ExifTool may be returned:)Tj
@@ -1078,17 +1078,17 @@ T*
 T*
 (               is specifically requested by name.  Default is undef.)Tj
 0 -2.2 TD
 (           BlockExtract)Tj
 0 -1.1 TD
-(               Flag to extract some directories \(mentioned in the Tag Name)Tj
+(               Flag to extract some directories \(mentioned in the ExifTool tag)Tj
 T*
-(               documentation\) as a block.  Setting this to a value of 2 also)Tj
+(               name documentation\) as a block.  Setting this to a value of 2)Tj
 T*
-(               prevents parsing the block to extract tags contained within.)Tj
-0 -2.2 TD
-(           ByteOrder)Tj
+(               also prevents parsing the block to extract tags contained)Tj
+T*
+(               within.)Tj
 ET
 endstream
 endobj
 22 0 obj
 <<
@@ -1102,25 +1102,27 @@ endobj
 >>
 >>
 endobj
 24 0 obj
 <<
-/Length 4804
+/Length 4742
 >>
 stream
 BT
 /TT2 1 Tf
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                     7)Tj
+(                           -- Image::ExifTool 12.24 --                                     7)Tj
 /TT4 1 Tf
 0 -1.6333 TD
-(               The byte order for newly created EXIF segments when writing.)Tj
+(           ByteOrder)Tj
 0 -1.1 TD
+(               The byte order for newly created EXIF segments when writing.)Tj
+T*
 (               Note that if EXIF information already exists, the existing)Tj
 T*
 (               order is maintained.  Valid values are 'MM', 'II' and undef.)Tj
 T*
 (               If ByteOrder is not defined \(the default\), then the maker note)Tj
@@ -1236,12 +1238,10 @@ T*
 (               Fallback internal IPTC character set to assume if IPTC)Tj
 T*
 (               information contains no CodedCharacterSet tag.  Possible values)Tj
 T*
 (               are the same as the "Charset" option.  Default is 'Latin'.)Tj
-0 -2.2 TD
-(               Note that this option affects some types of information when)Tj
 ET
 endstream
 endobj
 25 0 obj
 <<
@@ -1255,25 +1255,27 @@ endobj
 >>
 >>
 endobj
 27 0 obj
 <<
-/Length 4420
+/Length 4413
 >>
 stream
 BT
 /TT2 1 Tf
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                     8)Tj
+(                           -- Image::ExifTool 12.24 --                                     8)Tj
 /TT4 1 Tf
 0 -1.6333 TD
-(               reading/writing the file and other types when getting/setting)Tj
+(               Note that this option affects some types of information when)Tj
 0 -1.1 TD
+(               reading/writing the file and other types when getting/setting)Tj
+T*
 (               tag values, so it must be defined for both types of access.)Tj
 0 -2.2 TD
 (           CharsetPhotoshop)Tj
 0 -1.1 TD
 (               Internal encoding to assume for Photoshop IRB resource names.)Tj
@@ -1383,12 +1385,10 @@ T*
 (               format is different when copying tags with)Tj
 T*
 (               "SetNewValuesFromFile".)Tj
 0 -2.2 TD
 (           DateFormat)Tj
-0 -1.1 TD
-(               Format for printing date/time values.  See "strftime" in the)Tj
 ET
 endstream
 endobj
 28 0 obj
 <<
@@ -1402,25 +1402,27 @@ endobj
 >>
 >>
 endobj
 30 0 obj
 <<
-/Length 4972
+/Length 4970
 >>
 stream
 BT
 /TT2 1 Tf
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                     9)Tj
+(                           -- Image::ExifTool 12.24 --                                     9)Tj
 /TT4 1 Tf
 0 -1.6333 TD
-(               POSIX package for details about the format string.  If date can)Tj
+(               Format for printing date/time values.  See "strftime" in the)Tj
 0 -1.1 TD
+(               POSIX package for details about the format string.  If date can)Tj
+T*
 (               not be converted, value is left unchanged unless the StrictDate)Tj
 T*
 (               option is set.  Timezones are ignored.  The inverse conversion)Tj
 T*
 (               \(ie. when calling "SetNewValue"\) is performed only if)Tj
@@ -1538,12 +1540,10 @@ T*
 (               specification, metadata is allowed after IDAT, but ExifTool)Tj
 T*
 (               always writes it before because some utilities will ignore it)Tj
 T*
 (               otherwise.\)  When set to 3 or higher, only pseudo system tags)Tj
-T*
-(               and FileType are generated.  For 3, the file header is read to)Tj
 ET
 endstream
 endobj
 31 0 obj
 <<
@@ -1557,25 +1557,27 @@ endobj
 >>
 >>
 endobj
 33 0 obj
 <<
-/Length 4475
+/Length 4500
 >>
 stream
 BT
 /TT2 1 Tf
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    10)Tj
+(                           -- Image::ExifTool 12.24 --                                    10)Tj
 /TT4 1 Tf
 0 -1.6333 TD
-(               provide an educated guess at FileType.  For 4, the file is not)Tj
+(               and FileType are generated.  For 3, the file header is read to)Tj
 0 -1.1 TD
+(               provide an educated guess at FileType.  For 4, the file is not)Tj
+T*
 (               read at all and FileType is determined based on the file's)Tj
 T*
 (               extension.  For 5, generation of Composite tags is also)Tj
 T*
 (               disabled \(like setting "Composite" to 0\).  Default is undef.)Tj
@@ -1687,12 +1689,10 @@ T*
 (               Default is undef.)Tj
 0 -2.2 TD
 (           GeoSpeedRef)Tj
 0 -1.1 TD
 (               Reference units for writing GPSSpeed when geotagging:)Tj
-0 -2.2 TD
-(                   'K', 'k' or 'km/h'  - km/h)Tj
 ET
 endstream
 endobj
 34 0 obj
 <<
@@ -1706,25 +1706,27 @@ endobj
 >>
 >>
 endobj
 36 0 obj
 <<
-/Length 4726
+/Length 4721
 >>
 stream
 BT
 /TT2 1 Tf
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    11)Tj
+(                           -- Image::ExifTool 12.24 --                                    11)Tj
 /TT4 1 Tf
 0 -1.6333 TD
-(                   'M', 'm' or 'mph'   - mph)Tj
+(                   'K', 'k' or 'km/h'  - km/h)Tj
 0 -1.1 TD
+(                   'M', 'm' or 'mph'   - mph)Tj
+T*
 (                   <anything else>     - knots \(default undef\))Tj
 0 -2.2 TD
 (           GlobalTimeShift)Tj
 0 -1.1 TD
 (               Time shift to apply to all extracted date/time PrintConv)Tj
@@ -1880,12 +1882,10 @@ T*
 (               Separator used to join the PrintConv value of multi-item List-)Tj
 T*
 (               type tags into a single string.  If not defined, multi-item)Tj
 T*
 (               lists are returned as a list reference.  Does not affect)Tj
-T*
-(               ValueConv values.  Default is ', '.)Tj
 ET
 endstream
 endobj
 37 0 obj
 <<
@@ -1899,23 +1899,25 @@ endobj
 >>
 >>
 endobj
 41 0 obj
 <<
-/Length 4332
+/Length 4308
 >>
 stream
 BT
 /TT2 1 Tf
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    12)Tj
+(                           -- Image::ExifTool 12.24 --                                    12)Tj
 /TT4 1 Tf
-0 -2.7333 TD
+0 -1.6333 TD
+(               ValueConv values.  Default is ', '.)Tj
+0 -2.2 TD
 (           ListSplit)Tj
 0 -1.1 TD
 (               Regular expression used to split values of list-type tags into)Tj
 T*
 (               individual items when writing.  \(eg. use ',\\\\s*' to split a)Tj
@@ -2025,12 +2027,10 @@ T*
 (               date/time values, and enforces a time zero of 1904 as per the)Tj
 T*
 (               QuickTime specification.)Tj
 0 -2.2 TD
 (           RequestAll)Tj
-0 -1.1 TD
-(               Flag to request all tags to be extracted.  This causes some)Tj
 ET
 endstream
 endobj
 42 0 obj
 <<
@@ -2044,25 +2044,27 @@ endobj
 >>
 >>
 endobj
 44 0 obj
 <<
-/Length 4470
+/Length 4459
 >>
 stream
 BT
 /TT2 1 Tf
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    13)Tj
+(                           -- Image::ExifTool 12.24 --                                    13)Tj
 /TT4 1 Tf
 0 -1.6333 TD
-(               tags to be generated which normally would not be unless)Tj
+(               Flag to request all tags to be extracted.  This causes some)Tj
 0 -1.1 TD
+(               tags to be generated which normally would not be unless)Tj
+T*
 (               specifically requested \(by passing the tag name to "ImageInfo")Tj
 T*
 (               or "ExtractInfo"\).  May be set to 2 or 3 to enable generation)Tj
 T*
 (               of some additional tags as mentioned in the tag name)Tj
@@ -2170,12 +2172,10 @@ T*
 (               POSIX::strptime or Time::Piece is available and can)Tj
 T*
 (               successfully convert the value.)Tj
 0 -2.2 TD
 (               For PNG CreationTime, a setting of 1 has the additional effect)Tj
-0 -1.1 TD
-(               of causing the date/time to be reformatted according to PNG 1.2)Tj
 ET
 endstream
 endobj
 45 0 obj
 <<
@@ -2189,25 +2189,27 @@ endobj
 >>
 >>
 endobj
 47 0 obj
 <<
-/Length 4239
+/Length 4325
 >>
 stream
 BT
 /TT2 1 Tf
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    14)Tj
+(                           -- Image::ExifTool 12.24 --                                    14)Tj
 /TT4 1 Tf
 0 -1.6333 TD
-(               recommendation \(RFC-1123\) when writing, and a warning to be)Tj
+(               of causing the date/time to be reformatted according to PNG 1.2)Tj
 0 -1.1 TD
+(               recommendation \(RFC-1123\) when writing, and a warning to be)Tj
+T*
 (               issued for any non-standard value when reading \(but note that)Tj
 T*
 (               Windows may not recognize PNG date/time values in standard)Tj
 T*
 (               format\).)Tj
@@ -2344,23 +2346,23 @@ endobj
 >>
 >>
 endobj
 50 0 obj
 <<
-/Length 4249
+/Length 4218
 >>
 stream
 BT
 /TT2 1 Tf
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    15)Tj
+(                           -- Image::ExifTool 12.24 --                                    15)Tj
 /TT4 1 Tf
-0 -1.6333 TD
+0 -2.7333 TD
 (           Verbose)Tj
 0 -1.1 TD
 (               Print verbose messages to file specified by TextOut option.)Tj
 T*
 (               Value may be from 0 to 5 for increasingly verbose messages.)Tj
@@ -2512,12 +2514,10 @@ T*
 (           MakerNotes, MDItemTags, NoPDFList, Password, QuickTimeUTC \(enforced)Tj
 T*
 (           1904 time zero\), RequestAll, RequestTags, SaveFormat, SavePath,)Tj
 T*
 (           ScanForXMP, Struct, TextOut, Unknown, Verbose, XAttrTags and)Tj
-T*
-(           XMPAutoConv.)Tj
 ET
 endstream
 endobj
 51 0 obj
 <<
@@ -2531,23 +2531,25 @@ endobj
 >>
 >>
 endobj
 53 0 obj
 <<
-/Length 4130
+/Length 4168
 >>
 stream
 BT
 /TT2 1 Tf
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    16)Tj
+(                           -- Image::ExifTool 12.24 --                                    16)Tj
 /TT4 1 Tf
-0 -2.7333 TD
+0 -1.6333 TD
+(           XMPAutoConv.)Tj
+0 -2.2 TD
 (       Return Value:)Tj
 0 -1.1 TD
 (           1 if this was a recognized file format, 0 otherwise \(and 'Error')Tj
 T*
 (           tag set\).)Tj
@@ -2696,23 +2698,23 @@ endobj
 >>
 >>
 endobj
 56 0 obj
 <<
-/Length 4045
+/Length 4009
 >>
 stream
 BT
 /TT2 1 Tf
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    17)Tj
+(                           -- Image::ExifTool 12.24 --                                    17)Tj
 /TT4 1 Tf
-0 -1.6333 TD
+0 -2.7333 TD
 (       Inputs:)Tj
 0 -1.1 TD
 (           0\) ExifTool object reference)Tj
 0 -2.2 TD
 (           1\) Source file name, file reference, scalar reference, or undef to)Tj
@@ -2832,12 +2834,10 @@ T*
 (           0\) ExifTool object reference)Tj
 0 -2.2 TD
 (           1\) [optional] Information hash reference or tag list reference)Tj
 T*
 (           2\) [optional] Sort order \('Input', 'File', 'Tag', 'Descr' or)Tj
-0 -1.1 TD
-(           'Group#'\))Tj
 ET
 endstream
 endobj
 57 0 obj
 <<
@@ -2851,25 +2851,27 @@ endobj
 >>
 >>
 endobj
 59 0 obj
 <<
-/Length 4391
+/Length 4352
 >>
 stream
 BT
 /TT2 1 Tf
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    18)Tj
+(                           -- Image::ExifTool 12.24 --                                    18)Tj
 /TT4 1 Tf
-0 -2.7333 TD
-(           3\) [optional] Secondary sort order \('File', 'Tag' or 'Descr'\))Tj
+0 -1.6333 TD
+(           'Group#'\))Tj
 0 -2.2 TD
+(           3\) [optional] Secondary sort order \('File', 'Tag' or 'Descr'\))Tj
+T*
 (           If the information hash or tag list reference is not provided, then)Tj
 0 -1.1 TD
 (           the list of found tags from the last call to "ImageInfo",)Tj
 T*
 (           "ExtractInfo" or "GetInfo" is used instead, and the result is the)Tj
@@ -3039,12 +3041,10 @@ T*
 (       "GetValue" always returns the list itself.)Tj
 0 -2.2 TD
 (       Note that "GetValue" requires a case-sensitive tag key as an argument.)Tj
 0 -1.1 TD
 (       To retrieve tag information based on a case-insensitive tag name \(with)Tj
-T*
-(       an optional group specifier\), use "GetInfo" instead.)Tj
 ET
 endstream
 endobj
 60 0 obj
 <<
@@ -3058,23 +3058,25 @@ endobj
 >>
 >>
 endobj
 62 0 obj
 <<
-/Length 3962
+/Length 3961
 >>
 stream
 BT
 /TT2 1 Tf
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    19)Tj
+(                           -- Image::ExifTool 12.24 --                                    19)Tj
 /TT4 1 Tf
-0 -2.7333 TD
+0 -1.6333 TD
+(       an optional group specifier\), use "GetInfo" instead.)Tj
+0 -2.2 TD
 (           # PrintConv example)Tj
 0 -1.1 TD
 (           my $val = $exifTool->GetValue\($tag\);)Tj
 T*
 (           if \(ref $val eq 'SCALAR'\) {)Tj
@@ -3202,12 +3204,10 @@ T*
 (       same tag name for each value, or call with a reference to the list of)Tj
 T*
 (       values.)Tj
 0 -2.2 TD
 (           # set a new value for a tag \(errors go to STDERR\))Tj
-0 -1.1 TD
-(           $success = $exifTool->SetNewValue\($tag, $value\);)Tj
 ET
 endstream
 endobj
 63 0 obj
 <<
@@ -3221,23 +3221,25 @@ endobj
 >>
 >>
 endobj
 65 0 obj
 <<
-/Length 4036
+/Length 4027
 >>
 stream
 BT
 /TT2 1 Tf
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    20)Tj
+(                           -- Image::ExifTool 12.24 --                                    20)Tj
 /TT4 1 Tf
-0 -2.7333 TD
+0 -1.6333 TD
+(           $success = $exifTool->SetNewValue\($tag, $value\);)Tj
+0 -2.2 TD
 (           # set a new value and capture any error message)Tj
 0 -1.1 TD
 (           \($success, $errStr\) = $exifTool->SetNewValue\($tag, $value\);)Tj
 0 -2.2 TD
 (           # delete information for specified tag if it exists in image)Tj
@@ -3337,12 +3339,10 @@ T*
 (           values.  The tag name may be prefixed by one or more family 0, 1 or)Tj
 T*
 (           2 group names with optional leading family numbers, separated by)Tj
 T*
 (           colons \(eg. 'EXIF:Artist', 'XMP:Time:*'\), which is equivalent to)Tj
-T*
-(           using a Group option argument.  Also, a '#' may be appended to the)Tj
 ET
 endstream
 endobj
 66 0 obj
 <<
@@ -3366,15 +3366,17 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    21)Tj
+(                           -- Image::ExifTool 12.24 --                                    21)Tj
 /TT4 1 Tf
 0 -1.6333 TD
-(           tag name \(eg. 'EXIF:Orientation#'\), with the same effect as setting)Tj
+(           using a Group option argument.  Also, a '#' may be appended to the)Tj
 0 -1.1 TD
+(           tag name \(eg. 'EXIF:Orientation#'\), with the same effect as setting)Tj
+T*
 (           Type to 'ValueConv'.  Wildcards \('*' and '?'\) may be used in the)Tj
 T*
 (           tag name to assign multiple tags simultaneously.  A tag name of '*')Tj
 T*
 (           is special when deleting information, and will delete an entire)Tj
@@ -3486,12 +3488,10 @@ T*
 (               "SetNewValuesFromFile"\).  Bit 0x02 allows writing of)Tj
 T*
 (               'protected' tags, and should only be used internally by)Tj
 T*
 (               ExifTool.  See Image::ExifTool::TagNames, for a list of tag)Tj
-T*
-(               names indicating 'unsafe' and 'protected' tags.  Default is 0.)Tj
 ET
 endstream
 endobj
 69 0 obj
 <<
@@ -3515,13 +3515,15 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    22)Tj
+(                           -- Image::ExifTool 12.24 --                                    22)Tj
 /TT4 1 Tf
-0 -2.7333 TD
+0 -1.6333 TD
+(               names indicating 'unsafe' and 'protected' tags.  Default is 0.)Tj
+0 -2.2 TD
 (           ProtectSaved)Tj
 0 -1.1 TD
 (               Avoid setting new values which were saved after the Nth call to)Tj
 T*
 (               "SaveNewValues".  Has no effect on unsaved values, or values)Tj
@@ -3693,12 +3695,10 @@ T*
 (           @rawVals = $exifTool->GetNewValue\($tag\);)Tj
 T*
 (       Inputs:)Tj
 0 -1.1 TD
 (           0\) ExifTool object reference)Tj
-0 -2.2 TD
-(           1\) Tag name \(case sensitive, may be prefixed by family 0, 1 or 7)Tj
 ET
 endstream
 endobj
 73 0 obj
 <<
@@ -3712,23 +3712,25 @@ endobj
 >>
 >>
 endobj
 75 0 obj
 <<
-/Length 4649
+/Length 4656
 >>
 stream
 BT
 /TT2 1 Tf
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    23)Tj
+(                           -- Image::ExifTool 12.24 --                                    23)Tj
 /TT4 1 Tf
 0 -1.6333 TD
+(           1\) Tag name \(case sensitive, may be prefixed by family 0, 1 or 7)Tj
+0 -1.1 TD
 (           group names, separated by colons\))Tj
 0 -2.2 TD
 (       Return Values:)Tj
 0 -1.1 TD
 (           List of new Raw tag values, or first value in list when called in)Tj
@@ -3872,12 +3874,10 @@ T*
 (           information to a tag with a different name or a specified group.)Tj
 T*
 (           Both 'SRCTAG' and 'DSTTAG' may contain wildcards and/or be prefixed)Tj
 T*
 (           by a group name \(eg.  'fileModifyDate<modifyDate' or 'xmp:*<*'\),)Tj
-T*
-(           and/or suffixed by a '#' to disable print conversion.  Copied tags)Tj
 ET
 endstream
 endobj
 76 0 obj
 <<
@@ -3891,25 +3891,27 @@ endobj
 >>
 >>
 endobj
 78 0 obj
 <<
-/Length 4484
+/Length 4480
 >>
 stream
 BT
 /TT2 1 Tf
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    24)Tj
+(                           -- Image::ExifTool 12.24 --                                    24)Tj
 /TT4 1 Tf
 0 -1.6333 TD
-(           may also be added or deleted from a list with arguments of the form)Tj
+(           and/or suffixed by a '#' to disable print conversion.  Copied tags)Tj
 0 -1.1 TD
+(           may also be added or deleted from a list with arguments of the form)Tj
+T*
 (           'DSTTAG+<SRCTAG' or 'DSTTAG-<SRCTAG'.  Tags are evaluated in order,)Tj
 T*
 (           so exclusions apply only to tags included earlier in the list.  An)Tj
 T*
 (           extension of this feature allows the tag value to be set from a)Tj
@@ -4015,12 +4017,10 @@ T*
 (           specifying '*:*' for the tags to set.)Tj
 0 -2.2 TD
 (           The "Duplicates" option is always in effect for tags extracted from)Tj
 0 -1.1 TD
 (           the source file using this routine.)Tj
-0 -2.2 TD
-(           The "Struct" option is enabled by default for tags extracted by)Tj
 ET
 endstream
 endobj
 79 0 obj
 <<
@@ -4034,25 +4034,27 @@ endobj
 >>
 >>
 endobj
 81 0 obj
 <<
-/Length 4317
+/Length 4371
 >>
 stream
 BT
 /TT2 1 Tf
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    25)Tj
+(                           -- Image::ExifTool 12.24 --                                    25)Tj
 /TT4 1 Tf
 0 -1.6333 TD
-(           this routine.  This allows the hierarchy of complex structures to)Tj
+(           The "Struct" option is enabled by default for tags extracted by)Tj
 0 -1.1 TD
+(           this routine.  This allows the hierarchy of complex structures to)Tj
+T*
 (           be preserved when copying, but the Struct option may be set to 0 to)Tj
 T*
 (           override this behaviour and copy as flattened tags instead.)Tj
 0 -2.2 TD
 (   C)Tj
@@ -4266,12 +4268,10 @@ T*
 (       Return Value:)Tj
 0 -1.1 TD
 (           1 if the time was changed, 0 if nothing was done, or -1 if there)Tj
 T*
 (           was an error setting the time.)Tj
-0 -2.2 TD
-(       Notes:)Tj
 ET
 endstream
 endobj
 82 0 obj
 <<
@@ -4285,25 +4285,27 @@ endobj
 >>
 >>
 endobj
 84 0 obj
 <<
-/Length 4138
+/Length 4104
 >>
 stream
 BT
 /TT2 1 Tf
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    26)Tj
+(                           -- Image::ExifTool 12.24 --                                    26)Tj
 /TT4 1 Tf
 0 -1.6333 TD
-(           Equivalent to, but more efficient than calling "WriteInfo" when)Tj
+(       Notes:)Tj
 0 -1.1 TD
+(           Equivalent to, but more efficient than calling "WriteInfo" when)Tj
+T*
 (           only the FileModifyDate or FileCreateDate tag has been set.  If a)Tj
 T*
 (           timezone is not specified, local time is assumed.  When shifting,)Tj
 T*
 (           the time of the original file is used unless the optional base time)Tj
@@ -4471,12 +4473,10 @@ T*
 (       Get current group priority list.)Tj
 0 -2.2 TD
 (           @groups = $exifTool->GetNewGroups\(\);)Tj
 T*
 (       Inputs:)Tj
-0 -1.1 TD
-(           0\) ExifTool object reference)Tj
 ET
 endstream
 endobj
 85 0 obj
 <<
@@ -4490,23 +4490,25 @@ endobj
 >>
 >>
 endobj
 87 0 obj
 <<
-/Length 3762
+/Length 3733
 >>
 stream
 BT
 /TT2 1 Tf
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    27)Tj
+(                           -- Image::ExifTool 12.24 --                                    27)Tj
 /TT4 1 Tf
-0 -2.7333 TD
+0 -1.6333 TD
+(           0\) ExifTool object reference)Tj
+0 -2.2 TD
 (       Return Values:)Tj
 0 -1.1 TD
 (           List of group names in order of write priority.  Highest priority)Tj
 T*
 (           first.)Tj
@@ -4662,12 +4664,10 @@ T*
 (           when called in scalar context, or the names of groups for all)Tj
 T*
 (           families in list context.  Returns a string of group names)Tj
 T*
 (           separated by colons if the input group family contains a colon.)Tj
-T*
-(           The string is simplified to remove a leading 'Main:' and adjacent)Tj
 ET
 endstream
 endobj
 88 0 obj
 <<
@@ -4681,23 +4681,25 @@ endobj
 >>
 >>
 endobj
 90 0 obj
 <<
-/Length 5018
+/Length 5021
 >>
 stream
 BT
 /TT2 1 Tf
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    28)Tj
+(                           -- Image::ExifTool 12.24 --                                    28)Tj
 /TT4 1 Tf
 0 -1.6333 TD
+(           The string is simplified to remove a leading 'Main:' and adjacent)Tj
+0 -1.1 TD
 (           identical group names unless the family string begins with a colon.)Tj
 0 -2.2 TD
 (       Notes:)Tj
 0 -1.1 TD
 (           The group family numbers are currently available:)Tj
@@ -4811,12 +4813,10 @@ T*
 (           or may not have characters other than [-_A-Za-z0-9] converted to)Tj
 T*
 (           hex.  Note that unlike other group names, the tag ID's of family 7)Tj
 T*
 (           group names are case sensitive \(but the leading "ID-" is not\).)Tj
-0 -2.2 TD
-(           See "GetAllGroups [static]" for complete lists of group names.)Tj
 ET
 endstream
 endobj
 91 0 obj
 <<
@@ -4830,23 +4830,25 @@ endobj
 >>
 >>
 endobj
 93 0 obj
 <<
-/Length 4328
+/Length 4380
 >>
 stream
 BT
 /TT2 1 Tf
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    29)Tj
+(                           -- Image::ExifTool 12.24 --                                    29)Tj
 /TT4 1 Tf
-0 -2.7333 TD
+0 -1.6333 TD
+(           See "GetAllGroups [static]" for complete lists of group names.)Tj
+0 -2.2 TD
 (   G)Tj
 1.8 0 TD
 (Ge)Tj
 0.6 0 TD
 (et)Tj
@@ -5072,12 +5074,10 @@ T*
 (       Get a list of shortcut tags.)Tj
 0 -2.2 TD
 (       Inputs:)Tj
 0 -1.1 TD
 (           \(none\))Tj
-0 -2.2 TD
-(       Return Values:)Tj
 ET
 endstream
 endobj
 94 0 obj
 <<
@@ -5091,23 +5091,25 @@ endobj
 >>
 >>
 endobj
 96 0 obj
 <<
-/Length 4933
+/Length 4886
 >>
 stream
 BT
 /TT2 1 Tf
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    30)Tj
+(                           -- Image::ExifTool 12.24 --                                    30)Tj
 /TT4 1 Tf
 0 -1.6333 TD
+(       Return Values:)Tj
+0 -1.1 TD
 (           List of shortcut tags \(as defined in Image::ExifTool::Shortcuts\).)Tj
 0 -2.2 TD
 (   G)Tj
 1.8 0 TD
 (Ge)Tj
@@ -5333,12 +5335,10 @@ T*
 (           GIMP, GPS, GeoTiff, GlobParamIFD, GoPro, GraphConv, H264, HP, HTC,)Tj
 T*
 (           HTML, HTML-dc, HTML-ncc, HTML-office, HTML-prod, HTML-vw96, HTTP-)Tj
 T*
 (           equiv, ICC-chrm, ICC-clrt, ICC-header, ICC-meas, ICC-meta, ICC-)Tj
-T*
-(           view, ICC_Profile, ICC_Profile#, ID3, ID3v1, ID3v1_Enh, ID3v2_2,)Tj
 ET
 endstream
 endobj
 97 0 obj
 <<
@@ -5352,25 +5352,27 @@ endobj
 >>
 >>
 endobj
 99 0 obj
 <<
-/Length 4765
+/Length 4812
 >>
 stream
 BT
 /TT2 1 Tf
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    31)Tj
+(                           -- Image::ExifTool 12.24 --                                    31)Tj
 /TT4 1 Tf
 0 -1.6333 TD
-(           ID3v2_3, ID3v2_4, IFD0, IFD1, IPTC, IPTC#, ISO, ITC, Insta360,)Tj
+(           view, ICC_Profile, ICC_Profile#, ID3, ID3v1, ID3v1_Enh, ID3v2_2,)Tj
 0 -1.1 TD
+(           ID3v2_3, ID3v2_4, IFD0, IFD1, IPTC, IPTC#, ISO, ITC, Insta360,)Tj
+T*
 (           InteropIFD, ItemList, JFIF, JFXX, JPEG, JPEG-HDR, JSON, JUMBF, JVC,)Tj
 T*
 (           Jpeg2000, KDC_IFD, Keys, Kodak, KodakBordersIFD, KodakEffectsIFD,)Tj
 T*
 (           KodakIFD, KyoceraRaw, LNK, Leaf, LeafSubIFD, Leica, Lyrics3, Lytro,)Tj
@@ -5526,12 +5528,10 @@ T*
 (           @delGroups = Image::ExifTool::GetDeleteGroups\(\);)Tj
 T*
 (       Inputs:)Tj
 0 -1.1 TD
 (           None.)Tj
-0 -2.2 TD
-(       Return Values:)Tj
 ET
 endstream
 endobj
 100 0 obj
 <<
@@ -5545,25 +5545,27 @@ endobj
 >>
 >>
 endobj
 103 0 obj
 <<
-/Length 4949
+/Length 4896
 >>
 stream
 BT
 /TT2 1 Tf
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    32)Tj
+(                           -- Image::ExifTool 12.24 --                                    32)Tj
 /TT4 1 Tf
 0 -1.6333 TD
-(           A list of deletable group names in alphabetical order.  The current)Tj
+(       Return Values:)Tj
 0 -1.1 TD
+(           A list of deletable group names in alphabetical order.  The current)Tj
+T*
 (           list of deletable group names is:)Tj
 0 -2.2 TD
 (           Adobe, AFCP, APP0, APP1, APP10, APP11, APP12, APP13, APP14, APP15,)Tj
 0 -1.1 TD
 (           APP2, APP3, APP4, APP5, APP6, APP7, APP8, APP9, Audio, Author,)Tj
@@ -5769,12 +5771,10 @@ T*
 (c])Tj
 0.6 0 TD
 (])Tj
 -12 -1.1 TD
 (       Can the specified file be created?)Tj
-0 -2.2 TD
-(           my $creatable = Image::ExifTool::CanCreate\($filename\);)Tj
 ET
 endstream
 endobj
 104 0 obj
 <<
@@ -5788,23 +5788,25 @@ endobj
 >>
 >>
 endobj
 106 0 obj
 <<
-/Length 4693
+/Length 4690
 >>
 stream
 BT
 /TT2 1 Tf
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    33)Tj
+(                           -- Image::ExifTool 12.24 --                                    33)Tj
 /TT4 1 Tf
-0 -2.7333 TD
+0 -1.6333 TD
+(           my $creatable = Image::ExifTool::CanCreate\($filename\);)Tj
+0 -2.2 TD
 (       Inputs:)Tj
 0 -1.1 TD
 (           0\) File name or extension)Tj
 0 -2.2 TD
 (       Return Value:)Tj
@@ -6000,12 +6002,10 @@ T*
 (           activating Unicode filename support via the special Windows wide-)Tj
 T*
 (           character i/o routines if Win32API::File is available.)Tj
 0 -2.2 TD
 (       Internal Character Sets:)Tj
-0 -1.1 TD
-(           The encodings used to store strings in the various metadata)Tj
 ET
 endstream
 endobj
 107 0 obj
 <<
@@ -6019,25 +6019,27 @@ endobj
 >>
 >>
 endobj
 109 0 obj
 <<
-/Length 5318
+/Length 5396
 >>
 stream
 BT
 /TT2 1 Tf
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    34)Tj
+(                           -- Image::ExifTool 12.24 --                                    34)Tj
 /TT4 1 Tf
 0 -1.6333 TD
-(           formats.  These encodings may be changed for certain types of)Tj
+(           The encodings used to store strings in the various metadata)Tj
 0 -1.1 TD
+(           formats.  These encodings may be changed for certain types of)Tj
+T*
 (           metadata via the "CharsetEXIF", "CharsetID3", "CharsetIPTC",)Tj
 T*
 (           "CharsetPhotoshop", "CharsetQuickTime" and "CharsetRIFF" options.)Tj
 0 -2.2 TD
 (       Values are returned as byte strings of encoded characters.  Perl wide)Tj
@@ -6226,23 +6228,23 @@ endobj
 >>
 >>
 endobj
 112 0 obj
 <<
-/Length 4720
+/Length 4692
 >>
 stream
 BT
 /TT2 1 Tf
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    35)Tj
+(                           -- Image::ExifTool 12.24 --                                    35)Tj
 /TT4 1 Tf
-0 -1.6333 TD
+0 -2.7333 TD
 (         exiftool -tagsfromfile @ -iptc:all -codedcharacterset=utf8 \\)Tj
 0 -1.1 TD
 (         -charset iptc=latin2 a.jpg)Tj
 0 -2.2 TD
 (       and this command changes it back from UTF-8 to Windows Latin1 \(cp1252\):)Tj
@@ -6416,12 +6418,10 @@ T*
 (       encoding.  By default, ExifTool assumes MacRoman encoding and converts)Tj
 T*
 (       this to UTF-8, but the internal and external character sets may be)Tj
 T*
 (       specified with the "CharsetPhotoshop" and "Charset" options)Tj
-T*
-(       respectively.)Tj
 ET
 endstream
 endobj
 113 0 obj
 <<
@@ -6435,23 +6435,25 @@ endobj
 >>
 >>
 endobj
 115 0 obj
 <<
-/Length 5222
+/Length 5257
 >>
 stream
 BT
 /TT2 1 Tf
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                           -- Image::ExifTool 12.23 --                                    36)Tj
+(                           -- Image::ExifTool 12.24 --                                    36)Tj
 /TT4 1 Tf
-0 -2.7333 TD
+0 -1.6333 TD
+(       respectively.)Tj
+0 -2.2 TD
 (   Q)Tj
 1.8 0 TD
 (Qu)Tj
 0.6 0 TD
 (ui)Tj
@@ -6858,11 +6860,11 @@ T*
 0.6 0 TD
 (E_)Tj
 0.6 0 TD
 (G\(3pm\))Tj
 -27 -4.4 TD
-(perl v5.18.4                      2021-04-01                       EXIFTOOL\(1\))Tj
+(perl v5.18.4                      2021-04-13                       EXIFTOOL\(1\))Tj
 ET
 endstream
 endobj
 116 0 obj
 <<
@@ -7294,12 +7296,12 @@ endobj
 /MediaBox [0 0 595 842]
 >>
 endobj
 121 0 obj
 <<
-/CreationDate (D:20210401142149-04'00')
-/ModDate (D:20210401142149-04'00')
+/CreationDate (D:20210413110922-04'00')
+/ModDate (D:20210413110922-04'00')
 /Producer (Apple pstopdf)
 >>
 endobj
 122 0 obj
 <<
@@ -7309,137 +7311,137 @@ endobj
 >>
 endobj
 xref
 0 123
 0000000000 65535 f 
-0000170483 00000 n 
+0000170479 00000 n 
 0000000016 00000 n 
 0000004112 00000 n 
-0000169484 00000 n 
-0000169885 00000 n 
-0000168949 00000 n 
-0000173585 00000 n 
-0000170563 00000 n 
+0000169480 00000 n 
+0000169881 00000 n 
+0000168945 00000 n 
+0000173581 00000 n 
+0000170559 00000 n 
 0000004218 00000 n 
 0000009568 00000 n 
-0000170644 00000 n 
+0000170640 00000 n 
 0000009675 00000 n 
 0000014402 00000 n 
-0000170727 00000 n 
+0000170723 00000 n 
 0000014509 00000 n 
 0000019439 00000 n 
-0000170810 00000 n 
+0000170806 00000 n 
 0000019546 00000 n 
 0000024260 00000 n 
-0000170893 00000 n 
+0000170889 00000 n 
 0000024367 00000 n 
-0000028252 00000 n 
-0000170976 00000 n 
-0000028359 00000 n 
-0000033216 00000 n 
-0000171059 00000 n 
-0000033323 00000 n 
-0000037796 00000 n 
-0000171142 00000 n 
-0000037903 00000 n 
-0000042928 00000 n 
-0000171225 00000 n 
-0000043035 00000 n 
-0000047563 00000 n 
-0000171308 00000 n 
-0000047670 00000 n 
-0000052449 00000 n 
-0000174111 00000 n 
-0000173720 00000 n 
-0000171392 00000 n 
-0000052556 00000 n 
-0000056941 00000 n 
-0000171476 00000 n 
-0000057048 00000 n 
-0000061571 00000 n 
-0000171560 00000 n 
-0000061678 00000 n 
-0000065970 00000 n 
-0000171644 00000 n 
-0000066077 00000 n 
-0000070379 00000 n 
-0000171728 00000 n 
-0000070486 00000 n 
-0000074669 00000 n 
-0000171812 00000 n 
-0000074776 00000 n 
-0000078874 00000 n 
-0000171896 00000 n 
-0000078981 00000 n 
-0000083425 00000 n 
-0000171980 00000 n 
-0000083532 00000 n 
-0000087547 00000 n 
-0000172064 00000 n 
-0000087654 00000 n 
-0000091743 00000 n 
-0000172148 00000 n 
-0000091850 00000 n 
-0000096542 00000 n 
-0000173858 00000 n 
-0000172232 00000 n 
-0000096649 00000 n 
-0000101295 00000 n 
-0000172316 00000 n 
-0000101402 00000 n 
-0000106104 00000 n 
-0000172400 00000 n 
-0000106211 00000 n 
-0000110748 00000 n 
-0000172484 00000 n 
-0000110855 00000 n 
-0000115225 00000 n 
-0000172568 00000 n 
-0000115332 00000 n 
-0000119523 00000 n 
-0000172652 00000 n 
-0000119630 00000 n 
-0000123445 00000 n 
-0000172736 00000 n 
-0000123552 00000 n 
-0000128623 00000 n 
-0000172820 00000 n 
-0000128730 00000 n 
-0000133111 00000 n 
-0000172904 00000 n 
-0000133218 00000 n 
-0000138204 00000 n 
-0000172988 00000 n 
-0000138311 00000 n 
-0000143129 00000 n 
-0000173996 00000 n 
-0000173074 00000 n 
-0000143237 00000 n 
-0000148240 00000 n 
-0000173162 00000 n 
-0000148348 00000 n 
-0000153095 00000 n 
-0000173250 00000 n 
-0000153203 00000 n 
-0000158575 00000 n 
-0000173338 00000 n 
-0000158683 00000 n 
-0000163457 00000 n 
-0000173426 00000 n 
-0000163565 00000 n 
-0000168841 00000 n 
-0000169089 00000 n 
-0000169292 00000 n 
-0000173514 00000 n 
-0000173543 00000 n 
-0000174217 00000 n 
-0000174341 00000 n 
+0000028248 00000 n 
+0000170972 00000 n 
+0000028355 00000 n 
+0000033150 00000 n 
+0000171055 00000 n 
+0000033257 00000 n 
+0000037723 00000 n 
+0000171138 00000 n 
+0000037830 00000 n 
+0000042853 00000 n 
+0000171221 00000 n 
+0000042960 00000 n 
+0000047513 00000 n 
+0000171304 00000 n 
+0000047620 00000 n 
+0000052394 00000 n 
+0000174107 00000 n 
+0000173716 00000 n 
+0000171388 00000 n 
+0000052501 00000 n 
+0000056862 00000 n 
+0000171472 00000 n 
+0000056969 00000 n 
+0000061481 00000 n 
+0000171556 00000 n 
+0000061588 00000 n 
+0000065966 00000 n 
+0000171640 00000 n 
+0000066073 00000 n 
+0000070344 00000 n 
+0000171724 00000 n 
+0000070451 00000 n 
+0000074672 00000 n 
+0000171808 00000 n 
+0000074779 00000 n 
+0000078841 00000 n 
+0000171892 00000 n 
+0000078948 00000 n 
+0000083353 00000 n 
+0000171976 00000 n 
+0000083460 00000 n 
+0000087474 00000 n 
+0000172060 00000 n 
+0000087581 00000 n 
+0000091661 00000 n 
+0000172144 00000 n 
+0000091768 00000 n 
+0000096460 00000 n 
+0000173854 00000 n 
+0000172228 00000 n 
+0000096567 00000 n 
+0000101213 00000 n 
+0000172312 00000 n 
+0000101320 00000 n 
+0000106029 00000 n 
+0000172396 00000 n 
+0000106136 00000 n 
+0000110669 00000 n 
+0000172480 00000 n 
+0000110776 00000 n 
+0000115200 00000 n 
+0000172564 00000 n 
+0000115307 00000 n 
+0000119464 00000 n 
+0000172648 00000 n 
+0000119571 00000 n 
+0000123357 00000 n 
+0000172732 00000 n 
+0000123464 00000 n 
+0000128538 00000 n 
+0000172816 00000 n 
+0000128645 00000 n 
+0000133078 00000 n 
+0000172900 00000 n 
+0000133185 00000 n 
+0000138124 00000 n 
+0000172984 00000 n 
+0000138231 00000 n 
+0000143096 00000 n 
+0000173992 00000 n 
+0000173070 00000 n 
+0000143204 00000 n 
+0000148154 00000 n 
+0000173158 00000 n 
+0000148262 00000 n 
+0000153006 00000 n 
+0000173246 00000 n 
+0000153114 00000 n 
+0000158564 00000 n 
+0000173334 00000 n 
+0000158672 00000 n 
+0000163418 00000 n 
+0000173422 00000 n 
+0000163526 00000 n 
+0000168837 00000 n 
+0000169085 00000 n 
+0000169288 00000 n 
+0000173510 00000 n 
+0000173539 00000 n 
+0000174213 00000 n 
+0000174337 00000 n 
 trailer
 <<
 /Size 123
 /Root 122 0 R
 /Info 121 0 R
-/ID [<b0cc62a5be0c1030b6f351e712d1e1cb><b0cc62a5be0c1030b6f351e712d1e1cb>]
+/ID [<560ec6fe6e5440771a95f440aabbe0e8><560ec6fe6e5440771a95f440aabbe0e8>]
 >>
 startxref
-174413
+174409
 %%EOF
diff --git a/html/Shift.pdf b/html/Shift.pdf
index 0322a8c8..5c2a3dbe 100644
--- a/html/Shift.pdf
+++ b/html/Shift.pdf
@@ -591,12 +591,12 @@ endobj
 /MediaBox [0 0 595 842]
 >>
 endobj
 16 0 obj
 <<
-/CreationDate (D:20210401142150-04'00')
-/ModDate (D:20210401142150-04'00')
+/CreationDate (D:20210413110922-04'00')
+/ModDate (D:20210413110922-04'00')
 /Producer (Apple pstopdf)
 >>
 endobj
 17 0 obj
 <<
@@ -628,10 +628,10 @@ xref
 trailer
 <<
 /Size 18
 /Root 17 0 R
 /Info 16 0 R
-/ID [<89c8b97ce96c2a9e18d602ed3bb880d8><89c8b97ce96c2a9e18d602ed3bb880d8>]
+/ID [<aaba228f321479095b428dfe7ef65dcb><aaba228f321479095b428dfe7ef65dcb>]
 >>
 startxref
 11800
 %%EOF
diff --git a/html/TagNames/FujiFilm.html b/html/TagNames/FujiFilm.html
index 7214fa43..486c7a41 100644
--- a/html/TagNames/FujiFilm.html
+++ b/html/TagNames/FujiFilm.html
@@ -375,11 +375,12 @@ the date of manufacture)</span></span></td></tr>
   <br>1 = On
   <br>2 = Pre-shot
   <br><span class=n>(other models)</span>
   <br>0 = Off
   <br>1 = On
-  <br>2 = No flash &amp; flash</span></td></tr>
+  <br>2 = No flash &amp; flash
+  <br>6 = Pixel Shift</span></td></tr>
 <tr class=b>
 <td title='0x1101 = 4353'>0x1101</td>
 <td>SequenceNumber</td>
 <td class=c>int16u</td>
 <td>&nbsp;</td></tr>
@@ -387,10 +388,20 @@ the date of manufacture)</span></span></td></tr>
 <td title='0x1103 = 4355'>0x1103</td>
 <td>DriveSettings</td>
 <td class=c>-</td>
 <td>--&gt; <a href='FujiFilm.html#DriveSettings'>FujiFilm DriveSettings Tags</a></td></tr>
 <tr class=b>
+<td title='0x1105 = 4357'>0x1105</td>
+<td>PixelShiftShots</td>
+<td class=c>int16u</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td title='0x1106 = 4358'>0x1106</td>
+<td>PixelShiftOffset</td>
+<td class=c>rational64s[2]</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
 <td title='0x1153 = 4435'>0x1153</td>
 <td>PanoramaAngle</td>
 <td class=c>int16u</td>
 <td>&nbsp;</td></tr>
 <tr>
@@ -716,31 +727,37 @@ element)</span></span></td></tr>
 <th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
 <tr>
 <td class=r title='0 = 0x0'>0.1</td>
 <td>FocusMode2</td>
 <td class=c>int32u</td>
-<td><span class=s>[val &amp; 0xff]
+<td><span class=s>[val &amp; 0xf]
   <br>0 = AF-M
   <br>1 = AF-S
-  <br>2 = AF-C
-  <br>17 = AF-S (Auto)</span></td></tr>
+  <br>2 = AF-C</span></td></tr>
 <tr class=b>
 <td class=r title='0 = 0x0'>0.2</td>
+<td>PreAF</td>
+<td class=c>int32u</td>
+<td><span class=s>[val &gt;&gt; 4 &amp; 0xf]
+  <br>0 = Off
+  <br>1 = On</span></td></tr>
+<tr>
+<td class=r title='0 = 0x0'>0.3</td>
 <td>AFAreaMode</td>
 <td class=c>int32u</td>
 <td><span class=s>[val &gt;&gt; 8 &amp; 0xf]
   <br>0 = Single Point
   <br>1 = Zone
   <br>2 = Wide/Tracking</span></td></tr>
-<tr>
-<td class=r title='0 = 0x0'>0.3</td>
+<tr class=b>
+<td class=r title='0 = 0x0'>0.4</td>
 <td>AFAreaPointSize</td>
 <td class=c>int32u</td>
 <td><span class=s>[val &gt;&gt; 12 &amp; 0xf]
   <br>0 = n/a</span></td></tr>
-<tr class=b>
-<td class=r title='0 = 0x0'>0.4</td>
+<tr>
+<td class=r title='0 = 0x0'>0.5</td>
 <td>AFAreaZoneSize</td>
 <td class=c>int32u</td>
 <td><span class=s>[val &gt;&gt; 16 &amp; 0xf]
   <br>0 = n/a</span></td></tr>
 </table></td></tr></table></blockquote>
@@ -1187,9 +1204,9 @@ RAF-format information.</p>
 <td>&nbsp;</td></tr>
 </table></td></tr></table></blockquote>
 
 <hr>
 (This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Feb 3, 2021</i>
+<br><i>Last revised Apr 13, 2021</i>
 <p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
 </body>
 </html>
diff --git a/html/TagNames/Jpeg2000.html b/html/TagNames/Jpeg2000.html
index 9fc3c186..accae7ed 100644
--- a/html/TagNames/Jpeg2000.html
+++ b/html/TagNames/Jpeg2000.html
@@ -428,27 +428,35 @@ may exist)</span>
 <table class=frame><tr><td>
 <table class=inner cellspacing=1>
 <tr class=h><th>Tag&nbsp;ID</th><th>Tag Name</th>
 <th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
 <tr>
-<td>'id'</td>
-<td>JUMBFID</td>
+<td>'jumd-flags'</td>
+<td>JUMDFlags</td>
 <td class=c>no</td>
-<td>&nbsp;</td></tr>
+<td><span class=s>Bit 0 = Requestable
+  <br>Bit 1 = Label
+  <br>Bit 2 = ID
+  <br>Bit 3 = Signature</span></td></tr>
 <tr class=b>
-<td>'label'</td>
-<td>JUMBFLabel</td>
+<td>'jumd-id'</td>
+<td>JUMDID</td>
 <td class=c>no</td>
 <td>&nbsp;</td></tr>
 <tr>
-<td>'signature'</td>
-<td>JUMBFSignature</td>
+<td>'jumd-label'</td>
+<td>JUMDLabel</td>
 <td class=c>no</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
-<td>'type'</td>
-<td>JUMBFType</td>
+<td>'jumd-sig'</td>
+<td>JUMDSignature</td>
+<td class=c>no</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td>'jumd-type'</td>
+<td>JUMDType</td>
 <td class=c>no</td>
 <td>&nbsp;</td></tr>
 </table></td></tr></table></blockquote>
 
 <h2><a name='CaptureResolution'>Jpeg2000 CaptureResolution Tags</a></h2>
@@ -526,9 +534,9 @@ may exist)</span>
 <td>--&gt; <a href='Jpeg2000.html#ResolutionUnit'>Jpeg2000 ResolutionUnit Values</a></td></tr>
 </table></td></tr></table></blockquote>
 
 <hr>
 (This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Apr 1, 2021</i>
+<br><i>Last revised Apr 13, 2021</i>
 <p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
 </body>
 </html>
diff --git a/html/TagNames/MacOS.html b/html/TagNames/MacOS.html
index 0df5018a..9fdc188f 100644
--- a/html/TagNames/MacOS.html
+++ b/html/TagNames/MacOS.html
@@ -44,11 +44,11 @@ options, but these files are not writable directly.</p>
 
 <h2><a name='XAttr'>MacOS XAttr Tags</a></h2>
 <p>XAttr tags are extracted using the &quot;xattr&quot; utility.  They are extracted if
 any &quot;XAttr*&quot; tag or the MacOS group is specifically requested, or by setting
 the <a href="../ExifTool.html#XAttrTags">XAttrTags</a> API option to 1 or the <a href="../ExifTool.html#RequestAll">RequestAll</a> API option to 2 or higher.
-And they extracted by default from MacOS &quot;._&quot; files when reading
+And they are extracted by default from MacOS &quot;._&quot; files when reading
 these files directly.</p>
 <blockquote>
 <table class=frame><tr><td>
 <table class=inner cellspacing=1>
 <tr class=h><th>Tag Name</th>
@@ -652,9 +652,9 @@ not be written)</span></span></td></tr>
 <td>&nbsp;</td></tr>
 </table></td></tr></table></blockquote>
 
 <hr>
 (This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Oct 15, 2020</i>
+<br><i>Last revised Apr 13, 2021</i>
 <p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
 </body>
 </html>
diff --git a/html/TagNames/Panasonic.html b/html/TagNames/Panasonic.html
index 612ebecb..602b108a 100644
--- a/html/TagNames/Panasonic.html
+++ b/html/TagNames/Panasonic.html
@@ -1872,10 +1872,25 @@ images.</p>
 <tr class=b>
 <td title='0x035a = 858'>0x035a</td>
 <td>FNumber</td>
 <td class=c>int32s</td>
 <td>&nbsp;</td></tr>
+<tr>
+<td title='0x035b = 859'>0x035b</td>
+<td>CorrelatedColorTemp</td>
+<td class=c>int16u</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td title='0x035c = 860'>0x035c</td>
+<td>ColorTint</td>
+<td class=c>int16s</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td title='0x035d = 861'>0x035d</td>
+<td>WhitePoint</td>
+<td class=c>rational64u[2]</td>
+<td>&nbsp;</td></tr>
 </table></td></tr></table></blockquote>
 
 <h2><a name='Type2'>Panasonic Type2 Tags</a></h2>
 <p>This type of maker notes is used by models such as the NV-DS65, PV-D2002,
 PV-DC3000, PV-DV203, PV-DV401, PV-DV702, PV-L2001, PV-SD4090, PV-SD5000 and
@@ -2088,9 +2103,9 @@ various Panasonic and Leica models.</p>
 <td class=b>&nbsp;</td><td class=b>&nbsp;</td>
 </tr></table></td></tr></table></blockquote>
 
 <hr>
 (This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Oct 2, 2020</i>
+<br><i>Last revised Apr 13, 2021</i>
 <p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
 </body>
 </html>
diff --git a/html/TagNames/PhaseOne.html b/html/TagNames/PhaseOne.html
index 0b765427..4903d0f3 100644
--- a/html/TagNames/PhaseOne.html
+++ b/html/TagNames/PhaseOne.html
@@ -74,15 +74,18 @@
 <td>&nbsp;</td></tr>
 <tr class=b>
 <td title='0x010e = 270'>0x010e</td>
 <td>RawFormat</td>
 <td class=c>int32s</td>
-<td><span class=s>1 = RAW 1
+<td><table class=cols><tr>
+  <td>1 = RAW 1
   <br>2 = RAW 2
-  <br>3 = IIQ L
-  <br>5 = IIQ S
-  <br>6 = IIQ Sv2</span></td></tr>
+  <br>3 = IIQ L</td><td>&nbsp;&nbsp;</td>
+  <td>5 = IIQ S
+  <br>6 = IIQ Sv2
+  <br>8 = IIQ L16</td></tr></table>
+</td></tr>
 <tr>
 <td title='0x010f = 271'>0x010f</td>
 <td>RawData</td>
 <td class=c>no</td>
 <td>&nbsp;</td></tr>
@@ -256,9 +259,9 @@
 <td>&nbsp;</td></tr>
 </table></td></tr></table></blockquote>
 
 <hr>
 (This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Apr 9, 2019</i>
+<br><i>Last revised Apr 13, 2021</i>
 <p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
 </body>
 </html>
diff --git a/html/TagNames/Sony.html b/html/TagNames/Sony.html
index 00d011bc..bb39d71c 100644
--- a/html/TagNames/Sony.html
+++ b/html/TagNames/Sony.html
@@ -43,13 +43,14 @@ MakerNotes.</p>
   <br>1 = Super Fine
   <br>2 = Fine
   <br>3 = Standard
   <br>4 = Economy
   <br>5 = Extra Fine
-  <br>6 = RAW + JPEG
+  <br>6 = RAW + JPEG/HEIF
   <br>7 = Compressed RAW
   <br>8 = Compressed RAW + JPEG
+  <br>9 = Light
   <br>4294967295 = n/a</td></tr></table>
 </td></tr>
 <tr class=b>
 <td title='0x0104 = 260'>0x0104</td>
 <td>FlashExposureComp</td>
@@ -783,17 +784,19 @@ toward magenta)</span></span></td></tr>
 <td title='0x202e = 8238'>0x202e</td>
 <td>Quality</td>
 <td class=c>int16u[2]</td>
 <td><table class=cols><tr>
   <td>&#39;0 0&#39; = n/a
-  <br>&#39;0 1&#39; = Standard JPEG
-  <br>&#39;0 2&#39; = Fine JPEG
-  <br>&#39;0 3&#39; = Extra Fine JPEG
+  <br>&#39;0 1&#39; = Standard
+  <br>&#39;0 2&#39; = Fine
+  <br>&#39;0 3&#39; = Extra Fine
+  <br>&#39;0 4&#39; = Light
   <br>&#39;1 0&#39; = RAW
-  <br>&#39;1 1&#39; = RAW + Standard JPEG
-  <br>&#39;1 2&#39; = RAW + Fine JPEG
-  <br>&#39;1 3&#39; = RAW + Extra Fine JPEG</td></tr></table>
+  <br>&#39;1 1&#39; = RAW + Standard
+  <br>&#39;1 2&#39; = RAW + Fine
+  <br>&#39;1 3&#39; = RAW + Extra Fine
+  <br>&#39;1 4&#39; = RAW + Light</td></tr></table>
 </td></tr>
 <tr class=b>
 <td title='0x202f = 8239'>0x202f</td>
 <td>PixelShiftInfo</td>
 <td class=c>undef</td>
@@ -802,96 +805,133 @@ toward magenta)</span></span></td></tr>
 <td title='0x2031 = 8241'>0x2031</td>
 <td>SerialNumber</td>
 <td class=c>string</td>
 <td>&nbsp;</td></tr>
 <tr class=b>
+<td title='0x2032 = 8242'>0x2032</td>
+<td>Shadows</td>
+<td class=c>int32s</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td title='0x2033 = 8243'>0x2033</td>
+<td>Highlights</td>
+<td class=c>int32s</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td title='0x2034 = 8244'>0x2034</td>
+<td>Fade</td>
+<td class=c>int32s</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td title='0x2035 = 8245'>0x2035</td>
+<td>SharpnessRange</td>
+<td class=c>int32s</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td title='0x2036 = 8246'>0x2036</td>
+<td>Clarity</td>
+<td class=c>int32s</td>
+<td>&nbsp;</td></tr>
+<tr>
+<td title='0x2037 = 8247'>0x2037</td>
+<td>FocusFrameSize</td>
+<td class=c>no</td>
+<td>&nbsp;</td></tr>
+<tr class=b>
+<td title='0x2039 = 8249'>0x2039</td>
+<td>JPEG-HEIFSwitch</td>
+<td class=c>int16u</td>
+<td><span class=s>0 = JPEG
+  <br>1 = HEIF
+  <br>65535 = n/a</span></td></tr>
+<tr>
 <td title='0x3000 = 12288'>0x3000</td>
 <td>ShotInfo</td>
 <td class=c>-</td>
 <td>--&gt; <a href='Sony.html#ShotInfo'>Sony ShotInfo Tags</a></td></tr>
-<tr>
+<tr class=b>
 <td title='0x900b = 36875'>0x900b</td>
 <td>Tag900b</td>
 <td class=c>-</td>
 <td>--&gt; <a href='Sony.html#Tag900b'>Sony Tag900b Tags</a></td></tr>
-<tr class=b>
+<tr>
 <td title='0x9050 = 36944'>0x9050</td>
 <td>Tag9050a
   <br>Tag9050b
   <br>Tag9050c</td>
 <td class=c>-<br>-<br>-</td>
 <td>--&gt; <a href='Sony.html#Tag9050a'>Sony Tag9050a Tags</a>
   <br>--&gt; <a href='Sony.html#Tag9050b'>Sony Tag9050b Tags</a>
   <br>--&gt; <a href='Sony.html#Tag9050c'>Sony Tag9050c Tags</a></td></tr>
-<tr>
+<tr class=b>
 <td title='0x9400 = 37888'>0x9400</td>
 <td>Tag9400a
   <br>Tag9400b
   <br>Tag9400c</td>
 <td class=c>-<br>-<br>-</td>
 <td>--&gt; <a href='Sony.html#Tag9400a'>Sony Tag9400a Tags</a>
   <br>--&gt; <a href='Sony.html#Tag9400b'>Sony Tag9400b Tags</a>
   <br>--&gt; <a href='Sony.html#Tag9400c'>Sony Tag9400c Tags</a></td></tr>
-<tr class=b>
+<tr>
 <td title='0x9401 = 37889'>0x9401</td>
 <td>Tag9401</td>
 <td class=c>-</td>
 <td>--&gt; <a href='Sony.html#Tag9401'>Sony Tag9401 Tags</a></td></tr>
-<tr>
+<tr class=b>
 <td title='0x9402 = 37890'>0x9402</td>
 <td>Tag9402</td>
 <td class=c>-</td>
 <td>--&gt; <a href='Sony.html#Tag9402'>Sony Tag9402 Tags</a></td></tr>
-<tr class=b>
+<tr>
 <td title='0x9403 = 37891'>0x9403</td>
 <td>Tag9403</td>
 <td class=c>-</td>
 <td>--&gt; <a href='Sony.html#Tag9403'>Sony Tag9403 Tags</a></td></tr>
-<tr>
+<tr class=b>
 <td title='0x9404 = 37892'>0x9404</td>
 <td>Tag9404a
   <br>Tag9404b
   <br>Tag9404c</td>
 <td class=c>-<br>-<br>-</td>
 <td>--&gt; <a href='Sony.html#Tag9404a'>Sony Tag9404a Tags</a>
   <br>--&gt; <a href='Sony.html#Tag9404b'>Sony Tag9404b Tags</a>
   <br>--&gt; <a href='Sony.html#Tag9404c'>Sony Tag9404c Tags</a></td></tr>
-<tr class=b>
+<tr>
 <td title='0x9405 = 37893'>0x9405</td>
 <td>Tag9405a
   <br>Tag9405b</td>
 <td class=c>-<br>-</td>
 <td>--&gt; <a href='Sony.html#Tag9405a'>Sony Tag9405a Tags</a>
   <br>--&gt; <a href='Sony.html#Tag9405b'>Sony Tag9405b Tags</a></td></tr>
-<tr>
+<tr class=b>
 <td title='0x9406 = 37894'>0x9406</td>
 <td>Tag9406</td>
 <td class=c>-</td>
 <td>--&gt; <a href='Sony.html#Tag9406'>Sony Tag9406 Tags</a></td></tr>
-<tr class=b>
+<tr>
 <td title='0x940a = 37898'>0x940a</td>
 <td>Tag940a</td>
 <td class=c>-</td>
 <td>--&gt; <a href='Sony.html#Tag940a'>Sony Tag940a Tags</a></td></tr>
-<tr>
+<tr class=b>
 <td title='0x940c = 37900'>0x940c</td>
 <td>Tag940c</td>
 <td class=c>-</td>
 <td>--&gt; <a href='Sony.html#Tag940c'>Sony Tag940c Tags</a></td></tr>
-<tr class=b>
+<tr>
 <td title='0x940e = 37902'>0x940e</td>
 <td>AFInfo
   <br>Tag940e</td>
 <td class=c>-<br>-</td>
 <td>--&gt; <a href='Sony.html#AFInfo'>Sony AFInfo Tags</a>
   <br>--&gt; <a href='Sony.html#Tag940e'>Sony Tag940e Tags</a></td></tr>
-<tr>
+<tr class=b>
 <td title='0x9416 = 37910'>0x9416</td>
 <td>Sony_0x9416</td>
 <td class=c>-</td>
 <td>--&gt; <a href='Sony.html#Tag9416'>Sony Tag9416 Tags</a></td></tr>
-<tr class=b>
+<tr>
 <td title='0xb000 = 45056'>0xb000</td>
 <td>FileFormat</td>
 <td class=c>int8u[4]</td>
 <td><table class=cols><tr>
   <td>&#39;0 0 0 2&#39; = JPEG
@@ -905,11 +945,11 @@ toward magenta)</span></span></td></tr>
   <br>&#39;3 3 2 0&#39; = ARW 2.3.2
   <br>&#39;3 3 3 0&#39; = ARW 2.3.3
   <br>&#39;3 3 5 0&#39; = ARW 2.3.5
   <br>&#39;4 0 0 0&#39; = ARW 4.0</td></tr></table>
 </td></tr>
-<tr>
+<tr class=b>
 <td title='0xb001 = 45057'>0xb001</td>
 <td>SonyModelID</td>
 <td class=c>int16u</td>
 <td><table class=cols><tr>
   <td>2 = DSC-R1
@@ -999,11 +1039,11 @@ toward magenta)</span></span></td></tr>
   <br>381 = ILCE-7C
   <br>383 = ILCE-7SM3
   <br>384 = ILCE-1
   <br>385 = ILME-FX3</td></tr></table>
 </td></tr>
-<tr class=b>
+<tr>
 <td title='0xb020 = 45088'>0xb020</td>
 <td>CreativeStyle</td>
 <td class=c>string</td>
 <td><table class=cols><tr>
   <td>&#39;AdobeRGB&#39; = Adobe RGB
@@ -1025,21 +1065,21 @@ toward magenta)</span></span></td></tr>
   <br>&#39;Standard&#39; = Standard
   <br>&#39;Sunset&#39; = Sunset
   <br>&#39;VV2&#39; = Vivid 2
   <br>&#39;Vivid&#39; = Vivid</td></tr></table>
 </td></tr>
-<tr>
+<tr class=b>
 <td title='0xb021 = 45089'>0xb021</td>
 <td>ColorTemperature</td>
 <td class=c>int32u</td>
 <td>&nbsp;</td></tr>
-<tr class=b>
+<tr>
 <td title='0xb022 = 45090'>0xb022</td>
 <td>ColorCompensationFilter</td>
 <td class=c>int32u</td>
 <td><span class=s><span class=n>(negative is green, positive is magenta)</span></span></td></tr>
-<tr>
+<tr class=b>
 <td title='0xb023 = 45091'>0xb023</td>
 <td>SceneMode</td>
 <td class=c>int32u</td>
 <td><table class=cols><tr>
   <td>0 = Standard
@@ -1066,18 +1106,18 @@ toward magenta)</span></span></td></tr>
   <br>27 = Food
   <br>28 = Pet
   <br>33 = HDR
   <br>65535 = n/a</td></tr></table>
 </td></tr>
-<tr class=b>
+<tr>
 <td title='0xb024 = 45092'>0xb024</td>
 <td>ZoneMatching</td>
 <td class=c>int32u</td>
 <td><span class=s>0 = ISO Setting Used
   <br>1 = High Key
   <br>2 = Low Key</span></td></tr>
-<tr>
+<tr class=b>
 <td title='0xb025 = 45093'>0xb025</td>
 <td>DynamicRangeOptimizer</td>
 <td class=c>int32u</td>
 <td><table class=cols><tr>
   <td>0 = Off
@@ -1093,28 +1133,28 @@ toward magenta)</span></span></td></tr>
   <br>17 = Lv2
   <br>18 = Lv3
   <br>19 = Lv4
   <br>20 = Lv5</td></tr></table>
 </td></tr>
-<tr class=b>
+<tr>
 <td title='0xb026 = 45094'>0xb026</td>
 <td>ImageStabilization</td>
 <td class=c>int32u</td>
 <td><span class=s>0 = Off
   <br>1 = On
   <br>4294967295 = n/a</span></td></tr>
-<tr>
+<tr class=b>
 <td title='0xb027 = 45095'>0xb027</td>
 <td>LensType</td>
 <td class=c>int32u</td>
 <td>--&gt; <a href='Sony.html#LensType'>Sony LensType Values</a></td></tr>
-<tr class=b>
+<tr>
 <td title='0xb028 = 45096'>0xb028</td>
 <td>MinoltaMakerNote</td>
 <td class=c>-</td>
 <td>--&gt; <a href='Minolta.html'>Minolta Tags</a></td></tr>
-<tr>
+<tr class=b>
 <td title='0xb029 = 45097'>0xb029</td>
 <td>ColorMode</td>
 <td class=c>int32u</td>
 <td><table class=cols><tr>
   <td>0 = Standard
@@ -1142,35 +1182,35 @@ toward magenta)</span></span></td></tr>
   <br>104 = Night View
   <br>105 = Autumn Leaves
   <br>255 = Off
   <br>4294967295 = n/a</td></tr></table>
 </td></tr>
-<tr class=b>
+<tr>
 <td title='0xb02a = 45098'>0xb02a</td>
 <td>LensSpec</td>
 <td class=c>int8u[8]</td>
 <td><span class=s><span class=n>(like LensInfo, but also specifies lens features: DT, E, ZA, G, SSM, SAM,
 OSS, STF, Reflex, Macro and Fisheye)</span></span></td></tr>
-<tr>
+<tr class=b>
 <td title='0xb02b = 45099'>0xb02b</td>
 <td>FullImageSize</td>
 <td class=c>int32u[2]</td>
 <td>&nbsp;</td></tr>
-<tr class=b>
+<tr>
 <td title='0xb02c = 45100'>0xb02c</td>
 <td>PreviewImageSize</td>
 <td class=c>int32u[2]</td>
 <td>&nbsp;</td></tr>
-<tr>
+<tr class=b>
 <td title='0xb040 = 45120'>0xb040</td>
 <td>Macro</td>
 <td class=c>int16u</td>
 <td><span class=s>0 = Off
   <br>1 = On
   <br>2 = Close Focus
   <br>65535 = n/a</span></td></tr>
-<tr class=b>
+<tr>
 <td title='0xb041 = 45121'>0xb041</td>
 <td>ExposureMode</td>
 <td class=c>int16u</td>
 <td><table class=cols><tr>
   <td>0 = Program AE
@@ -1203,20 +1243,20 @@ OSS, STF, Reflex, Macro and Fisheye)</span></span></td></tr>
   <br>40 = Background Defocus
   <br>41 = Soft Skin
   <br>42 = 3D Image
   <br>65535 = n/a</td></tr></table>
 </td></tr>
-<tr>
+<tr class=b>
 <td title='0xb042 = 45122'>0xb042</td>
 <td>FocusMode</td>
 <td class=c>int16u</td>
 <td><span class=s><span class=n>(not valid for all models)</span>
   <br>1 = AF-S
   <br>2 = AF-C
   <br>4 = Permanent-AF
   <br>65535 = n/a</span></td></tr>
-<tr class=b>
+<tr>
 <td title='0xb043 = 45123'>0xb043</td>
 <td>AFAreaMode</td>
 <td class=c>int16u</td>
 <td><span class=s><span class=n>(older models)</span></span><table class=cols><tr>
   <td>0 = Default
@@ -1236,26 +1276,26 @@ OSS, STF, Reflex, Macro and Fisheye)</span></span></td></tr>
   <br>10 = Selective (for Miniature effect)
   <br>14 = Tracking
   <br>15 = Face Tracking
   <br>255 = Manual</td></tr></table>
 </td></tr>
-<tr>
+<tr class=b>
 <td title='0xb044 = 45124'>0xb044</td>
 <td>AFIlluminator</td>
 <td class=c>int16u</td>
 <td><span class=s>0 = Off
   <br>1 = Auto
   <br>65535 = n/a</span></td></tr>
-<tr class=b>
+<tr>
 <td title='0xb047 = 45127'>0xb047</td>
 <td>JPEGQuality</td>
 <td class=c>int16u</td>
 <td><span class=s>0 = Standard
   <br>1 = Fine
   <br>2 = Extra Fine
   <br>65535 = n/a</span></td></tr>
-<tr>
+<tr class=b>
 <td title='0xb048 = 45128'>0xb048</td>
 <td>FlashLevel</td>
 <td class=c>int16s</td>
 <td><table class=cols><tr>
   <td>-32768 = Low
@@ -1275,11 +1315,11 @@ OSS, STF, Reflex, Macro and Fisheye)</span></span></td></tr>
   <br>6 = +6/3
   <br>9 = +9/3
   <br>128 = n/a
   <br>32767 = High</td></tr></table>
 </td></tr>
-<tr class=b>
+<tr>
 <td title='0xb049 = 45129'>0xb049</td>
 <td>ReleaseMode</td>
 <td class=c>int16u</td>
 <td><table class=cols><tr>
   <td>0 = Normal
@@ -1287,60 +1327,60 @@ OSS, STF, Reflex, Macro and Fisheye)</span></span></td></tr>
   <br>5 = Exposure Bracketing
   <br>6 = White Balance Bracketing
   <br>8 = DRO Bracketing
   <br>65535 = n/a</td></tr></table>
 </td></tr>
-<tr>
+<tr class=b>
 <td title='0xb04a = 45130'>0xb04a</td>
 <td>SequenceNumber</td>
 <td class=c>int16u</td>
 <td><span class=s><span class=n>(shot number in continuous burst)</span>
   <br>0 = Single
   <br>65535 = n/a</span></td></tr>
-<tr class=b>
+<tr>
 <td title='0xb04b = 45131'>0xb04b</td>
 <td>Anti-Blur</td>
 <td class=c>int16u</td>
 <td><span class=s>0 = Off
   <br>1 = On (Continuous)
   <br>2 = On (Shooting)
   <br>65535 = n/a</span></td></tr>
-<tr>
+<tr class=b>
 <td title='0xb04e = 45134'>0xb04e</td>
 <td>FocusMode</td>
 <td class=c>int16u</td>
 <td><span class=s><span class=n>(valid for DSC-HX9V generation and newer)</span>
   <br>0 = Manual
   <br>2 = AF-S
   <br>3 = AF-C
   <br>5 = Semi-manual
   <br>6 = DMF</span></td></tr>
-<tr class=b>
+<tr>
 <td title='0xb04f = 45135'>0xb04f</td>
 <td>DynamicRangeOptimizer</td>
 <td class=c>int16u</td>
 <td><span class=s>0 = Off
   <br>1 = Standard
   <br>2 = Plus</span></td></tr>
-<tr>
+<tr class=b>
 <td title='0xb050 = 45136'>0xb050</td>
 <td>HighISONoiseReduction2</td>
 <td class=c>int16u</td>
 <td><span class=s><span class=n>(DSC models only)</span>
   <br>0 = Normal
   <br>1 = High
   <br>2 = Low
   <br>3 = Off
   <br>65535 = n/a</span></td></tr>
-<tr class=b>
+<tr>
 <td title='0xb052 = 45138'>0xb052</td>
 <td>IntelligentAuto</td>
 <td class=c>int16u</td>
 <td><span class=s>0 = Off
   <br>1 = On
   <br>2 = Advanced</span></td></tr>
-<tr>
+<tr class=b>
 <td title='0xb054 = 45140'>0xb054</td>
 <td>WhiteBalance</td>
 <td class=c>int16u</td>
 <td><span class=s><span class=n>(decoding of the Fluorescent settings matches the EXIF standard, which is
 different than the names used by Sony for some models)</span></span><table class=cols><tr>
@@ -5275,11 +5315,14 @@ rotation -- the width is always the longer dimension.</p>
   <br>27 = Gamma Cine4
   <br>28 = Gamma S-Log2 (PP7)
   <br>29 = Gamma ITU709 (800%)
   <br>31 = Gamma S-Log3 (PP8 or PP9)
   <br>33 = Gamma HLG2 (PP10)
-  <br>34 = Gamma HLG3</td></tr></table>
+  <br>34 = Gamma HLG3
+  <br>37 = FL
+  <br>39 = IN
+  <br>40 = SH</td></tr></table>
 </td></tr>
 <tr class=b>
 <td class=r title='4447 = 0x115f'>4447</td>
 <td>PictureProfile</td>
 <td class=c>int8u</td>
@@ -5301,11 +5344,14 @@ rotation -- the width is always the longer dimension.</p>
   <br>27 = Gamma Cine4
   <br>28 = Gamma S-Log2 (PP7)
   <br>29 = Gamma ITU709 (800%)
   <br>31 = Gamma S-Log3 (PP8 or PP9)
   <br>33 = Gamma HLG2 (PP10)
-  <br>34 = Gamma HLG3</td></tr></table>
+  <br>34 = Gamma HLG3
+  <br>37 = FL
+  <br>39 = IN
+  <br>40 = SH</td></tr></table>
 </td></tr>
 <tr>
 <td class=r title='4451 = 0x1163'>4451</td>
 <td>PictureEffect2</td>
 <td class=c>int8u</td>
@@ -5669,11 +5715,14 @@ option is used.</p>
   <br>27 = Gamma Cine4
   <br>28 = Gamma S-Log2 (PP7)
   <br>29 = Gamma ITU709 (800%)
   <br>31 = Gamma S-Log3 (PP8 or PP9)
   <br>33 = Gamma HLG2 (PP10)
-  <br>34 = Gamma HLG3</td></tr></table>
+  <br>34 = Gamma HLG3
+  <br>37 = FL
+  <br>39 = IN
+  <br>40 = SH</td></tr></table>
 </td></tr>
 <tr>
 <td class=r title='4451 = 0x1163'>4451</td>
 <td>PictureProfile</td>
 <td class=c>int8u</td>
@@ -5695,11 +5744,14 @@ option is used.</p>
   <br>27 = Gamma Cine4
   <br>28 = Gamma S-Log2 (PP7)
   <br>29 = Gamma ITU709 (800%)
   <br>31 = Gamma S-Log3 (PP8 or PP9)
   <br>33 = Gamma HLG2 (PP10)
-  <br>34 = Gamma HLG3</td></tr></table>
+  <br>34 = Gamma HLG3
+  <br>37 = FL
+  <br>39 = IN
+  <br>40 = SH</td></tr></table>
 </td></tr>
 <tr class=b>
 <td class=r title='4455 = 0x1167'>4455</td>
 <td>PictureEffect2</td>
 <td class=c>int8u</td>
@@ -5895,11 +5947,14 @@ option is used.</p>
   <br>27 = Gamma Cine4
   <br>28 = Gamma S-Log2 (PP7)
   <br>29 = Gamma ITU709 (800%)
   <br>31 = Gamma S-Log3 (PP8 or PP9)
   <br>33 = Gamma HLG2 (PP10)
-  <br>34 = Gamma HLG3</td></tr></table>
+  <br>34 = Gamma HLG3
+  <br>37 = FL
+  <br>39 = IN
+  <br>40 = SH</td></tr></table>
 </td></tr>
 <tr class=b>
 <td class=r title='4415 = 0x113f'>4415</td>
 <td>PictureProfile</td>
 <td class=c>int8u</td>
@@ -5921,11 +5976,14 @@ option is used.</p>
   <br>27 = Gamma Cine4
   <br>28 = Gamma S-Log2 (PP7)
   <br>29 = Gamma ITU709 (800%)
   <br>31 = Gamma S-Log3 (PP8 or PP9)
   <br>33 = Gamma HLG2 (PP10)
-  <br>34 = Gamma HLG3</td></tr></table>
+  <br>34 = Gamma HLG3
+  <br>37 = FL
+  <br>39 = IN
+  <br>40 = SH</td></tr></table>
 </td></tr>
 <tr>
 <td class=r title='4419 = 0x1143'>4419</td>
 <td>PictureEffect2</td>
 <td class=c>int8u</td>
@@ -6107,11 +6165,14 @@ not valid for panorama images.</p>
   <br>27 = Gamma Cine4
   <br>28 = Gamma S-Log2 (PP7)
   <br>29 = Gamma ITU709 (800%)
   <br>31 = Gamma S-Log3 (PP8 or PP9)
   <br>33 = Gamma HLG2 (PP10)
-  <br>34 = Gamma HLG3</td></tr></table>
+  <br>34 = Gamma HLG3
+  <br>37 = FL
+  <br>39 = IN
+  <br>40 = SH</td></tr></table>
 </td></tr>
 <tr class=b>
 <td class=r title='4539 = 0x11bb'>4539</td>
 <td>PictureProfile</td>
 <td class=c>int8u</td>
@@ -6133,11 +6194,14 @@ not valid for panorama images.</p>
   <br>27 = Gamma Cine4
   <br>28 = Gamma S-Log2 (PP7)
   <br>29 = Gamma ITU709 (800%)
   <br>31 = Gamma S-Log3 (PP8 or PP9)
   <br>33 = Gamma HLG2 (PP10)
-  <br>34 = Gamma HLG3</td></tr></table>
+  <br>34 = Gamma HLG3
+  <br>37 = FL
+  <br>39 = IN
+  <br>40 = SH</td></tr></table>
 </td></tr>
 <tr>
 <td class=r title='4543 = 0x11bf'>4543</td>
 <td>PictureEffect2</td>
 <td class=c>int8u</td>
@@ -6323,11 +6387,14 @@ WX300, but not for panorama images.</p>
   <br>27 = Gamma Cine4
   <br>28 = Gamma S-Log2 (PP7)
   <br>29 = Gamma ITU709 (800%)
   <br>31 = Gamma S-Log3 (PP8 or PP9)
   <br>33 = Gamma HLG2 (PP10)
-  <br>34 = Gamma HLG3</td></tr></table>
+  <br>34 = Gamma HLG3
+  <br>37 = FL
+  <br>39 = IN
+  <br>40 = SH</td></tr></table>
 </td></tr>
 <tr class=b>
 <td class=r title='4503 = 0x1197'>4503</td>
 <td>PictureProfile</td>
 <td class=c>int8u</td>
@@ -6349,11 +6416,14 @@ WX300, but not for panorama images.</p>
   <br>27 = Gamma Cine4
   <br>28 = Gamma S-Log2 (PP7)
   <br>29 = Gamma ITU709 (800%)
   <br>31 = Gamma S-Log3 (PP8 or PP9)
   <br>33 = Gamma HLG2 (PP10)
-  <br>34 = Gamma HLG3</td></tr></table>
+  <br>34 = Gamma HLG3
+  <br>37 = FL
+  <br>39 = IN
+  <br>40 = SH</td></tr></table>
 </td></tr>
 <tr>
 <td class=r title='4507 = 0x119b'>4507</td>
 <td>PictureEffect2</td>
 <td class=c>int8u</td>
@@ -6590,11 +6660,14 @@ WX300, but not for panorama images.</p>
   <br>27 = Gamma Cine4
   <br>28 = Gamma S-Log2 (PP7)
   <br>29 = Gamma ITU709 (800%)
   <br>31 = Gamma S-Log3 (PP8 or PP9)
   <br>33 = Gamma HLG2 (PP10)
-  <br>34 = Gamma HLG3</td></tr></table>
+  <br>34 = Gamma HLG3
+  <br>37 = FL
+  <br>39 = IN
+  <br>40 = SH</td></tr></table>
 </td></tr>
 <tr class=b>
 <td class=r title='4175 = 0x104f'>4175</td>
 <td>PictureProfile</td>
 <td class=c>int8u</td>
@@ -6616,11 +6689,14 @@ WX300, but not for panorama images.</p>
   <br>27 = Gamma Cine4
   <br>28 = Gamma S-Log2 (PP7)
   <br>29 = Gamma ITU709 (800%)
   <br>31 = Gamma S-Log3 (PP8 or PP9)
   <br>33 = Gamma HLG2 (PP10)
-  <br>34 = Gamma HLG3</td></tr></table>
+  <br>34 = Gamma HLG3
+  <br>37 = FL
+  <br>39 = IN
+  <br>40 = SH</td></tr></table>
 </td></tr>
 <tr>
 <td class=r title='4179 = 0x1053'>4179</td>
 <td>PictureEffect2</td>
 <td class=c>int8u</td>
@@ -6802,11 +6878,14 @@ ILCE-7/7R/7S/7M2/5000/5100/6000/QX1, ILCA-68/77M2.</p>
   <br>27 = Gamma Cine4
   <br>28 = Gamma S-Log2 (PP7)
   <br>29 = Gamma ITU709 (800%)
   <br>31 = Gamma S-Log3 (PP8 or PP9)
   <br>33 = Gamma HLG2 (PP10)
-  <br>34 = Gamma HLG3</td></tr></table>
+  <br>34 = Gamma HLG3
+  <br>37 = FL
+  <br>39 = IN
+  <br>40 = SH</td></tr></table>
 </td></tr>
 <tr>
 <td class=r title='583 = 0x247'>583</td>
 <td>PictureProfile</td>
 <td class=c>int8u</td>
@@ -6828,11 +6907,14 @@ ILCE-7/7R/7S/7M2/5000/5100/6000/QX1, ILCA-68/77M2.</p>
   <br>27 = Gamma Cine4
   <br>28 = Gamma S-Log2 (PP7)
   <br>29 = Gamma ITU709 (800%)
   <br>31 = Gamma S-Log3 (PP8 or PP9)
   <br>33 = Gamma HLG2 (PP10)
-  <br>34 = Gamma HLG3</td></tr></table>
+  <br>34 = Gamma HLG3
+  <br>37 = FL
+  <br>39 = IN
+  <br>40 = SH</td></tr></table>
 </td></tr>
 <tr class=b>
 <td class=r title='587 = 0x24b'>587</td>
 <td>PictureEffect2</td>
 <td class=c>int8u</td>
@@ -7060,11 +7142,14 @@ ILCE-6300/6500/7RM2/7SM2, ILCA-99M2.</p>
   <br>27 = Gamma Cine4
   <br>28 = Gamma S-Log2 (PP7)
   <br>29 = Gamma ITU709 (800%)
   <br>31 = Gamma S-Log3 (PP8 or PP9)
   <br>33 = Gamma HLG2 (PP10)
-  <br>34 = Gamma HLG3</td></tr></table>
+  <br>34 = Gamma HLG3
+  <br>37 = FL
+  <br>39 = IN
+  <br>40 = SH</td></tr></table>
 </td></tr>
 <tr>
 <td class=r title='583 = 0x247'>583</td>
 <td>PictureProfile</td>
 <td class=c>int8u</td>
@@ -7086,11 +7171,14 @@ ILCE-6300/6500/7RM2/7SM2, ILCA-99M2.</p>
   <br>27 = Gamma Cine4
   <br>28 = Gamma S-Log2 (PP7)
   <br>29 = Gamma ITU709 (800%)
   <br>31 = Gamma S-Log3 (PP8 or PP9)
   <br>33 = Gamma HLG2 (PP10)
-  <br>34 = Gamma HLG3</td></tr></table>
+  <br>34 = Gamma HLG3
+  <br>37 = FL
+  <br>39 = IN
+  <br>40 = SH</td></tr></table>
 </td></tr>
 <tr class=b>
 <td class=r title='587 = 0x24b'>587</td>
 <td>PictureEffect2</td>
 <td class=c>int8u</td>
@@ -7323,11 +7411,14 @@ RX100M5A/RX100M7/HX99.</p>
   <br>27 = Gamma Cine4
   <br>28 = Gamma S-Log2 (PP7)
   <br>29 = Gamma ITU709 (800%)
   <br>31 = Gamma S-Log3 (PP8 or PP9)
   <br>33 = Gamma HLG2 (PP10)
-  <br>34 = Gamma HLG3</td></tr></table>
+  <br>34 = Gamma HLG3
+  <br>37 = FL
+  <br>39 = IN
+  <br>40 = SH</td></tr></table>
 </td></tr>
 <tr>
 <td class=r title='568 = 0x238'>568</td>
 <td>PictureProfile</td>
 <td class=c>int8u</td>
@@ -7349,11 +7440,14 @@ RX100M5A/RX100M7/HX99.</p>
   <br>27 = Gamma Cine4
   <br>28 = Gamma S-Log2 (PP7)
   <br>29 = Gamma ITU709 (800%)
   <br>31 = Gamma S-Log3 (PP8 or PP9)
   <br>33 = Gamma HLG2 (PP10)
-  <br>34 = Gamma HLG3</td></tr></table>
+  <br>34 = Gamma HLG3
+  <br>37 = FL
+  <br>39 = IN
+  <br>40 = SH</td></tr></table>
 </td></tr>
 <tr class=b>
 <td class=r title='572 = 0x23c'>572</td>
 <td>PictureEffect2</td>
 <td class=c>int8u</td>
@@ -8155,11 +8249,11 @@ models)</span></span></td></tr>
 <td class=c>undef[2]</td>
 <td>&nbsp;</td></tr>
 </table></td></tr></table></blockquote>
 
 <h2><a name='Tag9050c'>Sony Tag9050c Tags</a></h2>
-<p>Valid from July 2020 for ILCE-1/7SM3.</p>
+<p>Valid from July 2020 for ILCE-1/7SM3, ILME-FX3.</p>
 <blockquote>
 <table class=frame><tr><td>
 <table class=inner cellspacing=1>
 <tr class=h><th>Index1</th><th>Tag Name</th>
 <th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
@@ -8224,10 +8318,15 @@ models)</span></span></td></tr>
 <tr>
 <td class=r title='136 = 0x88'>136</td>
 <td>InternalSerialNumber</td>
 <td class=c title=' ~ = Writable only with -n'>int8u[6]~</td>
 <td>&nbsp;</td></tr>
+<tr class=b>
+<td class=r title='138 = 0x8a'>138</td>
+<td>InternalSerialNumber</td>
+<td class=c title=' ~ = Writable only with -n'>int8u[6]~</td>
+<td>&nbsp;</td></tr>
 </table></td></tr></table></blockquote>
 
 <h2><a name='Tag9400a'>Sony Tag9400a Tags</a></h2>
 <p>Valid for many DSC, NEX and SLT models</p>
 <blockquote>
@@ -8460,11 +8559,16 @@ WX350/WX500, ILCE-1/7/7C/7R/7S/7M2/7M3/7RM2/7RM3/7RM4/7SM2/7SM3/9/9M2/5000/
 <td>Quality2</td>
 <td class=c>int8u</td>
 <td><span class=s>0 = JPEG
   <br>1 = RAW
   <br>2 = RAW + JPEG
-  <br>3 = JPEG + MPO</span></td></tr>
+  <br>3 = JPEG + MPO
+  <br>1 = JPEG
+  <br>2 = RAW
+  <br>3 = RAW + JPEG
+  <br>4 = HEIF
+  <br>6 = RAW + HEIF</span></td></tr>
 <tr>
 <td class=r title='71 = 0x47'>71</td>
 <td>SonyImageHeight</td>
 <td class=c title=' ~ = Writable only with -n'>int16u~</td>
 <td>&nbsp;</td></tr>
@@ -9044,11 +9148,11 @@ ILCE-7/7M2/7M3/7R/7RM2/7RM3/7RM4/7S/7SM2/9/9M2/5000/5100/6000/6100/6300/
   <br>Bit 18 = Upper Far Left</td></tr></table>
 </td></tr>
 </table></td></tr></table></blockquote>
 
 <h2><a name='Tag940c'>Sony Tag940c Tags</a></h2>
-<p>NEX and ILCE models only.</p>
+<p>E-mount cameras only.</p>
 <blockquote>
 <table class=frame><tr><td>
 <table class=inner cellspacing=1>
 <tr class=h><th>Index1</th><th>Tag Name</th>
 <th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
@@ -10814,11 +10918,11 @@ ILCE-7/7M2/7M3/7R/7RM2/7RM3/7RM4/7S/7SM2/9/9M2/5000/5100/6000/6100/6300/
 <td><span class=s><span class=n>(13(?)-bit intensity data from 1320 (1200) metering segments, extracted as a
 16-bit TIFF image)</span></span></td></tr>
 </table></td></tr></table></blockquote>
 
 <h2><a name='Tag9416'>Sony Tag9416 Tags</a></h2>
-<p>Valid for the ILCE-1/7SM3.</p>
+<p>Valid for the ILCE-1/7SM3, ILME-FX3.</p>
 <blockquote>
 <table class=frame><tr><td>
 <table class=inner cellspacing=1>
 <tr class=h><th>Index1</th><th>Tag Name</th>
 <th>Writable</th><th>Values / <span class=n>Notes</span></th></tr>
@@ -10926,11 +11030,14 @@ ILCE-7/7M2/7M3/7R/7RM2/7RM3/7RM4/7S/7SM2/9/9M2/5000/5100/6000/6100/6300/
   <br>27 = Gamma Cine4
   <br>28 = Gamma S-Log2 (PP7)
   <br>29 = Gamma ITU709 (800%)
   <br>31 = Gamma S-Log3 (PP8 or PP9)
   <br>33 = Gamma HLG2 (PP10)
-  <br>34 = Gamma HLG3</td></tr></table>
+  <br>34 = Gamma HLG3
+  <br>37 = FL
+  <br>39 = IN
+  <br>40 = SH</td></tr></table>
 </td></tr>
 <tr>
 <td class=r title='113 = 0x71'>113</td>
 <td>FocalLength</td>
 <td class=c>no</td>
@@ -11646,9 +11753,9 @@ some models when the <a href="../ExifTool.html#ExtractEmbedded">ExtractEmbedded<
 <td>&nbsp;</td></tr>
 </table></td></tr></table></blockquote>
 
 <hr>
 (This document generated automatically by Image::ExifTool::BuildTagLookup)
-<br><i>Last revised Apr 1, 2021</i>
+<br><i>Last revised Apr 13, 2021</i>
 <p class=lf><a href='index.html'>&lt;-- ExifTool Tag Names</a></p>
 </body>
 </html>
diff --git a/html/TagNames/index.html b/html/TagNames/index.html
index aeb37210..14cd2554 100644
--- a/html/TagNames/index.html
+++ b/html/TagNames/index.html
@@ -8,11 +8,11 @@
 </head>
 <body>
 <h2 class=top>ExifTool Tag Names</h2>
 <p>
 The tables listed below give the names of all tags recognized by ExifTool.
-They contain a total of 24102 tags, with 15604 unique tag names.
+They contain a total of 24118 tags, with 15614 unique tag names.
 </p>
 <blockquote>
 <table width='100%' class=frame><tr><td>
 <table width='100%' class=inner cellspacing=1><tr class=h>
 <th colspan=6><span class=l>Tag Table Index</span></th></tr>
@@ -231,9 +231,9 @@ as accurate and complete as possible, and feed any new discoveries back to
 ExifTool.  A big thanks to everyone who has helped with this so far!)</i>
 </p>
 <hr>
 (This document generated automatically by Image::ExifTool::BuildTagLookup)
 <br><i>Created Feb 15, 2005</i>
-<br><i>Last revised Apr 1, 2021</i>
+<br><i>Last revised Apr 13, 2021</i>
 <p class=lf><a href='../index.html'>&lt;-- Back to ExifTool home page</a></p>
 </body>
 </html>
diff --git a/html/exiftool_pod.html b/html/exiftool_pod.html
index aae72ef2..e52652e2 100644
--- a/html/exiftool_pod.html
+++ b/html/exiftool_pod.html
@@ -683,11 +683,11 @@
 
 <pre><code>    exiftool -p test.fmt a.jpg b.jpg</code></pre>
 
 <p>produces output like this:</p>
 
-<pre><code>    -- Generated by ExifTool 12.23 --
+<pre><code>    -- Generated by ExifTool 12.24 --
     File: a.jpg - 2003:10:31 15:44:19
     (f/5.6, 1/60s, ISO 100)
     File: b.jpg - 2006:05:23 11:57:38
     (f/8.0, 1/13s, ISO 100)
     -- end --</code></pre>
diff --git a/html/exiftool_pod.pdf b/html/exiftool_pod.pdf
index 227c878a..8448225c 100644
--- a/html/exiftool_pod.pdf
+++ b/html/exiftool_pod.pdf
@@ -10,11 +10,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                     1)Tj
+(                              -- ExifTool 12.24 --                                     1)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (EXIFTOOL\(1\)           User Contributed Perl Documentation          EXIFTOOL\(1\))Tj
 0 -4.4 TD
 (N)Tj
@@ -635,11 +635,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                     2)Tj
+(                              -- ExifTool 12.24 --                                     2)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (         AVIF  r/w   | FITS  r     | MAX   r     | PDB   r     | THM   r/w)Tj
 0 -1.1 TD
 (         AZW   r     | FLA   r     | MEF   r/w   | PDF   r/w   | TIFF  r/w)Tj
@@ -832,11 +832,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                     3)Tj
+(                              -- ExifTool 12.24 --                                     3)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (         -charset [[TYPE=]CHARSET]        Specify encoding for special characters)Tj
 0 -1.1 TD
 (         -csv[[+]=CSVFILE]                Export/import tags in CSV format)Tj
@@ -989,11 +989,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                     4)Tj
+(                              -- ExifTool 12.24 --                                     4)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (         -globalTimeShift SHIFT           Shift all formatted date/time values)Tj
 0 -1.1 TD
 (         -use MODULE                      Add features from plug-in module)Tj
@@ -1280,11 +1280,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                     5)Tj
+(                              -- ExifTool 12.24 --                                     5)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            the -)Tj
 9.6 0 TD
 (-t)Tj
@@ -1613,11 +1613,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                     6)Tj
+(                              -- ExifTool 12.24 --                                     6)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            deletable Time tags except those in the EXIF.  This difference)Tj
 0 -1.1 TD
 (            also applies if family 2 is specified when deleting all groups.)Tj
@@ -2050,11 +2050,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                     7)Tj
+(                              -- ExifTool 12.24 --                                     7)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            specified for each copied tag.  With this feature, information may)Tj
 0 -1.1 TD
 (            be written to a tag with a different name or group.  This is done)Tj
@@ -2537,11 +2537,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                     8)Tj
+(                              -- ExifTool 12.24 --                                     8)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            groups of tags from a file containing redundant information, it)Tj
 0 -1.1 TD
 (            also prevents values of different tags from being copied into the)Tj
@@ -3040,11 +3040,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                     9)Tj
+(                              -- ExifTool 12.24 --                                     9)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            "unsafe".  For instance, the FileName and Directory tags are)Tj
 0 -1.1 TD
 (            excluded in the example above to avoid renaming and moving the)Tj
@@ -3461,11 +3461,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    10)Tj
+(                              -- ExifTool 12.24 --                                    10)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (                Vietnam     cp1258           Windows Vietnamese)Tj
 0 -1.1 TD
 (                Thai        cp874            Windows Thai)Tj
@@ -3746,11 +3746,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    11)Tj
+(                              -- ExifTool 12.24 --                                    11)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            names, the duplicate tags are only included in the CSV output if)Tj
 0 -1.1 TD
 (            the column headings are unique.  Adding the -)Tj
@@ -4219,11 +4219,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    12)Tj
+(                              -- ExifTool 12.24 --                                    12)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            option, a dash \("-"\) is printed for the value of any missing tag,)Tj
 0 -1.1 TD
 (            but the dash may be changed via the API MissingTagValue option.)Tj
@@ -4836,11 +4836,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    13)Tj
+(                              -- ExifTool 12.24 --                                    13)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            UTF-8 regardless of any -)Tj
 21.6 0 TD
 (-L)Tj
@@ -5225,11 +5225,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    14)Tj
+(                              -- ExifTool 12.24 --                                    14)Tj
 /TT4 1 Tf
 0 -2.7333 TD
 (                push @INC, 'lib';)Tj
 0 -1.1 TD
 (                require Image::ExifTool::TagInfoXML;)Tj
@@ -5490,11 +5490,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    15)Tj
+(                              -- ExifTool 12.24 --                                    15)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            A section is defined as a group of consecutive files with the same)Tj
 0 -1.1 TD
 (            section header \(eg. files are grouped by directory if "#[SECT]")Tj
@@ -5523,11 +5523,11 @@ T*
 T*
 (                exiftool -p test.fmt a.jpg b.jpg)Tj
 T*
 (            produces output like this:)Tj
 T*
-(                -- Generated by ExifTool 12.23 --)Tj
+(                -- Generated by ExifTool 12.24 --)Tj
 0 -1.1 TD
 (                File: a.jpg - 2003:10:31 15:44:19)Tj
 T*
 (                \(f/5.6, 1/60s, ISO 100\))Tj
 T*
@@ -5869,11 +5869,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    16)Tj
+(                              -- ExifTool 12.24 --                                    16)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            to column-align values.)Tj
 0 -2.2 TD
 (       -)Tj
@@ -6412,11 +6412,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    17)Tj
+(                              -- ExifTool 12.24 --                                    17)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            the source file extension \(including the '.'\) with the specified)Tj
 0 -1.1 TD
 (            extension \(and a '.' is added to the start of _)Tj
@@ -6643,11 +6643,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    18)Tj
+(                              -- ExifTool 12.24 --                                    18)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            For %d and %D, the field width/position specifiers may be applied)Tj
 0 -1.1 TD
 (            to the directory levels instead of substring position by using a)Tj
@@ -6874,11 +6874,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    19)Tj
+(                              -- ExifTool 12.24 --                                    19)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            the output file \(based on the format of the data\).  The %g code)Tj
 0 -1.1 TD
 (            may be followed by a single digit to specify the group family)Tj
@@ -7381,11 +7381,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    20)Tj
+(                              -- ExifTool 12.24 --                                    20)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (       -)Tj
 4.2 0 TD
 (-a)Tj
@@ -7882,11 +7882,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    21)Tj
+(                              -- ExifTool 12.24 --                                    21)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            that exiftool will automatically fix the offsets for images which)Tj
 0 -1.1 TD
 (            store original offset information \(eg. newer Canon models\).)Tj
@@ -8439,11 +8439,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    22)Tj
+(                              -- ExifTool 12.24 --                                    22)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            character to disable print conversion.  The expression $GROUP:all)Tj
 0 -1.1 TD
 (            evaluates to 1 if any tag exists in the specified "GROUP", or 0)Tj
@@ -8754,11 +8754,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    23)Tj
+(                              -- ExifTool 12.24 --                                    23)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            with minor errors and disables some validation checks which could)Tj
 0 -1.1 TD
 (            result in minor warnings.  Generally, minor errors/warnings)Tj
@@ -9309,11 +9309,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    24)Tj
+(                              -- ExifTool 12.24 --                                    24)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            necessary.)Tj
 0 -2.2 TD
 (            Note that this option reverts to the behaviour of the)Tj
@@ -9884,11 +9884,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    25)Tj
+(                              -- ExifTool 12.24 --                                    25)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            to tags with numerical tag ID's, and causes tag names like)Tj
 0 -1.1 TD
 (            "Exif_0xc5d9" to be generated for unknown information.  It has no)Tj
@@ -10265,11 +10265,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    26)Tj
+(                              -- ExifTool 12.24 --                                    26)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            used to prevent the command window from closing when run as a)Tj
 0 -1.1 TD
 (            Windows drag and drop application.)Tj
@@ -10870,11 +10870,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    27)Tj
+(                              -- ExifTool 12.24 --                                    27)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            they are supported by the destination metadata format\):)Tj
 0 -1.1 TD
 (            GPSLatitude, GPSLatitudeRef, GPSLongitude, GPSLongitudeRef,)Tj
@@ -11237,11 +11237,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    28)Tj
+(                              -- ExifTool 12.24 --                                    28)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (       -)Tj
 4.2 0 TD
 (-d)Tj
@@ -11904,11 +11904,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    29)Tj
+(                              -- ExifTool 12.24 --                                    29)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            -)Tj
 7.2 0 TD
 (-e)Tj
@@ -12537,11 +12537,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    30)Tj
+(                              -- ExifTool 12.24 --                                    30)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            per line \(see the -)Tj
 18 0 TD
 (-@)Tj
@@ -13094,11 +13094,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    31)Tj
+(                              -- ExifTool 12.24 --                                    31)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (       with spaces translated to underlines, and multiple consecutive)Tj
 0 -1.1 TD
 (       underlines replaced by a single underline:)Tj
@@ -13293,11 +13293,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    32)Tj
+(                              -- ExifTool 12.24 --                                    32)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (       valid ExifTool character set, preferably "UTF8" \(see the -)Tj
 38.4 0 TD
 (-c)Tj
@@ -13802,11 +13802,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    33)Tj
+(                              -- ExifTool 12.24 --                                    33)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (       quotes as below around arguments containing special characters.)Tj
 0 -2.2 TD
 (       exiftool -a -u -g1 a.jpg)Tj
@@ -13939,11 +13939,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    34)Tj
+(                              -- ExifTool 12.24 --                                    34)Tj
 /TT4 1 Tf
 0 -2.7333 TD
 (       exiftool -icc_profile -b -w icc image.jpg)Tj
 0 -1.1 TD
 (            Save complete ICC_Profile from an image to an output file with the)Tj
@@ -14106,11 +14106,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    35)Tj
+(                              -- ExifTool 12.24 --                                    35)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (       exiftool -r -XMP-crss:all= DIR)Tj
 0 -1.1 TD
 (            Recursively delete all XMP-crss information from images in a)Tj
@@ -14273,11 +14273,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    36)Tj
+(                              -- ExifTool 12.24 --                                    36)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            Copy the values of all writable tags from "src.cr2" to "dst.jpg",)Tj
 0 -1.1 TD
 (            writing the information to same-named tags in the preferred)Tj
@@ -14442,11 +14442,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    37)Tj
+(                              -- ExifTool 12.24 --                                    37)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (            Recursively rewrite all "JPG" images in "dir" with information)Tj
 0 -1.1 TD
 (            copied from the corresponding "CR2" images in the same)Tj
@@ -14689,11 +14689,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    38)Tj
+(                              -- ExifTool 12.24 --                                    38)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (       exiftool -o . '-Directory<DateTimeOriginal' -d %Y/%m/%d dir)Tj
 0 -1.1 TD
 (            Same effect as above except files are copied instead of moved.)Tj
@@ -14866,11 +14866,11 @@ BT
 10 0 0 10 29 806.3333 Tm
 0 g
 /GS1 gs
 0 Tc
 0 Tw
-(                              -- ExifTool 12.23 --                                    39)Tj
+(                              -- ExifTool 12.24 --                                    39)Tj
 /TT4 1 Tf
 0 -1.6333 TD
 (       exiftool -xmp:geotag=track.log a.jpg)Tj
 0 -1.1 TD
 (            Geotag an image with XMP tags, using the time from)Tj
@@ -15241,11 +15241,11 @@ T*
 0.6 0 TD
 (t_)Tj
 0.6 0 TD
 (s\(3pm\), Image::ExifTool::Shift.pl)Tj
 -19.2 -4.4 TD
-(perl v5.18.4                      2021-04-01                       EXIFTOOL\(1\))Tj
+(perl v5.18.4                      2021-04-13                       EXIFTOOL\(1\))Tj
 ET
 endstream
 endobj
 125 0 obj
 <<
@@ -15701,12 +15701,12 @@ endobj
 /MediaBox [0 0 595 842]
 >>
 endobj
 130 0 obj
 <<
-/CreationDate (D:20210401142148-04'00')
-/ModDate (D:20210401142148-04'00')
+/CreationDate (D:20210413110921-04'00')
+/ModDate (D:20210413110921-04'00')
 /Producer (Apple pstopdf)
 >>
 endobj
 131 0 obj
 <<
@@ -15852,10 +15852,10 @@ xref
 trailer
 <<
 /Size 132
 /Root 131 0 R
 /Info 130 0 R
-/ID [<ab798910bbf7ddf1029ca400262164d7><ab798910bbf7ddf1029ca400262164d7>]
+/ID [<88f6ccfb20ef49d8fb5d8a90914f5aa9><88f6ccfb20ef49d8fb5d8a90914f5aa9>]
 >>
 startxref
 267700
 %%EOF
diff --git a/html/history.html b/html/history.html
index b79d5245..ae5b647f 100644
--- a/html/history.html
+++ b/html/history.html
@@ -15,10 +15,22 @@
 considered development releases, and are not uploaded to <a href="https://metacpan.org/release/Image-ExifTool">MetaCPAN</a>.)</p>
 
 <!-- Use line width of 80 -->
 <!-- *********************************************************************** -->
 
+<a name='v12.24'><b>Apr. 13, 2021 - Version 12.24</b></a>
+<ul>
+<li>Added a new PhaseOne RawFormat value (thanks LibRaw)
+<li>Decode a new Sony tag (thanks Jos Roost)
+<li>Decode a few new Panasonic and FujiFilm tags (thanks LibRaw and Greybeard)
+<li>Patched security vulnerability in DjVu reader
+<li>Updated acdsee.config in distribution (thanks StarGeek)
+<li>Recognize AutoCAD DXF files
+<li>More work on experimental JUMBF read support
+<li>More work on experimental JXL read/write support
+</ul>
+
 <a name='v12.23'><b>Apr. 1, 2021 - Version 12.23</b></a>
 <ul>
 <li>Added support for Olympus ORI files
 <li>Added experimental read/write support for JPEG XL images
 <li>Added experimental read support for JUMBF metadata in JPEG and Jpeg2000
@@ -32,11 +44,11 @@ considered development releases, and are not uploaded to <a href="https://metacp
 <li>Patched to avoid escaping ',' in "Binary data" message when -struct is used
 <li>Removed Unknown flag from MXF VideoCodingSchemeID tag
 <li>Fixed -forcewrite=EXIF to apply to EXIF in binary header of EPS files
 <li>API Changes:
     <ul>
-    <li>Added BlockExtract option
+    <li>Added <a href="ExifTool.html#BlockExtract">BlockExtract option</a>
     </ul>
 </ul>
 
 <a name='v12.22'><b>Mar. 17, 2021 - Version 12.22</b></a>
 <ul>
diff --git a/html/index.html b/html/index.html
index e9dd5878..725aca3c 100644
--- a/html/index.html
+++ b/html/index.html
@@ -79,13 +79,13 @@ span.sup        { font-size: 0.8em; font-weight: normal; position: relative; top
 <br><a href="#donate">Donate</a>
 <br><a href="#contact">Contact Me</a>
 </div>
 
 <blockquote><table class='dl lg'><tr><td><b>
-<a href="http://sourceforge.net/projects/exiftool/files/Image-ExifTool-12.23.tar.gz/download">
-Download        Version 12.23</a> (4.7 MB) -
-<a href="history.html">Apr. 1, 2021</a></b></td></tr></table></blockquote>
+<a href="http://sourceforge.net/projects/exiftool/files/Image-ExifTool-12.24.tar.gz/download">
+Download        Version 12.24</a> (4.7 MB) -
+<a href="history.html">Apr. 13, 2021</a></b></td></tr></table></blockquote>
 
 <p><b>ExifTool is a platform-independent <a href="ExifTool.html">Perl
 library</a> plus a <a href="exiftool_pod.html">command-line application</a> for
 reading, writing and editing meta information in a
 <a href="#supported">wide variety of files</a>.</b>
@@ -134,12 +134,12 @@ as well as the maker notes of many digital cameras by
 only, and do not include the HTML documentation or other files of the full
 distribution above.)</i></p>
 
 <blockquote><table class='dl lg'><tr><td><b>
 <a name="alone">Windows Executable:</a>
-<a href="http://sourceforge.net/projects/exiftool/files/exiftool-12.23.zip/download">
-         exiftool-12.23.zip</a> (6.4 MB)</b></td></tr></table></blockquote>
+<a href="http://sourceforge.net/projects/exiftool/files/exiftool-12.24.zip/download">
+         exiftool-12.24.zip</a> (6.4 MB)</b></td></tr></table></blockquote>
 
 <p><b>The stand-alone Windows executable</b> does not require Perl. Just
 download and un-zip the archive then double-click on
 "<code>exiftool(-k).exe</code>" to read the application documentation,
 drag-and-drop files and folders to view meta information, or rename to
@@ -153,11 +153,11 @@ that avoids some problems of the self-extracting archive version above.  Please
 if you have any problems/comments with this version.)</i></p>
 
 <blockquote><table class='dl lg'><tr><td><b>
 MacOS Package:
 <a href="http://sourceforge.net/projects/exiftool/files/ExifTool-9.70.dmg/download">
-         ExifTool-12.23.dmg</a> (3.0 MB)</b></td></tr></table></blockquote>
+         ExifTool-12.24.dmg</a> (3.0 MB)</b></td></tr></table></blockquote>
 
 <p><b>The MacOS package</b> installs the ExifTool command-line application and
 libraries in /usr/local/bin. After installing, type "<code>exiftool</code>" in a
 Terminal window to run exiftool and read the application documentation.</p>
 
diff --git a/html/install.html b/html/install.html
index f24fc89f..fc49abba 100644
--- a/html/install.html
+++ b/html/install.html
@@ -50,14 +50,14 @@ executable, but note that the stand-alone version doesn't include the HTML
 documentation or some other files of the full distribution.</p>
 
 <h3>Stand-Alone Executable</h3>
 <ol>
 <li><b>Download</b> the <b>Windows Executable</b> from the <a href="index.html">ExifTool home page</a>.
-<br><span class=lt>(The file you download should be named "<code>exiftool-12.23.zip</code>".)</span></li>
+<br><span class=lt>(The file you download should be named "<code>exiftool-12.24.zip</code>".)</span></li>
 <li><b>Extract "<code>exiftool(-k).exe</code>"</b> from the
 "<code>.zip</code>" file, and place it <b>on your Desktop</b>.
-<br><span class=lt>(Double-click on "<code>exiftool-12.23.zip</code>" to open
+<br><span class=lt>(Double-click on "<code>exiftool-12.24.zip</code>" to open
 the archive, then drag "<code>exiftool(-k).exe</code>" to your Desktop.)</span></li>
 </ol>
 <p>You can now double-click on "<code>exiftool(-k).exe</code>" to read the
 application documentation, or drag-and-drop files and folders to run exiftool on
 selected files. To install exiftool for <b>use from the command line</b>,
@@ -107,11 +107,11 @@ or later).  Alternately, this command may be used to delete these files:
 <p>You must have Perl installed to use this version.  (A free version of Perl
 can be downloaded from
 <a href="http://www.activestate.com/activeperl/">activeperl.com</a>.)</p>
 <ol>
 <li><b>Download</b> the <b>Image-ExifTool distribution</b> from the <a href="index.html">ExifTool home page</a>
-<br><span class=lt>(The file you download should be named "<code>Image-ExifTool-12.23.tar.gz</code>".)</span></li>
+<br><span class=lt>(The file you download should be named "<code>Image-ExifTool-12.24.tar.gz</code>".)</span></li>
 <li><b>Extract the ExifTool files</b> from the archive.
 <br><span class=lt>(The archive is a gzipped tar file, and can be opened with
 various Windows utilities, including WinZip.)</span></li>
 <li><b>Rename</b> "<code>exiftool</code>" to <b>"<code>exiftool.pl</code>"</b>
 in the exiftool distribution.</li>
@@ -149,11 +149,11 @@ full distribution includes HTML documentation and some other files not included
 in the MacOS package.  Both versions run natively on PPC and Intel Macs.</p>
 
 <h3>MacOS Package</h3>
 <ol>
 <li><b>Download</b> the <b>ExifTool MacOS Package</b> from the <a href="index.html">ExifTool home page</a>.
-<br><span class=lt>(The file you download should be named "<code>ExifTool-12.23.dmg</code>".)</span></li>
+<br><span class=lt>(The file you download should be named "<code>ExifTool-12.24.dmg</code>".)</span></li>
 <li><b>Install</b> as a normal <b>MacOS package</b>.
 <br><span class=lt>(Open the disk image, double-click on the install package, and follow the instructions.
 See the second item in the Notes section below if you are stopped with an "unidentified developer" message.)
 </span></li>
 </ol>
@@ -165,16 +165,16 @@ See the second item in the Notes section below if you are stopped with an "unide
 
 <h3>Full Perl Distribution</h3>
 <ol>
 <li><b>Download</b> the <b>Image-ExifTool distribution</b> from the <a href="index.html">ExifTool home page</a>
 to your Desktop.
-<br><span class=lt>(The file you download should be named "<code>Image-ExifTool-12.23.tar.gz</code>".)</span></li>
+<br><span class=lt>(The file you download should be named "<code>Image-ExifTool-12.24.tar.gz</code>".)</span></li>
 <li><b>Launch</b> the <b>Terminal</b> application from the Utilities folder in your Applications folder.</li>
 <li>In the Terminal window, <b>type the following</b>:
 <pre class='code'>    cd ~/Desktop
-    tar -xzf Image-ExifTool-12.23.tar.gz
-    cd Image-ExifTool-12.23
+    tar -xzf Image-ExifTool-12.24.tar.gz
+    cd Image-ExifTool-12.24
     sudo cp -r exiftool lib /usr/local/bin
 </pre>
 <span class=lt>(Note: The last step above will require you to enter your
 password.)</span></li>
 </ol>
@@ -186,11 +186,11 @@ exiftool and its lib directory in /usr/local/bin, while the standard Unix
 /usr/local/bin and the individual libraries in /Library/Perl/#.#.#, where "#.#.#" is
 your Perl version. If both sets of libraries exist, /usr/local/bin/lib takes
 precedence for exiftool, but /Library/Perl/#.#.# is the default for any other
 Perl scripts.</li>
 <li>In MacOS 10.8 or later, you may see this message when you try to open the install package:
-<blockquote class=red>"ExifTool-12.23.pkg" can't be opened because it is from an
+<blockquote class=red>"ExifTool-12.24.pkg" can't be opened because it is from an
 unidentified developer.</blockquote> The solution is to control-click on the pkg
 then select "Open" from the pop-up menu instead of just double-clicking.  An alternative
 is to lower the security settings by changing "Allow applications downloaded from" to
 "Anywhere" in the General "Security &amp; Privacy" System Preferences.
 (<a href="https://support.apple.com/en-us/HT202491">Read here</a> or
@@ -213,15 +213,15 @@ have the wrong "<code>lib</code>" folder.</li>
 <hr>
 <h2><a name="Unix">Unix Platforms</a></h2>
 
 <ol>
 <li><b>Download</b> the <b>Image-ExifTool distribution</b> from the <a href="index.html">ExifTool home page</a>
-<br><span class=lt>(The file you download should be named "<code>Image-ExifTool-12.23.tar.gz</code>".)</span></li>
+<br><span class=lt>(The file you download should be named "<code>Image-ExifTool-12.24.tar.gz</code>".)</span></li>
 <li><b>Unpack the distribution</b> and <b>make it your current directory</b> by typing:
 <pre class='code'>    cd <i>&lt;your download directory&gt;</i>
-    gzip -dc Image-ExifTool-12.23.tar.gz | tar -xf -
-    cd Image-ExifTool-12.23
+    gzip -dc Image-ExifTool-12.24.tar.gz | tar -xf -
+    cd Image-ExifTool-12.24
 </pre>
 <span class=lt>(At this point you may run exiftool by typing
 "<code>./exiftool <i>&lt;image file name&gt;</i></code>".)</span></li>
 <li><b>Test and install ExifTool</b> by typing:
 <pre class='code'>
diff --git a/lib/Image/ExifTool.pm b/lib/Image/ExifTool.pm
index 5325f10e..9f3aedfa 100644
--- a/lib/Image/ExifTool.pm
+++ b/lib/Image/ExifTool.pm
@@ -26,11 +26,11 @@ use vars qw($VERSION $RELEASE @ISA @EXPORT_OK %EXPORT_TAGS $AUTOLOAD @fileTypes
             $psAPP13hdr $psAPP13old @loadAllTables %UserDefined $evalWarning
             %noWriteFile %magicNumber @langs $defaultLang %langName %charsetName
             %mimeType $swapBytes $swapWords $currentByteOrder %unpackStd
             %jpegMarker %specialTags %fileTypeLookup $testLen $exePath);
 
-$VERSION = '12.23';
+$VERSION = '12.24';
 $RELEASE = '';
 @ISA = qw(Exporter);
 %EXPORT_TAGS = (
     # all public non-object-oriented functions:
     Public => [qw(
@@ -187,23 +187,23 @@ $defaultLang = 'en';    # default language
 @fileTypes = qw(JPEG EXV CRW DR4 TIFF GIF MRW RAF X3F JP2 PNG MIE MIFF PS PDF
                 PSD XMP BMP BPG PPM RIFF AIFF ASF MOV MPEG Real SWF PSP FLV OGG
                 FLAC APE MPC MKV MXF DV PMP IND PGF ICC ITC FLIR FLIF FPF LFP
                 HTML VRD RTF FITS XCF DSS QTIF FPX PICT ZIP GZIP PLIST RAR BZ2
                 CZI TAR  EXE EXR HDR CHM LNK WMF AVC DEX DPX RAW Font RSRC M2TS
-                MacOS PHP PCX DCX DWF DWG WTV Torrent VCard LRI R3D AA PDB MOI
-                ISO ALIAS JSON MP3 DICOM PCD TXT);
+                MacOS PHP PCX DCX DWF DWG DXF WTV Torrent VCard LRI R3D AA PDB
+                JXL MOI ISO ALIAS JSON MP3 DICOM PCD TXT);
 
 # file types that we can write (edit)
 my @writeTypes = qw(JPEG TIFF GIF CRW MRW ORF RAF RAW PNG MIE PSD XMP PPM EPS
-                    X3F PS PDF ICC VRD DR4 JP2 EXIF AI AIT IND MOV EXV FLIF);
+                    X3F PS PDF ICC VRD DR4 JP2 JXL EXIF AI AIT IND MOV EXV FLIF);
 my %writeTypes; # lookup for writable file types (hash filled if required)
 
 # file extensions that we can't write for various base types
 %noWriteFile = (
     TIFF => [ qw(3FR DCR K25 KDC SRF) ],
     XMP  => [ qw(SVG INX) ],
-    JP2  => [ qw(J2C JPC JXC) ],
+    JP2  => [ qw(J2C JPC) ],
     MOV  => [ qw(INSV) ],
 );
 
 # file types that we can create from scratch
 # - must update CanCreate() documentation if this list is changed!
@@ -290,10 +290,11 @@ my %createTypes = map { $_ => 1 } qw(XMP ICC MIE VRD DR4 EXIF EXV);
     DVB  => ['MOV',  'Digital Video Broadcasting'],
    'DVR-MS'=>['ASF', 'Microsoft Digital Video recording'],
     DWF  => ['DWF',  'Autodesk drawing (Design Web Format)'],
     DWG  => ['DWG',  'AutoCAD Drawing'],
     DYLIB=> ['EXE',  'Mach-O Dynamic Link Library'],
+    DXF  => ['DXF',  'AutoCAD Drawing Exchange Format'],
     EIP  => ['ZIP',  'Capture One Enhanced Image Package'],
     EPS  => ['EPS',  'Encapsulated PostScript Format'],
     EPS2 =>  'EPS',
     EPS3 =>  'EPS',
     EPSF =>  'EPS',
@@ -353,12 +354,11 @@ my %createTypes = map { $_ => 1 } qw(XMP ICC MIE VRD DR4 EXIF EXV);
     JPF  =>  'JP2',
     JPG =>   'JPEG',
     JPM  => ['JP2',  'JPEG 2000 compound image'],
     JPX  => ['JP2',  'JPEG 2000 with extensions'],
     JSON => ['JSON', 'JavaScript Object Notation'],
-    JXC  => ['JP2', 'JPEG XL Codestream'], # (JXC = PH invention, not a real extension)
-    JXL  => ['JP2', 'JPEG XL'],
+    JXL  => ['JXL',  'JPEG XL'],
     JXR  => ['TIFF', 'JPEG XR'],
     K25  => ['TIFF', 'Kodak DC25 RAW'],
     KDC  => ['TIFF', 'Kodak Digital Camera RAW'],
     KEY  => ['ZIP',  'Apple Keynote presentation'],
     KTH  => ['ZIP',  'Apple Keynote Theme'],
@@ -615,10 +615,11 @@ my %fileDescription = (
     DSS  => 'audio/x-dss',
     DV   => 'video/x-dv',
    'DVR-MS' => 'video/x-ms-dvr',
     DWF  => 'model/vnd.dwf',
     DWG  => 'image/vnd.dwg',
+    DXF  => 'application/dxf',
     EIP  => 'application/x-captureone', #(NC)
     EPS  => 'application/postscript',
     ERF  => 'image/x-epson-erf',
     EXE  => 'application/octet-stream',
     EXR  => 'image/x-exr',
@@ -652,11 +653,10 @@ my %fileDescription = (
     JP2  => 'image/jp2',
     JPEG => 'image/jpeg',
     JPM  => 'image/jpm',
     JPX  => 'image/jpx',
     JSON => 'application/json',
-    JXC  => 'image/x-jxc', #PH (invented)
     JXL  => 'image/jxl', #PH (NC)
     JXR  => 'image/jxr',
     K25  => 'image/x-kodak-k25',
     KDC  => 'image/x-kodak-kdc',
     KEY  => 'application/x-iwork-keynote-sffkey',
@@ -803,10 +803,11 @@ my %moduleName = (
     DCX  => 0,
     DR4  => 'CanonVRD',
     DSS  => 'Olympus',
     DWF  => 0,
     DWG  => 0,
+    DXF  => 0,
     EPS  => 'PostScript',
     EXIF => '',
     EXR  => 'OpenEXR',
     EXV  => '',
     ICC  => 'ICC_Profile',
@@ -878,10 +879,11 @@ $testLen = 1024;    # number of bytes to read when testing for magic number
     DR4  => 'IIII\x04\0\x04\0',
     DSS  => '(\x02dss|\x03ds2)',
     DV   => '\x1f\x07\0[\x3f\xbf]', # (not tested if extension recognized)
     DWF  => '\(DWF V\d',
     DWG  => 'AC10\d{2}\0',
+    DXF  => '\s*0\s+\0?\s*SECTION\s+2\s+HEADER',
     EPS  => '(%!PS|%!Ad|\xc5\xd0\xd3\xc6)',
     EXE  => '(MZ|\xca\xfe\xba\xbe|\xfe\xed\xfa[\xce\xcf]|[\xce\xcf]\xfa\xed\xfe|Joy!peff|\x7fELF|#!\s*/\S*bin/|!<arch>\x0a)',
     EXIF => '(II\x2a\0|MM\0\x2a)',
     EXR  => '\x76\x2f\x31\x01',
     EXV  => '\xff\x01Exiv2',
@@ -900,13 +902,14 @@ $testLen = 1024;    # number of bytes to read when testing for magic number
     HTML => '(\xef\xbb\xbf)?\s*(?i)<(!DOCTYPE\s+HTML|HTML|\?xml)', # (case insensitive)
     ICC  => '.{12}(scnr|mntr|prtr|link|spac|abst|nmcl|nkpf)(XYZ |Lab |Luv |YCbr|Yxy |RGB |GRAY|HSV |HLS |CMYK|CMY |[2-9A-F]CLR){2}',
     IND  => '\x06\x06\xed\xf5\xd8\x1d\x46\xe5\xbd\x31\xef\xe7\xfe\x74\xb7\x1d',
   # ISO  =>  signature is at byte 32768
     ITC  => '.{4}itch',
-    JP2  => '(\0\0\0\x0cjP(  |\x1a\x1a)\x0d\x0a\x87\x0a|\xff\x4f\xff\x51\0|\xff\x0a|\0\0\0\x0cJXL \x0d\x0a......ftypjxl )',
+    JP2  => '(\0\0\0\x0cjP(  |\x1a\x1a)\x0d\x0a\x87\x0a|\xff\x4f\xff\x51\0)',
     JPEG => '\xff\xd8\xff',
     JSON => '(\xef\xbb\xbf)?\s*(\[\s*)?\{\s*"[^"]*"\s*:',
+    JXL  => '\xff\x0a|\0\0\0\x0cJXL \x0d\x0a......ftypjxl ',
     LFP  => '\x89LFP\x0d\x0a\x1a\x0a',
     LNK  => '.{4}\x01\x14\x02\0{5}\xc0\0{6}\x46',
     LRI  => 'LELR \0',
     M2TS => '(....)?\x47',
     MIE  => '~[\x10\x18]\x04.0MIE',
diff --git a/lib/Image/ExifTool.pod b/lib/Image/ExifTool.pod
index 25e27205..ebf3d071 100644
--- a/lib/Image/ExifTool.pod
+++ b/lib/Image/ExifTool.pod
@@ -439,13 +439,14 @@ large binary data blocks (eg. ThumbnailImage) are not necessarily extracted
 unless this option is set or the tag is specifically requested by name.
 Default is undef.
 
 =item BlockExtract
 
-Flag to extract some directories (mentioned in the Tag Name documentation)
-as a block.  Setting this to a value of 2 also prevents parsing the block to
-extract tags contained within.
+Flag to extract some directories (mentioned in the
+L<ExifTool tag name documentation|Image::ExifTool::TagNames>) as a block. 
+Setting this to a value of 2 also prevents parsing the block to extract tags
+contained within.
 
 =item ByteOrder
 
 The byte order for newly created EXIF segments when writing.  Note that if
 EXIF information already exists, the existing order is maintained.  Valid
diff --git a/lib/Image/ExifTool/DjVu.pm b/lib/Image/ExifTool/DjVu.pm
index c284d104..03b3f9f0 100644
--- a/lib/Image/ExifTool/DjVu.pm
+++ b/lib/Image/ExifTool/DjVu.pm
@@ -16,11 +16,11 @@ package Image::ExifTool::DjVu;
 
 use strict;
 use vars qw($VERSION);
 use Image::ExifTool qw(:DataAccess :Utils);
 
-$VERSION = '1.06';
+$VERSION = '1.07';
 
 sub ParseAnt($);
 sub ProcessAnt($$$);
 sub ProcessMeta($$$);
 sub ProcessBZZ($$$);
@@ -225,14 +225,15 @@ Tok: for (;;) {
                 $tok .= substr($$dataPt, $pos, pos($$dataPt)-1-$pos);
                 # we're good unless quote was escaped by odd number of backslashes
                 last unless $tok =~ /(\\+)$/ and length($1) & 0x01;
                 $tok .= '"';    # quote is part of the string
             }
-            # must protect unescaped "$" and "@" symbols, and "\" at end of string
-            $tok =~ s{\\(.)|([\$\@]|\\$)}{'\\'.($2 || $1)}sge;
-            # convert C escape sequences (allowed in quoted text)
-            $tok = eval qq{"$tok"};
+            # convert C escape sequences, allowed in quoted text
+            # (note: this only converts a few of them!)
+            my %esc = ( a => "\a", b => "\b", f => "\f", n => "\n",
+                        r => "\r", t => "\t", '"' => '"', '\\' => '\\' );
+            $tok =~ s/\\(.)/$esc{$1}||'\\'.$1/egs;
         } else {                # key name
             pos($$dataPt) = pos($$dataPt) - 1;
             # allow anything in key but whitespace, braces and double quotes
             # (this is one of those assumptions I mentioned)
             $tok = $$dataPt =~ /([^\s()"]+)/sg ? $1 : undef;
diff --git a/lib/Image/ExifTool/FujiFilm.pm b/lib/Image/ExifTool/FujiFilm.pm
index baf488bd..d21b2108 100644
--- a/lib/Image/ExifTool/FujiFilm.pm
+++ b/lib/Image/ExifTool/FujiFilm.pm
@@ -29,11 +29,11 @@ package Image::ExifTool::FujiFilm;
 use strict;
 use vars qw($VERSION);
 use Image::ExifTool qw(:DataAccess :Utils);
 use Image::ExifTool::Exif;
 
-$VERSION = '1.79';
+$VERSION = '1.80';
 
 sub ProcessFujiDir($$$);
 sub ProcessFaceRec($$$);
 
 # the following RAF version numbers have been tested for writing:
@@ -505,20 +505,23 @@ my %faceCategories = (
         Writable => 'int16u',
         PrintConv => {
             0 => 'Off',
             1 => 'On',
             2 => 'No flash & flash', #3
+            6 => 'Pixel Shift', #IB (GFX100S)
         },
     }],
     0x1101 => {
         Name => 'SequenceNumber',
         Writable => 'int16u',
     },
     0x1103 => {
         Name => 'DriveSettings',
         SubDirectory => { TagTable => 'Image::ExifTool::FujiFilm::DriveSettings' },
     },
+    0x1105 => { Name => 'PixelShiftShots',  Writable => 'int16u' }, #IB
+    0x1106 => { Name => 'PixelShiftOffset', Writable => 'rational64s', Count => 2 }, #IB
     # (0x1150-0x1152 exist only for Pro Low-light and Pro Focus PictureModes)
     # 0x1150 - Pro Low-light - val=1; Pro Focus - val=2 (ref 7); HDR - val=128 (forum10799)
     # 0x1151 - Pro Low-light - val=4 (number of pictures taken?); Pro Focus - val=2,3 (ref 7); HDR - val=3 (forum10799)
     # 0x1152 - Pro Low-light - val=1,3,4 (stacked pictures used?); Pro Focus - val=1,2 (ref 7); HDR - val=3 (forum10799)
     0x1153 => { #forum7668
@@ -913,36 +916,43 @@ my %faceCategories = (
     GROUPS => { 0 => 'MakerNotes', 2 => 'Camera' },
     FORMAT => 'int32u',
     WRITABLE => 1,
     0.1 => {
         Name => 'FocusMode2',
-        Mask => 0x000000ff,
+        Mask => 0x0000000f,
         PrintConv => {
-            0x00 => 'AF-M',
-            0x01 => 'AF-S',
-            0x02 => 'AF-C',
-            0x11 => 'AF-S (Auto)',
+            0x0 => 'AF-M',
+            0x1 => 'AF-S',
+            0x2 => 'AF-C',
         },
     },
     0.2 => {
+        Name => 'PreAF',
+        Mask => 0x00f0,
+        PrintConv => {
+            0 => 'Off',
+            1 => 'On',
+        },
+    },
+    0.3 => {
         Name => 'AFAreaMode',
         Mask => 0x0f00,
         PrintConv => {
             0 => 'Single Point',
             1 => 'Zone',
             2 => 'Wide/Tracking',
         },
     },
-    0.3 => {
+    0.4 => {
         Name => 'AFAreaPointSize',
         Mask => 0xf000,
         PrintConv => {
             0 => 'n/a',
             OTHER => sub { return $_[0] },
         },
     },
-    0.4 => {
+    0.5 => {
         Name => 'AFAreaZoneSize',
         Mask => 0xf0000,
         PrintConv => {
             0 => 'n/a',
             OTHER => sub {
diff --git a/lib/Image/ExifTool/Jpeg2000.pm b/lib/Image/ExifTool/Jpeg2000.pm
index fc38cab0..ba141244 100644
--- a/lib/Image/ExifTool/Jpeg2000.pm
+++ b/lib/Image/ExifTool/Jpeg2000.pm
@@ -605,12 +605,12 @@ my %jumbfTypes = (
 # JUMBF description box
 %Image::ExifTool::Jpeg2000::JUMD = (
     PROCESS_PROC => \&ProcessJUMD,
     GROUPS => { 0 => 'JUMBF', 1 => 'JUMBF', 2 => 'Image' },
     NOTES => 'Information extracted from the JUMBF description box.',
-    type => {
-        Name => 'JUMBFType',
+    'jumd-type' => {
+        Name => 'JUMDType',
         ValueConv => 'unpack "H*", $val',
         PrintConv => q{
             my @a = $val =~ /^(\w{8})(\w{4})(\w{4})(\w{16})$/;
             return $val unless @a;
             my $ascii = pack 'H*', $a[0];
@@ -619,13 +619,22 @@ my %jumbfTypes = (
         },
         # seen:
         # cacb/cast/caas/cacl/casg/json-00110010800000aa00389b71
         # 6579d6fbdba2446bb2ac1b82feeb89d1 - JPEG image
     },
-    label      => { Name => 'JUMBFLabel' },
-    id         => { Name => 'JUMBFID', Description => 'JUMBF ID' },
-    signature  => { Name => 'JUMBFSignature', PrintConv => 'unpack "H*", $val' },
+    'jumd-label' => { Name => 'JUMDLabel' },
+    'jumd-flags' => {
+        Name => 'JUMDFlags',
+        PrintConv => { BITMASK => {
+            0 => 'Requestable',
+            1 => 'Label',
+            2 => 'ID',
+            3 => 'Signature',
+        }},
+    },
+    'jumd-id'    => { Name => 'JUMDID', Description => 'JUMD ID' },
+    'jumd-sig'   => { Name => 'JUMDSignature', PrintConv => 'unpack "H*", $val' },
 );
 
 #------------------------------------------------------------------------------
 # Read JUMBF box to keep track of sub-document numbers
 # Inputs: 0) ExifTool ref, 1) dirInfo ref, 2) tag table ref
@@ -664,19 +673,20 @@ sub ProcessJUMD($$$)
     my $end    = $pos + $$dirInfo{DirLen};
     $et->VerboseDir('JUMD', 0, $end-$pos);
     delete $$et{JUMBFLabel};
     $$dirInfo{DirLen} < 17 and $et->Warn('Truncated JUMD directory'), return 0;
     my $type = substr($$dataPt, $pos, 4);
-    $et->HandleTag($tagTablePtr, 'type', substr($$dataPt, $pos, 16));
+    $et->HandleTag($tagTablePtr, 'jumd-type', substr($$dataPt, $pos, 16));
     $pos += 16;
     my $flags = Get8u($dataPt, $pos++);
+    $et->HandleTag($tagTablePtr, 'jumd-flags', $flags);
     if ($flags & 0x02) {    # label exists?
         pos($$dataPt) = $pos;
         $$dataPt =~ /\0/g or $et->Warn('Missing JUMD label terminator'), return 0;
         my $len = pos($$dataPt) - $pos;
         my $name = substr($$dataPt, $pos, $len);
-        $et->HandleTag($tagTablePtr, 'label', $name);
+        $et->HandleTag($tagTablePtr, 'jumd-label', $name);
         $pos += $len;
         if ($len) {
             $name =~ s/[^-_a-zA-Z0-9]([a-z])/\U$1/g; # capitalize characters after illegal characters
             $name =~ tr/-_a-zA-Z0-9//dc;    # remove other illegal characters
             $name = ucfirst $name;          # capitalize first letter
@@ -684,16 +694,16 @@ sub ProcessJUMD($$$)
             $$et{JUMBFLabel} = $name;
         }
     }
     if ($flags & 0x04) {    # ID exists?
         $pos + 4 > $end and $et->Warn('Missing JUMD ID'), return 0;
-        $et->HandleTag($tagTablePtr, 'id', Get32u($dataPt, $pos));
+        $et->HandleTag($tagTablePtr, 'jumd-id', Get32u($dataPt, $pos));
         $pos += 4;
     }
     if ($flags & 0x08) {    # signature exists?
         $pos + 32 > $end and $et->Warn('Missing JUMD signature'), return 0;
-        $et->HandleTag($tagTablePtr, 'signature', substr($$dataPt, $pos, 32));
+        $et->HandleTag($tagTablePtr, 'jumd-sig', substr($$dataPt, $pos, 32));
         $pos += 32;
     }
     $pos == $end or $et->Warn('Extra data in JUMD box'." $pos $end", 1);
     return 1;
 }
@@ -1041,10 +1051,11 @@ sub GetBits($$)
 }
 
 #------------------------------------------------------------------------------
 # Extract parameters from JPEG XL codestream [unverified!]
 # Inputs: 0) ExifTool ref, 1) codestream ref
+# Returns: 1
 sub ProcessJXLCodestream($$)
 {
     my ($et, $dataPt) = @_;
     # add padding if necessary to avoid unpacking past end of data
     if (length $$dataPt < 14) {
@@ -1074,10 +1085,11 @@ sub ProcessJXLCodestream($$)
         my $r = [[1,1],[12,10],[4,3],[3,2],[16,9],[5,4],[2,1]]->[$ratio-1];
         $x = int($y * $$r[0] / $$r[1]);
     }
     $et->FoundTag(ImageWidth => $x);
     $et->FoundTag(ImageHeight => $y);
+    return 1;
 }
 
 #------------------------------------------------------------------------------
 # Read/write meta information from a JPEG 2000 image
 # Inputs: 0) ExifTool object reference, 1) dirInfo reference
@@ -1092,20 +1104,12 @@ sub ProcessJP2($$)
 
     # check to be sure this is a valid JPG2000 file
     return 0 unless $raf->Read($hdr,12) == 12;
     unless ($hdr eq "\0\0\0\x0cjP  \x0d\x0a\x87\x0a" or     # (ref 1)
             $hdr eq "\0\0\0\x0cjP\x1a\x1a\x0d\x0a\x87\x0a" or # (ref 2)
-            ($hdr eq "\0\0\0\x0cJXL \x0d\x0a\x87\x0a" and $$et{IsJXL} = 1)) # (JPEG XL)
+            $$et{IsJXL})
     {
-        if ($hdr =~ /^\xff\x0a/) {
-            $outfile and $et->Error('Writing of JPEG XL codestream files is not yet supported'), return 0;
-            # JPEG XL codestream
-            $et->SetFileType('JXC',undef,'JXL'); # (PH invention)
-            $et->Warn('JPEG XL codestream support is currently experimental',1);
-            ProcessJXLCodestream($et, \$hdr);
-            return 1;
-        }
         return 0 unless $hdr =~ /^\xff\x4f\xff\x51\0/;  # check for JP2 codestream format
         if ($outfile) {
             $et->Error('Writing of J2C files is not yet supported');
             return 0
         }
@@ -1115,11 +1119,10 @@ sub ProcessJP2($$)
         }
         $et->SetFileType('J2C');
         $raf->Seek(0,0);
         return $et->ProcessJPEG($dirInfo);    # decode with JPEG processor
     }
-    $et->Warn('JPEG XL support is currently experimental',1) if $$et{IsJXL};
     if ($outfile) {
         Write($outfile, $hdr) or return -1;
         if ($$et{IsJXL}) {
             $et->InitWriteDirs(\%jxlMap);
             $$et{AddJp2Tags} = { }; # (don't add JP2 tags in JXL files)
@@ -1152,15 +1155,60 @@ sub ProcessJP2($$)
 }
 
 #------------------------------------------------------------------------------
 # Read meta information from a JPEG XL image
 # Inputs: 0) ExifTool object reference, 1) dirInfo reference
-# Returns: 1 on success, 0 if this wasn't a valid JPEG XL file
+# Returns: 1 on success, 0 if this wasn't a valid JPEG XL file, -1 on write error
 sub ProcessJXL($$)
 {
     my ($et, $dirInfo) = @_;
-    return ProcessJP2($et, $dirInfo);
+    my $raf = $$dirInfo{RAF};
+    my $outfile = $$dirInfo{OutFile};
+    my ($hdr, $buff);
+
+    return 0 unless $raf->Read($hdr,12) == 12;
+    if ($hdr eq "\0\0\0\x0cJXL \x0d\x0a\x87\x0a") {
+        # JPEG XL in ISO BMFF container
+        $$et{IsJXL} = 1;
+    } elsif ($hdr =~ /^\xff\x0a/) {
+        # JPEG XL codestream
+        if ($outfile) {
+            if ($$et{OPTIONS}{IgnoreMinorErrors}) {
+                $et->Warn('Wrapped JXL codestream in ISO BMFF container');
+            } else {
+                $et->Error('Will wrap JXL codestream in ISO BMFF container for writing',1);
+                return 0;
+            }
+            $$et{IsJXL} = 2;
+            my $buff = "\0\0\0\x0cJXL \x0d\x0a\x87\x0a\0\0\0\x14ftypjxl \0\0\0\0jxl ";
+            # add metadata to empty ISO BMFF container
+            $$dirInfo{RAF} = new File::RandomAccess(\$buff);
+        } else {
+            $et->Warn('JPEG XL codestream support is currently experimental',1);
+            $et->SetFileType('JXL Codestream','image/jxl', 'jxl');
+            return ProcessJXLCodestream($et, \$hdr);
+        }
+    } else {
+        return 0;
+    }
+    $raf->Seek(0,0) or $et->Error('Seek error'), return 0;
+    $et->Warn('JPEG XL support is currently experimental',1);
+
+    my $success = ProcessJP2($et, $dirInfo);
+
+    if ($outfile and $success > 0 and $$et{IsJXL} == 2) {
+        # attach the JXL codestream box to the ISO BMFF file
+        $raf->Seek(0,2) or return -1;
+        my $size = $raf->Tell();
+        $raf->Seek(0,0) or return -1;
+        SetByteOrder('MM');
+        Write($outfile, Set32u($size + 8), 'jxlc') or return -1;
+        while ($raf->Read($buff, 65536)) {
+            Write($outfile, $buff) or return -1;
+        }
+    }
+    return $success;
 }
 
 1;  # end
 
 __END__
diff --git a/lib/Image/ExifTool/MacOS.pm b/lib/Image/ExifTool/MacOS.pm
index dc2f2e3c..c28584b8 100644
--- a/lib/Image/ExifTool/MacOS.pm
+++ b/lib/Image/ExifTool/MacOS.pm
@@ -243,11 +243,11 @@ my %mdDateInfo = (
     VARS => { NO_ID => 1 }, # (id's are too long)
     NOTES => q{
         XAttr tags are extracted using the "xattr" utility.  They are extracted if
         any "XAttr*" tag or the MacOS group is specifically requested, or by setting
         the L<XAttrTags|../ExifTool.html#XAttrTags> API option to 1 or the L<RequestAll|../ExifTool.html#RequestAll> API option to 2 or higher.
-        And they extracted by default from MacOS "._" files when reading
+        And they are extracted by default from MacOS "._" files when reading
         these files directly.
     },
     'com.apple.FinderInfo' => {
         Name => 'XAttrFinderInfo',
         ConvertBinary => 1,
diff --git a/lib/Image/ExifTool/Microsoft.pm b/lib/Image/ExifTool/Microsoft.pm
index cb1fba06..5de05129 100644
--- a/lib/Image/ExifTool/Microsoft.pm
+++ b/lib/Image/ExifTool/Microsoft.pm
@@ -887,16 +887,18 @@ sub WriteXtraValue($$$)
                 $type = 19;
             }
         } elsif ($format eq 'date') {
             $dat = Image::ExifTool::GetUnixTime($val, 1);   # (convert to UTC, NC)
             if ($dat) {
+                # 100ns intervals since Jan 1, 1601
                 $dat = Set64u(($dat + 11644473600) * 1e7);
                 $type = 21;
             }
-        } elsif ($format eq 'vt_filetime') {
+        } elsif ($format eq 'vt_filetime') { # 'date' value inside a VT_VARIANT
             $dat = Image::ExifTool::GetUnixTime($val);  # (leave as local time, NC)
             if ($dat) {
+                # 100ns intervals since Jan 1, 1601
                 $dat = Set32u(64) . Set64u(($dat + 11644473600) * 1e7);
                 $type = 65;
             }
         } elsif ($format eq 'GUID') {
             ($dat = $val) =~ tr/-//d;
diff --git a/lib/Image/ExifTool/Panasonic.pm b/lib/Image/ExifTool/Panasonic.pm
index 54554a40..6ad8619b 100644
--- a/lib/Image/ExifTool/Panasonic.pm
+++ b/lib/Image/ExifTool/Panasonic.pm
@@ -2116,10 +2116,11 @@ my %shootingMode = (
     # 0x340 - ImageUniqueID
     0x34c => { #23
         Name => 'UserProfile',
         Writable => 'string',
     },
+    # 0x357 int32u - 0=DNG, 3162=JPG (ref 23)
     0x359 => { #23
         Name => 'ISOSelected',
         Writable => 'int32s',
         PrintConv => {
             0 => 'Auto',
@@ -2132,11 +2133,23 @@ my %shootingMode = (
         ValueConv => '$val / 1000',
         ValueConvInv => '$val * 1000',
         PrintConv => 'sprintf("%.1f", $val)',
         PrintConvInv => '$val',
     },
-    # 0x357 int32u - 0=DNG, 3162=JPG (ref 23)
+    0x035b => { #IB
+        Name => 'CorrelatedColorTemp', # (in Kelvin)
+        Writable => 'int16u',
+    },
+    0x035c => { #IB
+        Name => 'ColorTint', # (same units as Adobe is using)
+        Writable => 'int16s',
+    },
+    0x035d => { #IB
+        Name => 'WhitePoint', # (x/y)
+        Writable => 'rational64u',
+        Count => 2,
+    },
 );
 
 # Type 2 tags (ref PH)
 %Image::ExifTool::Panasonic::Type2 = (
     PROCESS_PROC => \&Image::ExifTool::ProcessBinaryData,
diff --git a/lib/Image/ExifTool/PhaseOne.pm b/lib/Image/ExifTool/PhaseOne.pm
index c95831ac..29a07869 100644
--- a/lib/Image/ExifTool/PhaseOne.pm
+++ b/lib/Image/ExifTool/PhaseOne.pm
@@ -13,11 +13,11 @@ package Image::ExifTool::PhaseOne;
 use strict;
 use vars qw($VERSION);
 use Image::ExifTool qw(:DataAccess :Utils);
 use Image::ExifTool::Exif;
 
-$VERSION = '1.06';
+$VERSION = '1.07';
 
 sub WritePhaseOne($$$);
 sub ProcessPhaseOne($$$);
 
 # default formats based on PhaseOne format size
@@ -71,14 +71,15 @@ my @formatName = ( undef, 'string', 'int16s', undef, 'int32s' );
         # >2 = compressed
         # 5 = non-linear
         PrintConv => { #PH
             1 => 'RAW 1', #? (encrypted)
             2 => 'RAW 2', #? (encrypted)
-            3 => 'IIQ L',
+            3 => 'IIQ L', # (now "L14", ref IB)
             # 4?
             5 => 'IIQ S',
-            6 => 'IIQ Sv2',
+            6 => 'IIQ Sv2', # (now "S14" for "IIQ 14 Smart" and "IIQ 14 Sensor+", ref IB)
+            8 => 'IIQ L16', #IB ("IIQ 16 Extended" and "IIQ 16 Large")
         },
     },
     0x010f => {
         Name => 'RawData',
         Format => 'undef', # (actually 2-byte integers, but don't convert)
diff --git a/lib/Image/ExifTool/Sony.pm b/lib/Image/ExifTool/Sony.pm
index 28a7f25a..0962b88c 100644
--- a/lib/Image/ExifTool/Sony.pm
+++ b/lib/Image/ExifTool/Sony.pm
@@ -32,11 +32,11 @@ use strict;
 use vars qw($VERSION %sonyLensTypes %sonyLensTypes2);
 use Image::ExifTool qw(:DataAccess :Utils);
 use Image::ExifTool::Exif;
 use Image::ExifTool::Minolta;
 
-$VERSION = '3.39';
+$VERSION = '3.40';
 
 sub ProcessSRF($$$);
 sub ProcessSR2($$$);
 sub ProcessSonyPIC($$$);
 sub ProcessMoreInfo($$$);
@@ -631,13 +631,14 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
             1 => 'Super Fine',
             2 => 'Fine',
             3 => 'Standard',
             4 => 'Economy',
             5 => 'Extra Fine',
-            6 => 'RAW + JPEG',
+            6 => 'RAW + JPEG/HEIF',
             7 => 'Compressed RAW',
             8 => 'Compressed RAW + JPEG',
+            9 => 'Light', #JR
             0xffffffff => 'n/a', #PH (SLT-A57 panorama)
         },
     },
     0x0104 => { #5/JD
         Name => 'FlashExposureComp',
@@ -1177,11 +1178,11 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
         # Selected AF Zone for NEX/ILCE/ILCA when AFAreaMode = 'Zone',
         #      but also with Expanded Flexible Spot for ILCE-7RM2/7SM2/9 ...
         # doesn't seem to apply to DSC models (always 0)
         Name => 'AFPointSelected',
         Condition => q{
-            ($$self{Model} =~ /^(SLT-|HV)/) or ($$self{Model} =~ /^ILCE-/ and
+            ($$self{Model} =~ /^(SLT-|HV)/) or ($$self{Model} =~ /^(ILCE-|ILME-)/ and
             defined $$self{AFAreaILCE} and  $$self{AFAreaILCE} == 4)
         },
         Notes => 'SLT models or ILCE with LA-EA2/EA4',
         Writable => 'int8u',
         PrintConvColumns => 2,
@@ -1460,17 +1461,19 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
         Name => 'Quality',
         Writable => 'int16u',
         Count => 2,
         PrintConv => {
             '0 0' => 'n/a',
-            '0 1' => 'Standard JPEG',
-            '0 2' => 'Fine JPEG',
-            '0 3' => 'Extra Fine JPEG',
+            '0 1' => 'Standard',
+            '0 2' => 'Fine',
+            '0 3' => 'Extra Fine',
+            '0 4' => 'Light', #JR
             '1 0' => 'RAW',
-            '1 1' => 'RAW + Standard JPEG',
-            '1 2' => 'RAW + Fine JPEG',
-            '1 3' => 'RAW + Extra Fine JPEG',
+            '1 1' => 'RAW + Standard',
+            '1 2' => 'RAW + Fine',
+            '1 3' => 'RAW + Extra Fine',
+            '1 4' => 'RAW + Light', #JR
         },
     },
     0x202f => { #JR (ILCE-7RM3)
         Name => 'PixelShiftInfo',
         Writable => 'undef',
@@ -1512,17 +1515,60 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
         ValueConv => '$val=~s/(\d{2})(\d{2})(\d{2})(\d{2})/$4$3$2$1/; $val=~s/^0//; $val',
         ValueConvInv => '$val="0$val" if length($val)==7; $val=~s/(\d{2})(\d{2})(\d{2})(\d{2})/$4$3$2$1/; $val',
         PrintConv => 'sprintf("%.8d",$val)',
         PrintConvInv => '$val',
     },
-# 0x2032 - first seen for ILCE-7SM3, July 2020
-# 0x2033 - first seen for ILCE-7SM3, July 2020
-# 0x2034 - first seen for ILCE-7SM3, July 2020
-# 0x2035 - first seen for ILCE-7SM3, July 2020
-# 0x2036 - first seen for ILCE-7SM3, July 2020
-# 0x2037 - first seen for ILCE-7SM3, July 2020
-# 0x2039 - first seen for ILCE-7SM3, July 2020
+# 0x2032 - 0x2039: from July 2020 for ILCE-7SM3, ILCE-1, ILME-FX3 and newer
+    0x2032 => {
+        Name => 'Shadows',
+        Writable => 'int32s',
+        PrintConv => '$val > 0 ? "+$val" : $val',
+        PrintConvInv => '$val',
+    },
+    0x2033 => {
+        Name => 'Highlights',
+        Writable => 'int32s',
+        PrintConv => '$val > 0 ? "+$val" : $val',
+        PrintConvInv => '$val',
+    },
+    0x2034 => {
+        Name => 'Fade',
+        Writable => 'int32s',
+        PrintConv => '$val > 0 ? "+$val" : $val',
+        PrintConvInv => '$val',
+    },
+    0x2035 => {
+        Name => 'SharpnessRange',
+        Writable => 'int32s',
+        PrintConv => '$val > 0 ? "+$val" : $val',
+        PrintConvInv => '$val',
+    },
+    0x2036 => {
+        Name => 'Clarity',
+        Writable => 'int32s',
+        PrintConv => '$val > 0 ? "+$val" : $val',
+        PrintConvInv => '$val',
+    },
+    0x2037 => {
+        Name => 'FocusFrameSize',
+        Format => 'int16u',
+        Count => '3',
+        PrintConv => q{
+            my @a = split ' ', $val;
+            return $a[2] ? sprintf('%3dx%3d', $a[0], $a[1]) : 'n/a';
+        },
+        PrintConvInv => '$val =~ /(\d+)x(\d+)/ ? "$1 $2 257" : "0 0 0"',
+    },
+    0x2039 => { #JR
+        Name => 'JPEG-HEIFSwitch', # (name used in camera menus)
+        Writable => 'int16u',
+        PrintConv => {
+            0 => 'JPEG',
+            1 => 'HEIF',
+            65535 => 'n/a',
+        },
+    },
     0x3000 => {
         Name => 'ShotInfo',
         SubDirectory => { TagTable => 'Image::ExifTool::Sony::ShotInfo' },
     },
     # 0x3000: data block that includes DateTimeOriginal string
@@ -1581,11 +1627,11 @@ my %hidUnk = ( Hidden => 1, Unknown => 1 );
     # 0xd0 (e) H90, W650, W690: tag9400 decoding appears not valid/different
     # 0x23 (e) for DSC-RX10/HX60V/HX350/HX400V/WX220/WX350, ILCE-7/7R/5000/6000, ILCA-68/77M2
     # 0x24 (e) for ILCA-99M2,ILCE-5100/6300/6500/7M2/7RM2/7S/7SM2/QX1, DSC-HX80/HX90V/QX30/RX0/RX100M3/RX100M4/RX100M5/RX10M2/RX10M3/RX1RM2/WX500
     # 0x26 (e) for ILCE-6100/6400/6600/7M3/7RM3/9, DSC-RX0M2/RX10M4/RX100M5A/RX100M6/HX99
     # 0x28 (e) for ILCE-7RM4/9M2, DSC-RX100M7, ZV-1
-    # 0x31 (e) for ILCE-1, 7SM3
+    # 0x31 (e) for ILCE-1/7SM3, ILME-FX3
     # first byte decoded: 40, 204, 202, 27, 58, 62, 48, 215, 28, 106 respectively
     {
         Name => 'Tag9400a',
         Condition => q{
             $$valPt =~ /^[\x07\x09\x0a]/ or
@@ -6078,10 +6124,13 @@ my %pictureProfile2010 = (
         28 => 'Gamma S-Log2 (PP7)',
         29 => 'Gamma ITU709 (800%)',
         31 => 'Gamma S-Log3 (PP8 or PP9)', #14
         33 => 'Gamma HLG2 (PP10)', #14
         34 => 'Gamma HLG3', #IB
+        37 => 'FL',
+        39 => 'IN',
+        40 => 'SH',
     },
 );
 my %isoSetting2010 = (
      0 => 'Auto',
      5 => 25,
@@ -7799,11 +7848,11 @@ my %isoSetting2010 = (
     PROCESS_PROC => \&ProcessEnciphered,
     WRITE_PROC => \&WriteEnciphered,
     CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
     FORMAT => 'int8u',
     NOTES => q{
-        Valid from July 2020 for ILCE-1/7SM3.
+        Valid from July 2020 for ILCE-1/7SM3, ILME-FX3.
     },
     WRITABLE => 1,
     FIRST_ENTRY => 0,
     GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
     DATAMEMBER => [ 0x0039 ],
@@ -7886,10 +7935,17 @@ my %isoSetting2010 = (
         Name => 'ReleaseMode2',
         %releaseMode2,
     },
     0x0088 => {
         Name => 'InternalSerialNumber', #(NC)
+        Condition => '$$self{Model} =~ /^(ILCE-7SM3|ILME-FX3)/',
+        Format => 'int8u[6]',
+        PrintConv => 'unpack "H*", pack "C*", split " ", $val',
+    },
+    0x008a => {
+        Name => 'InternalSerialNumber', #(NC)
+        Condition => '$$self{Model} =~ /^(ILCE-1)/',
         Format => 'int8u[6]',
         PrintConv => 'unpack "H*", pack "C*", split " ", $val',
     },
 );
 
@@ -8115,20 +8171,30 @@ my %isoSetting2010 = (
             3 => 'Rotate 180',
             6 => 'Rotate 90 CW',
             8 => 'Rotate 270 CW',
         },
     },
-    0x002a => {
+    0x002a => [{
         Name => 'Quality2',
         Condition => '$$self{Model} !~ /^(ILCE-(1|7SM3)|ILME-FX3)\b/',
         PrintConv => {
             0 => 'JPEG',
             1 => 'RAW',
             2 => 'RAW + JPEG',
             3 => 'JPEG + MPO', # 3D images
         },
-    },
+    },{
+        Name => 'Quality2',
+        Condition => '$$self{Model} =~ /^(ILCE-(1|7SM3)|ILME-FX3)\b/',
+        PrintConv => {
+            1 => 'JPEG',
+            2 => 'RAW',
+            3 => 'RAW + JPEG',
+            4 => 'HEIF',
+            6 => 'RAW + HEIF',
+        },
+    }],
     0x0047 => {
         Name => 'SonyImageHeight',
         Condition => '$$self{Model} !~ /^(ILCE-(1|7SM3)|ILME-FX3)\b/',
         Format => 'int16u',
         PrintConv => '$val > 0 ? 8*$val : "n.a."',
@@ -8793,11 +8859,11 @@ my %isoSetting2010 = (
     FORMAT => 'int8u',
     WRITABLE => 1,
     FIRST_ENTRY => 0,
     GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
     DATAMEMBER => [ 0x0008 ],
-    NOTES => 'NEX and ILCE models only.',
+    NOTES => 'E-mount cameras only.',
 
     # 0x0001 - 0 for all NEX and ILCE-3000/3500, 20 for all other ILCE (17 for ILCE samples from Sony.net)
     # 0x0008 - LensMount, but different values from Tag9405-0x0105 and Tag9050-0x0604.
     # don't know what difference is between values '1' and '5' ...
     0x0008 => {
@@ -9420,11 +9486,11 @@ my %isoSetting2010 = (
 %Image::ExifTool::Sony::Tag9416 = (
     PROCESS_PROC => \&ProcessEnciphered,
     WRITE_PROC => \&WriteEnciphered,
     CHECK_PROC => \&Image::ExifTool::CheckBinaryData,
     FORMAT => 'int8u',
-    NOTES => 'Valid for the ILCE-1/7SM3.',
+    NOTES => 'Valid for the ILCE-1/7SM3, ILME-FX3.',
     FIRST_ENTRY => 0,
     GROUPS => { 0 => 'MakerNotes', 2 => 'Image' },
     0x0000 => { Name => 'Tag9416_0000', PrintConv => 'sprintf("%3d",$val)', RawConv => '$$self{TagVersion} = $val' },
     0x0004 => {
         Name => 'SonyISO',
diff --git a/lib/Image/ExifTool/TagLookup.pm b/lib/Image/ExifTool/TagLookup.pm
index fa7f2be5..767d349d 100644
--- a/lib/Image/ExifTool/TagLookup.pm
+++ b/lib/Image/ExifTool/TagLookup.pm
@@ -629,22 +629,22 @@ my %tagLookup = (
 	'afadjustment' => { 346 => 0x72, 355 => 0x267 },
 	'afandmeteringbuttons' => { 82 => 0x701 },
 	'afaperture' => { 215 => 0x5, 216 => 0x5, 220 => 0x5 },
 	'afareaheight' => { 190 => [0x1a,0x34,0x50] },
 	'afareaillumination' => { 181 => 0x4b, 282 => '15.3' },
-	'afareamode' => { 124 => '0.2', 177 => 0x33, 181 => 0xe, 189 => 0x0, 190 => 0x5, 311 => 0xf, 378 => 0x1205, 391 => [0xa,0x3a], 398 => 0x11, 399 => 0x10, 400 => 0x24, 411 => 0xb043, 435 => 0x17 },
+	'afareamode' => { 124 => '0.3', 177 => 0x33, 181 => 0xe, 189 => 0x0, 190 => 0x5, 311 => 0xf, 378 => 0x1205, 391 => [0xa,0x3a], 398 => 0x11, 399 => 0x10, 400 => 0x24, 411 => 0xb043, 435 => 0x17 },
 	'afareamodesetting' => { 273 => '11.1', 276 => '0.1', 282 => '16.1', 286 => '2.1', 411 => 0x201c },
-	'afareapointsize' => { 124 => '0.3' },
+	'afareapointsize' => { 124 => '0.4' },
 	'afareas' => { 288 => 0x304 },
 	'afareaselectionmethod' => { 2 => 0xd },
 	'afareaselectmethod' => { 82 => 0x51b },
 	'afareawidth' => { 190 => [0x18,0x32,0x4e] },
 	'afareaxposition' => { 190 => [0x14,0x2e,0x4a], 378 => 0x1203 },
 	'afareaxposition1' => { 378 => 0x1201 },
 	'afareayposition' => { 190 => [0x16,0x30,0x4c], 378 => 0x1204 },
 	'afareayposition1' => { 378 => 0x1202 },
-	'afareazonesize' => { 124 => '0.4' },
+	'afareazonesize' => { 124 => '0.5' },
 	'afassist' => { 80 => 0x5, 88 => 0x5, 181 => 0x48, 271 => '2.5', 273 => '0.2', 276 => '0.2', 277 => '1.1', 278 => '1.1', 279 => '1.3', 280 => '2.4', 281 => '1.3', 282 => '0.2', 284 => '2.4', 286 => '2.3' },
 	'afassistbeam' => { 2 => 0x8, 82 => 0x50e, 83 => 0x4, 84 => 0x5, 85 => 0x4, 86 => 0x4, 87 => 0x5 },
 	'afassistlamp' => { 311 => 0x31 },
 	'afbuttonpressed' => { 400 => [0x83,0x283] },
 	'afconfigtool' => { 2 => 0x1 },
@@ -1451,11 +1451,11 @@ my %tagLookup = (
 	'circgradbasedcorrwhat' => { 468 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsWhat'], 470 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsWhat'] },
 	'circgradbasedcorrwhites2012' => { 468 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalWhites2012'], 470 => [\'CircularGradientBasedCorrections','CircularGradientBasedCorrectionsLocalWhites2012'] },
 	'circulargradientbasedcorrections' => { 468 => 'CircularGradientBasedCorrections', 470 => 'CircularGradientBasedCorrections' },
 	'city' => { 129 => 0x5a, 158 => 'City', 311 => 0x6d, 482 => 'City' },
 	'city2' => { 311 => 0x80 },
-	'clarity' => { 225 => 0x35, 226 => 0x3d, 468 => 'Clarity', 470 => 'Clarity' },
+	'clarity' => { 225 => 0x35, 226 => 0x3d, 411 => 0x2036, 468 => 'Clarity', 470 => 'Clarity' },
 	'clarity2012' => { 468 => 'Clarity2012', 470 => 'Clarity2012' },
 	'claritycontrol' => { 346 => 0x96 },
 	'classifystate' => { 129 => 0xe1 },
 	'clearretouch' => { 311 => 0x7c },
 	'clearretouchvalue' => { 311 => 0xa3 },
@@ -1618,10 +1618,11 @@ my %tagLookup = (
 	'colortempunknown5' => { 38 => 0x4a, 39 => 0x77, 41 => 0x7c, 42 => 0x5d, 46 => 0x66, 47 => 0x66, 48 => 0x66, 49 => 0x6e },
 	'colortempunknown6' => { 38 => 0x4f, 39 => 0x7f, 41 => 0x81, 42 => 0x62, 46 => 0x8e, 47 => 0x6b, 48 => 0x6b, 49 => 0x73 },
 	'colortempunknown7' => { 38 => 0x54, 39 => 0x87, 41 => 0x86, 42 => 0x67, 46 => 0x93, 47 => 0x70, 48 => 0x70, 49 => 0x78 },
 	'colortempunknown8' => { 38 => 0x59, 39 => 0x8f, 41 => 0x8b, 42 => 0x6c, 46 => 0x98, 47 => 0x75, 48 => 0x75, 49 => 0x7d },
 	'colortempunknown9' => { 38 => 0x5e, 39 => 0x97, 41 => 0x90, 42 => 0x71, 46 => 0x9d, 47 => 0x7a, 48 => 0x7a, 49 => 0x82 },
+	'colortint' => { 310 => 0x35c },
 	'colortone' => { 10 => 0x6f, 12 => 0x77, 34 => 0x2a, 50 => 0x2 },
 	'colortoneadj' => { 101 => 0x20304, 106 => 0x11e },
 	'colortoneauto' => { 69 => 0x9c },
 	'colortonefaithful' => { 19 => 0x107, 68 => 0x6c, 69 => 0x6c },
 	'colortonelandscape' => { 19 => 0x105, 68 => 0x3c, 69 => 0x3c },
@@ -1784,10 +1785,11 @@ my %tagLookup = (
 	'copyrightstatus' => { 298 => 'CopyrightStatus' },
 	'copyrightyear' => { 480 => 'CopyrightYear', 484 => 'copyrightYear' },
 	'coringfilter' => { 292 => 0x310, 293 => 0x102d, 296 => 0x310 },
 	'coringvalues' => { 292 => 0x311, 296 => 0x311 },
 	'corporateentity' => { 484 => 'corporateEntity' },
+	'correlatedcolortemp' => { 310 => 0x35b },
 	'country' => { 158 => 'Country', 311 => 0x69, 482 => 'Country' },
 	'country-primarylocationcode' => { 129 => 0x64 },
 	'country-primarylocationname' => { 129 => 0x65 },
 	'countrycode' => { 221 => 0x5, 358 => 'CountryCode', 479 => 'CountryCode' },
 	'course' => { 486 => 'course' },
@@ -2527,10 +2529,11 @@ my %tagLookup = (
 	'facepositions' => { 125 => 0x4103 },
 	'facerecognition' => { 385 => 0x120 },
 	'facesdetected' => { 53 => 0x2, 54 => 0x2, 55 => 0x3, 108 => 0x0, 109 => 0x2, 111 => 0x211c, 125 => 0x4100, 203 => 0x3, 292 => 0x1200, 311 => 0x3f, 330 => 0x0, 375 => 0xb5, 386 => 0x0, 405 => 0x0, 408 => 0x3, 418 => 0x30 },
 	'facesrecognized' => { 304 => 0x0 },
 	'facewidth' => { 54 => 0x1 },
+	'fade' => { 411 => 0x2034 },
 	'faithfuloutputhighlightpoint' => { 107 => 0x38 },
 	'faithfuloutputshadowpoint' => { 107 => 0x39 },
 	'faithfulrawcolortone' => { 107 => 0x31 },
 	'faithfulrawcontrast' => { 107 => 0x33 },
 	'faithfulrawhighlight' => { 107 => 0x79 },
@@ -3057,11 +3060,11 @@ my %tagLookup = (
 	'highlightadj' => { 101 => 0x2030c },
 	'highlightcolordistortreduct' => { 445 => 0x8026 },
 	'highlightlinearitylimit' => { 385 => 0xa025 },
 	'highlightprotection' => { 263 => 0x6 },
 	'highlightrecovery' => { 468 => 'HighlightRecovery', 470 => 'HighlightRecovery' },
-	'highlights' => { 462 => 'Highlights' },
+	'highlights' => { 411 => 0x2033, 462 => 'Highlights' },
 	'highlights2012' => { 468 => 'Highlights2012', 470 => 'Highlights2012' },
 	'highlightsadj' => { 445 => 0x9019 },
 	'highlightshadow' => { 311 => 0xad },
 	'highlighttone' => { 125 => 0x1041 },
 	'highlighttonepriority' => { 13 => 0x7, 16 => 0x7, 17 => 0x7, 18 => 0x7, 20 => 0x7, 22 => 0x7, 28 => 0x7, 61 => 0x3, 82 => 0x203 },
@@ -3302,11 +3305,11 @@ my %tagLookup = (
 	'internalflashmode' => { 334 => 0x1 },
 	'internalflashstrength' => { 334 => 0x3 },
 	'internalflashtable' => { 293 => 0x1024 },
 	'internallensserialnumber' => { 385 => 0xa005 },
 	'internalndfilter' => { 311 => 0x9d },
-	'internalserialnumber' => { 62 => 0x96, 74 => 0x9, 125 => 0x10, 184 => 0x49dc, 287 => 0x18, 289 => 0x102, 308 => 0x500, 311 => 0x25, 326 => 0x4, 378 => 0x5, 429 => [0x7c,0xf0], 430 => 0x88, 431 => 0x88 },
+	'internalserialnumber' => { 62 => 0x96, 74 => 0x9, 125 => 0x10, 184 => 0x49dc, 287 => 0x18, 289 => 0x102, 308 => 0x500, 311 => 0x25, 326 => 0x4, 378 => 0x5, 429 => [0x7c,0xf0], 430 => 0x88, 431 => [0x88,0x8a] },
 	'interopindex' => { 117 => 0x1, 475 => 'InteroperabilityIndex' },
 	'interopversion' => { 117 => 0x2 },
 	'intervallength' => { 178 => 0x10 },
 	'intervalmode' => { 178 => 0x26 },
 	'intervalnumber' => { 178 => 0x11 },
@@ -3372,10 +3375,11 @@ my %tagLookup = (
 	'jobref' => { 493 => 'JobRef' },
 	'jobrefid' => { 493 => [\'JobRef','JobRefId'] },
 	'jobrefname' => { 493 => [\'JobRef','JobRefName'] },
 	'jobrefurl' => { 493 => [\'JobRef','JobRefUrl'] },
 	'jobstatus' => { 476 => 'JobStatus' },
+	'jpeg-heifswitch' => { 411 => 0x2039 },
 	'jpeghandling' => { 468 => 'JPEGHandling', 470 => 'JPEGHandling' },
 	'jpegquality' => { 10 => 0x66, 311 => 0x43, 313 => 0x3034, 411 => 0xb047 },
 	'jpegsize' => { 313 => 0x303a },
 	'jpgcompression' => { 241 => 0x7d4 },
 	'jpgfromraw' => { 95 => 0x2007, 112 => 'Exif-JpgFromRaw', 316 => 0x2e },
@@ -4653,11 +4657,13 @@ my %tagLookup = (
 	'pixelclockfrequency' => { 135 => 0x40b },
 	'pixelcorrectionoffset' => { 135 => 0x972 },
 	'pixelcorrectionscale' => { 135 => 0x971 },
 	'pixelscale' => { 117 => 0x830e },
 	'pixelshiftinfo' => { 411 => 0x202f },
+	'pixelshiftoffset' => { 125 => 0x1106 },
 	'pixelshiftresolution' => { 347 => 0x0 },
+	'pixelshiftshots' => { 125 => 0x1105 },
 	'pixelsperunitx' => { 300 => 0x0 },
 	'pixelsperunity' => { 300 => 0x4 },
 	'pixelunits' => { 300 => 0x8 },
 	'planarconfiguration' => { 117 => 0x11c, 490 => 'PlanarConfiguration' },
 	'plane' => { 448 => [\'Planes','PlanesPlane'] },
@@ -4744,10 +4750,11 @@ my %tagLookup = (
 	'potentialface6position' => { 408 => 0x3d },
 	'potentialface7position' => { 408 => 0x47 },
 	'potentialface8position' => { 408 => 0x51 },
 	'powersource' => { 325 => '0.1' },
 	'poweruptime' => { 222 => 0xb6 },
+	'preaf' => { 124 => '0.2' },
 	'precaptureframes' => { 293 => 0x300 },
 	'predictor' => { 117 => 0x13d },
 	'preflashreturnstrength' => { 238 => 0x28a },
 	'prefs' => { 129 => 0xdd, 358 => 'Prefs' },
 	'prereadfastresetcount' => { 135 => 0x187e },
@@ -5349,11 +5356,11 @@ my %tagLookup = (
 	'shadingcompensation2' => { 292 => 0x1012 },
 	'shadow' => { 388 => 0xe },
 	'shadowadj' => { 101 => 0x2030b },
 	'shadowcorrection' => { 346 => 0x79 },
 	'shadowprotection' => { 263 => 0x0 },
-	'shadows' => { 117 => 0xfe52, 462 => 'Shadows', 468 => 'Shadows', 470 => 'Shadows' },
+	'shadows' => { 117 => 0xfe52, 411 => 0x2032, 462 => 'Shadows', 468 => 'Shadows', 470 => 'Shadows' },
 	'shadows2012' => { 468 => 'Shadows2012', 470 => 'Shadows2012' },
 	'shadowsadj' => { 445 => 0x901a },
 	'shadowscale' => { 117 => 0xc633 },
 	'shadowtint' => { 468 => 'ShadowTint', 470 => 'ShadowTint' },
 	'shadowtone' => { 125 => 0x1040 },
@@ -5375,10 +5382,11 @@ my %tagLookup = (
 	'sharpnesslandscape' => { 19 => 0xf3, 68 => 0x34, 69 => 0x34 },
 	'sharpnessmonochrome' => { 19 => 0xf6, 68 => 0x7c, 69 => 0x7c },
 	'sharpnessneutral' => { 19 => 0xf4, 68 => 0x4c, 69 => 0x4c },
 	'sharpnessovershoot' => { 445 => 0x801b },
 	'sharpnessportrait' => { 19 => 0xf2, 68 => 0x1c, 69 => 0x1c },
+	'sharpnessrange' => { 411 => 0x2035 },
 	'sharpnesssetting' => { 288 => 0x506, 296 => 0x1013, 400 => 0x12, 416 => 0xa },
 	'sharpnessstandard' => { 19 => 0xf1, 68 => 0x4, 69 => 0x4 },
 	'sharpnessstrength' => { 101 => 0x20311 },
 	'sharpnessthreshold' => { 445 => 0x801d },
 	'sharpnessundershoot' => { 445 => 0x801c },
@@ -6352,11 +6360,11 @@ my %tagLookup = (
 	'whitebalancesetting' => { 181 => 0x23, 398 => 0x5, 399 => 0x4, 400 => 0x16, 416 => 0xd },
 	'whitebalancesetup' => { 385 => 0x41 },
 	'whitebalancetemperature' => { 288 => 0x501 },
 	'whiteboard' => { 293 => 0x301 },
 	'whitelevel' => { 117 => 0xc61d, 346 => 0x7e },
-	'whitepoint' => { 117 => 0x13e, 346 => 0x201, 490 => 'WhitePoint' },
+	'whitepoint' => { 117 => 0x13e, 310 => 0x35d, 346 => 0x201, 490 => 'WhitePoint' },
 	'whites2012' => { 468 => 'Whites2012', 470 => 'Whites2012' },
 	'whitesadj' => { 445 => 0x9017 },
 	'wideadapter' => { 378 => 0x1017 },
 	'widefocuszone' => { 178 => 0x2f },
 	'widerange' => { 387 => 0x20f },
@@ -8115,10 +8123,11 @@ my %tagExists = (
 	'focallength35mm' => 1,
 	'focalplanecolorimetryestimates' => 1,
 	'focalrange' => 1,
 	'focusdistance2' => 1,
 	'focusedgemap' => 1,
+	'focusframesize' => 1,
 	'focusinfo' => 1,
 	'focusinfoifd' => 1,
 	'focuspeakinghighlightcolor' => 1,
 	'focuspeakinglevel' => 1,
 	'focuspointbrightness' => 1,
@@ -8701,14 +8710,15 @@ my %tagExists = (
 	'jsondata' => 1,
 	'jsonmetadata' => 1,
 	'jumbf' => 1,
 	'jumbfbox' => 1,
 	'jumbfdescr' => 1,
-	'jumbfid' => 1,
-	'jumbflabel' => 1,
-	'jumbfsignature' => 1,
-	'jumbftype' => 1,
+	'jumdflags' => 1,
+	'jumdid' => 1,
+	'jumdlabel' => 1,
+	'jumdsignature' => 1,
+	'jumdtype' => 1,
 	'jumptoxpep' => 1,
 	'junk' => 1,
 	'jxlcodestream' => 1,
 	'k1' => 1,
 	'k2' => 1,
diff --git a/lib/Image/ExifTool/TagNames.pod b/lib/Image/ExifTool/TagNames.pod
index d1e8a1e5..f1e52e1c 100644
--- a/lib/Image/ExifTool/TagNames.pod
+++ b/lib/Image/ExifTool/TagNames.pod
@@ -10,11 +10,11 @@ tables based on information type.  Tag names are used to reference specific
 meta information extracted from or written to a file.
 
 =head1 TAG TABLES
 
 The tables listed below give the names of all tags recognized by ExifTool.
-They contain a total of 24102 tags, with 15604 unique tag names.
+They contain a total of 24118 tags, with 15614 unique tag names.
 
 B<Tag ID>, B<Index#> or B<Sequence> is given in the first column of each
 table.  A B<Tag ID> is the computer-readable equivalent of a tag name, and
 is the identifier that is actually stored in the file.  B<Index#> refers to
 the offset of a value when found at a fixed position within a data block
@@ -9931,10 +9931,12 @@ Tags extracted from FLIR Public image Format (FPF) files.
   0x104e   ColorChromeFXBlue                    int32s
   0x1050   ShutterType                          int16u
   0x1100   AutoBracketing                       int16u
   0x1101   SequenceNumber                       int16u
   0x1103   DriveSettings                        FujiFilm DriveSettings
+  0x1105   PixelShiftShots                      int16u
+  0x1106   PixelShiftOffset                     rational64s[2]
   0x1153   PanoramaAngle                        int16u
   0x1154   PanoramaDirection                    int16u
   0x1201   AdvancedFilter                       int32u
   0x1210   ColorMode                            int16u
   0x1300   BlurWarning                          int16u
@@ -9987,14 +9989,15 @@ Tags extracted from FLIR Public image Format (FPF) files.
 
 =head3 FujiFilm FocusSettings Tags
 
   Index4   Tag Name                             Writable
   ------   --------                             --------
-    0.1    FocusMode2                           int32u & 0xff
-    0.2    AFAreaMode                           int32u & 0xf00
-    0.3    AFAreaPointSize                      int32u & 0xf000
-    0.4    AFAreaZoneSize                       int32u & 0xf0000
+    0.1    FocusMode2                           int32u & 0x0f
+    0.2    PreAF                                int32u & 0xf0
+    0.3    AFAreaMode                           int32u & 0xf00
+    0.4    AFAreaPointSize                      int32u & 0xf000
+    0.5    AFAreaZoneSize                       int32u & 0xf0000
 
 =head3 FujiFilm AFCSettings Tags
 
   Index4   Tag Name                             Writable
   ------   --------                             --------
@@ -15800,10 +15803,13 @@ This information is written by the Leica S (Typ 007) and M10 models.
   0x0311   ExternalSensorBrightnessValue        rational64s
   0x0312   MeasuredLV                           rational64s
   0x034c   UserProfile                          string
   0x0359   ISOSelected                          int32s
   0x035a   FNumber                              int32s
+  0x035b   CorrelatedColorTemp                  int16u
+  0x035c   ColorTint                            int16s
+  0x035d   WhitePoint                           rational64u[2]
 
 =head3 Panasonic Type2 Tags
 
 This type of maker notes is used by models such as the NV-DS65, PV-D2002,
 PV-DC3000, PV-DV203, PV-DV401, PV-DV702, PV-L2001, PV-SD4090, PV-SD5000 and
@@ -17512,10 +17518,17 @@ MakerNotes.
   0x202c   MeteringMode2                        int16u
   0x202d   ExposureStandardAdjustment           rational64s
   0x202e   Quality                              int16u[2]
   0x202f   PixelShiftInfo                       undef
   0x2031   SerialNumber                         string
+  0x2032   Shadows                              int32s
+  0x2033   Highlights                           int32s
+  0x2034   Fade                                 int32s
+  0x2035   SharpnessRange                       int32s
+  0x2036   Clarity                              int32s
+  0x2037   FocusFrameSize                       no
+  0x2039   JPEG-HEIFSwitch                      int16u
   0x3000   ShotInfo                             Sony ShotInfo
   0x900b   Tag900b                              Sony Tag900b
   0x9050   Tag9050a                             Sony Tag9050a
            Tag9050b                             Sony Tag9050b
            Tag9050c                             Sony Tag9050c
@@ -18598,11 +18611,11 @@ Valid from July 2015 for ILCE-6100/6300/6400/6500/6600/7C/7M3/7RM2/7RM3/7RM4/
            APS-CSizeCapture                     int8u
     542    LensSpecFeatures                     undef[2]
 
 =head3 Sony Tag9050c Tags
 
-Valid from July 2020 for ILCE-1/7SM3.
+Valid from July 2020 for ILCE-1/7SM3, ILME-FX3.
 
   Index1   Tag Name                             Writable
   ------   --------                             --------
      38    Shutter                              int16u[3]
      57    FlashStatus                          int8u
@@ -18613,10 +18626,11 @@ Valid from July 2020 for ILCE-1/7SM3.
      80    ShutterCount2                        int32u
     102    SonyExposureTime                     int16u
     104    SonyFNumber                          int16u
     107    ReleaseMode2                         int8u
     136    InternalSerialNumber                 int8u[6]~
+    138    InternalSerialNumber                 int8u[6]~
 
 =head3 Sony Tag9400a Tags
 
 Valid for many DSC, NEX and SLT models
 
@@ -18814,11 +18828,11 @@ These tags are currently extracted for SLT models only.
   ------   --------                             --------
       4    AFPointsSelected                     int32u
 
 =head3 Sony Tag940c Tags
 
-NEX and ILCE models only.
+E-mount cameras only.
 
   Index1   Tag Name                             Writable
   ------   --------                             --------
       8    LensMount2                           int8u
       9    LensType3                            int16u
@@ -19004,11 +19018,11 @@ E-mount models.
    6663    TiffMeteringImageHeight              no
    6664    TiffMeteringImage                    no
 
 =head3 Sony Tag9416 Tags
 
-Valid for the ILCE-1/7SM3.
+Valid for the ILCE-1/7SM3, ILME-FX3.
 
   Index1   Tag Name                             Writable
   ------   --------                             --------
       0    Tag9416_0000                         no
       4    SonyISO                              no
@@ -21875,14 +21889,15 @@ tags in Jpeg2000 images.
 
 Information extracted from the JUMBF description box.
 
   Tag ID               Tag Name                 Writable
   ------               --------                 --------
-  'id'                 JUMBFID                  no
-  'label'              JUMBFLabel               no
-  'signature'          JUMBFSignature           no
-  'type'               JUMBFType                no
+  'jumd-flags'         JUMDFlags                no
+  'jumd-id'            JUMDID                   no
+  'jumd-label'         JUMDLabel                no
+  'jumd-sig'           JUMDSignature            no
+  'jumd-type'          JUMDType                 no
 
 =head3 Jpeg2000 CaptureResolution Tags
 
   Index1   Tag Name                             Writable
   ------   --------                             --------
@@ -34895,11 +34910,11 @@ options, but these files are not writable directly.
 =head3 MacOS XAttr Tags
 
 XAttr tags are extracted using the "xattr" utility.  They are extracted if
 any "XAttr*" tag or the MacOS group is specifically requested, or by setting
 the XAttrTags API option to 1 or the RequestAll API option to 2 or higher.
-And they extracted by default from MacOS "._" files when reading
+And they are extracted by default from MacOS "._" files when reading
 these files directly.
 
   Tag Name                                      Writable
   --------                                      --------
   XAttrAppleMailDateReceived                    no
diff --git a/lib/Image/ExifTool/Writer.pl b/lib/Image/ExifTool/Writer.pl
index fa85bc55..6bc7055d 100644
--- a/lib/Image/ExifTool/Writer.pl
+++ b/lib/Image/ExifTool/Writer.pl
@@ -103,10 +103,11 @@ my %writableType = (
     FLIF=> [ undef,         'WriteFLIF'],
     GIF =>   undef,
     ICC => [ 'ICC_Profile', 'WriteICC' ],
     IND =>   'InDesign',
     JP2 =>   'Jpeg2000',
+    JXL =>   'Jpeg2000',
     MIE =>   undef,
     MOV => [ 'QuickTime',   'WriteMOV' ],
     MRW =>   'MinoltaRaw',
     PDF => [ undef,         'WritePDF' ],
     PNG =>   undef,
diff --git a/perl-Image-ExifTool.spec b/perl-Image-ExifTool.spec
index 889f47d4..2c9491e4 100644
--- a/perl-Image-ExifTool.spec
+++ b/perl-Image-ExifTool.spec
@@ -1,8 +1,8 @@
 Summary: perl module for image data extraction
 Name: perl-Image-ExifTool
-Version: 12.23
+Version: 12.24
 Release: 1
 License: Artistic/GPL
 Group: Development/Libraries/Perl
 URL: https://exiftool.org/
 Source0: Image-ExifTool-%{version}.tar.gz
diff --git a/t/ExifTool_2.out b/t/ExifTool_2.out
index ed218740..699f9064 100644
--- a/t/ExifTool_2.out
+++ b/t/ExifTool_2.out
@@ -1,11 +1,11 @@
-[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.23
+[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.24
 [File, System, Other] FileName - File Name: ExifTool.jpg
 [File, System, Other] Directory - Directory: t/images
 [File, System, Other] FileSize - File Size: 25 KiB
 [File, System, Time] FileModifyDate - File Modification Date/Time: 2021:03:19 14:14:12-04:00
-[File, System, Time] FileAccessDate - File Access Date/Time: 2021:04:01 13:20:48-04:00
+[File, System, Time] FileAccessDate - File Access Date/Time: 2021:04:12 12:43:44-04:00
 [File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2021:03:19 14:31:48-04:00
 [File, System, Other] FilePermissions - File Permissions: -rw-r--r--
 [File, File, Other] FileType - File Type: JPEG
 [File, File, Other] FileTypeExtension - File Type Extension: jpg
 [File, File, Other] MIMEType - MIME Type: image/jpeg
@@ -257,24 +257,30 @@
 [APP11, JPEG-HDR, Image] s2n - S2n: 2.269635e+03
 [APP11, JPEG-HDR, Image] alp - Alpha: 1.000000
 [APP11, JPEG-HDR, Image] bet - Beta: 1.000000
 [APP11, JPEG-HDR, Image] cor - Correction Method: 0
 [APP11, JPEG-HDR, Preview] RatioImage - Ratio Image: (Binary data 19 bytes)
-[JUMBF, JUMBF, Image] type - JUMBF Type: cacb-0011-0010-800000aa00389b71
-[JUMBF, JUMBF, Image] label - JUMBF Label: cai
-[JUMBF, JUMBF, Image] type - JUMBF Type: cast-0011-0010-800000aa00389b71
-[JUMBF, JUMBF, Image] label - JUMBF Label: cb.reuters_1
-[JUMBF, JUMBF, Image] type - JUMBF Type: caas-0011-0010-800000aa00389b71
-[JUMBF, JUMBF, Image] label - JUMBF Label: cai.assertions
-[JUMBF, JUMBF, Image] type - JUMBF Type: json-0011-0010-800000aa00389b71
-[JUMBF, JUMBF, Image] label - JUMBF Label: adobe.asset.info
+[JUMBF, JUMBF, Image] jumd-type - JUMD Type: cacb-0011-0010-800000aa00389b71
+[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable, Label
+[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cai
+[JUMBF, JUMBF, Image] jumd-type - JUMD Type: cast-0011-0010-800000aa00389b71
+[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable, Label
+[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cb.reuters_1
+[JUMBF, JUMBF, Image] jumd-type - JUMD Type: caas-0011-0010-800000aa00389b71
+[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable, Label
+[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cai.assertions
+[JUMBF, JUMBF, Image] jumd-type - JUMD Type: json-0011-0010-800000aa00389b71
+[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable, Label
+[JUMBF, JUMBF, Image] jumd-label - JUMD Label: adobe.asset.info
 [JUMBF, JSON, Other] title - Title: HEALTHCORONAVIRUSUSAOREGON_SALEM_08.jpg
-[JUMBF, JUMBF, Image] type - JUMBF Type: json-0011-0010-800000aa00389b71
-[JUMBF, JUMBF, Image] label - JUMBF Label: cai.location.broad
+[JUMBF, JUMBF, Image] jumd-type - JUMD Type: json-0011-0010-800000aa00389b71
+[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable, Label
+[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cai.location.broad
 [JUMBF, JSON, Other] location - Location: Salem, Oregon
-[JUMBF, JUMBF, Image] type - JUMBF Type: json-0011-0010-800000aa00389b71
-[JUMBF, JUMBF, Image] label - JUMBF Label: cai.rights
+[JUMBF, JUMBF, Image] jumd-type - JUMD Type: json-0011-0010-800000aa00389b71
+[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable, Label
+[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cai.rights
 [JUMBF, JSON, Other] copyright - Copyright: Alisha Jucevic
 [APP12, PictureInfo, Time] TimeDate - Date/Time Original: 1998:12:31 15:17:20
 [APP12, PictureInfo, Image] Shutter - Exposure Time: 1/155
 [APP12, PictureInfo, Image] Flash - Flash: Off
 [APP12, PictureInfo, Image] Resolution - Resolution: 5
diff --git a/t/ExifTool_29.out b/t/ExifTool_29.out
index 3f4cca6d..c032073b 100644
--- a/t/ExifTool_29.out
+++ b/t/ExifTool_29.out
@@ -256,24 +256,30 @@
 [APP11, JPEG-HDR, Image] s2n - S2n: #.######e+##
 [APP11, JPEG-HDR, Image] alp - Alpha: #.######
 [APP11, JPEG-HDR, Image] bet - Beta: #.######
 [APP11, JPEG-HDR, Image] cor - Correction Method: #
 [APP11, JPEG-HDR, Preview] RatioImage - Ratio Image: (Binary data 19 bytes)
-[JUMBF, JUMBF, Image] type - JUMBF Type: cacb-####-####-######aa#####b##
-[JUMBF, JUMBF, Image] label - JUMBF Label: cai
-[JUMBF, JUMBF, Image] type - JUMBF Type: cast-####-####-######aa#####b##
-[JUMBF, JUMBF, Image] label - JUMBF Label: cb.reuters_#
-[JUMBF, JUMBF, Image] type - JUMBF Type: caas-####-####-######aa#####b##
-[JUMBF, JUMBF, Image] label - JUMBF Label: cai.assertions
-[JUMBF, JUMBF, Image] type - JUMBF Type: json-####-####-######aa#####b##
-[JUMBF, JUMBF, Image] label - JUMBF Label: adobe.asset.info
+[JUMBF, JUMBF, Image] jumd-type - JUMD Type: cacb-####-####-######aa#####b##
+[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable,_Label
+[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cai
+[JUMBF, JUMBF, Image] jumd-type - JUMD Type: cast-####-####-######aa#####b##
+[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable,_Label
+[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cb.reuters_#
+[JUMBF, JUMBF, Image] jumd-type - JUMD Type: caas-####-####-######aa#####b##
+[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable,_Label
+[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cai.assertions
+[JUMBF, JUMBF, Image] jumd-type - JUMD Type: json-####-####-######aa#####b##
+[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable,_Label
+[JUMBF, JUMBF, Image] jumd-label - JUMD Label: adobe.asset.info
 [JUMBF, JSON, Other] title - Title: HEALTHCORONAVIRUSUSAOREGON_SALEM_##.jpg
-[JUMBF, JUMBF, Image] type - JUMBF Type: json-####-####-######aa#####b##
-[JUMBF, JUMBF, Image] label - JUMBF Label: cai.location.broad
+[JUMBF, JUMBF, Image] jumd-type - JUMD Type: json-####-####-######aa#####b##
+[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable,_Label
+[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cai.location.broad
 [JUMBF, JSON, Other] location - Location: Salem,_Oregon
-[JUMBF, JUMBF, Image] type - JUMBF Type: json-####-####-######aa#####b##
-[JUMBF, JUMBF, Image] label - JUMBF Label: cai.rights
+[JUMBF, JUMBF, Image] jumd-type - JUMD Type: json-####-####-######aa#####b##
+[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable,_Label
+[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cai.rights
 [JUMBF, JSON, Other] copyright - Copyright: Alisha_Jucevic
 [APP12, PictureInfo, Time] TimeDate - Date/Time Original: ####:##:##_##:##:##
 [APP12, PictureInfo, Image] Shutter - Exposure Time: #/###
 [APP12, PictureInfo, Image] Flash - Flash: Off
 [APP12, PictureInfo, Image] Resolution - Resolution: #
diff --git a/t/Writer_51.out b/t/Writer_51.out
index 7e2484ed..beb5127e 100644
--- a/t/Writer_51.out
+++ b/t/Writer_51.out
@@ -1,12 +1,12 @@
-[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.23
+[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.24
 [File, System, Other] FileName - File Name: Writer_51_failed.jpg
 [File, System, Other] Directory - Directory: t
 [File, System, Other] FileSize - File Size: 25 KiB
-[File, System, Time] FileModifyDate - File Modification Date/Time: 2021:04:01 13:21:08-04:00
-[File, System, Time] FileAccessDate - File Access Date/Time: 2021:04:01 13:21:08-04:00
-[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2021:04:01 13:21:08-04:00
+[File, System, Time] FileModifyDate - File Modification Date/Time: 2021:04:12 12:44:05-04:00
+[File, System, Time] FileAccessDate - File Access Date/Time: 2021:04:12 12:44:05-04:00
+[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2021:04:12 12:44:05-04:00
 [File, System, Other] FilePermissions - File Permissions: -rw-r--r--
 [File, File, Other] FileType - File Type: JPEG
 [File, File, Other] FileTypeExtension - File Type Extension: jpg
 [File, File, Other] MIMEType - MIME Type: image/jpeg
 [File, File, Image] ExifByteOrder - Exif Byte Order: Little-endian (Intel, II)
@@ -244,24 +244,30 @@
 [APP11, JPEG-HDR, Image] s2n - S2n: 2.269635e+03
 [APP11, JPEG-HDR, Image] alp - Alpha: 1.000000
 [APP11, JPEG-HDR, Image] bet - Beta: 1.000000
 [APP11, JPEG-HDR, Image] cor - Correction Method: 0
 [APP11, JPEG-HDR, Preview] RatioImage - Ratio Image: (Binary data 19 bytes)
-[JUMBF, JUMBF, Image] type - JUMBF Type: cacb-0011-0010-800000aa00389b71
-[JUMBF, JUMBF, Image] label - JUMBF Label: cai
-[JUMBF, JUMBF, Image] type - JUMBF Type: cast-0011-0010-800000aa00389b71
-[JUMBF, JUMBF, Image] label - JUMBF Label: cb.reuters_1
-[JUMBF, JUMBF, Image] type - JUMBF Type: caas-0011-0010-800000aa00389b71
-[JUMBF, JUMBF, Image] label - JUMBF Label: cai.assertions
-[JUMBF, JUMBF, Image] type - JUMBF Type: json-0011-0010-800000aa00389b71
-[JUMBF, JUMBF, Image] label - JUMBF Label: adobe.asset.info
+[JUMBF, JUMBF, Image] jumd-type - JUMD Type: cacb-0011-0010-800000aa00389b71
+[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable, Label
+[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cai
+[JUMBF, JUMBF, Image] jumd-type - JUMD Type: cast-0011-0010-800000aa00389b71
+[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable, Label
+[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cb.reuters_1
+[JUMBF, JUMBF, Image] jumd-type - JUMD Type: caas-0011-0010-800000aa00389b71
+[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable, Label
+[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cai.assertions
+[JUMBF, JUMBF, Image] jumd-type - JUMD Type: json-0011-0010-800000aa00389b71
+[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable, Label
+[JUMBF, JUMBF, Image] jumd-label - JUMD Label: adobe.asset.info
 [JUMBF, JSON, Other] title - Title: HEALTHCORONAVIRUSUSAOREGON_SALEM_08.jpg
-[JUMBF, JUMBF, Image] type - JUMBF Type: json-0011-0010-800000aa00389b71
-[JUMBF, JUMBF, Image] label - JUMBF Label: cai.location.broad
+[JUMBF, JUMBF, Image] jumd-type - JUMD Type: json-0011-0010-800000aa00389b71
+[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable, Label
+[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cai.location.broad
 [JUMBF, JSON, Other] location - Location: Salem, Oregon
-[JUMBF, JUMBF, Image] type - JUMBF Type: json-0011-0010-800000aa00389b71
-[JUMBF, JUMBF, Image] label - JUMBF Label: cai.rights
+[JUMBF, JUMBF, Image] jumd-type - JUMD Type: json-0011-0010-800000aa00389b71
+[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable, Label
+[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cai.rights
 [JUMBF, JSON, Other] copyright - Copyright: Alisha Jucevic
 [APP12, PictureInfo, Time] TimeDate - Date/Time Original: 1998:12:31 15:17:20
 [APP12, PictureInfo, Image] Shutter - Exposure Time: 1/155
 [APP12, PictureInfo, Image] Flash - Flash: Off
 [APP12, PictureInfo, Image] Resolution - Resolution: 5
diff --git a/windows_exiftool b/windows_exiftool
index 480dc72d..a90dae76 100755
--- a/windows_exiftool
+++ b/windows_exiftool
@@ -8,11 +8,11 @@
 #               (See html/history.html for revision history)
 #------------------------------------------------------------------------------
 use strict;
 require 5.004;
 
-my $version = '12.23';
+my $version = '12.24';
 
 # add our 'lib' directory to the include list BEFORE 'use Image::ExifTool'
 my $exeDir;
 BEGIN {
     # (undocumented -xpath option added in 11.91, must come before other options)
@@ -5415,11 +5415,11 @@ OPTIONS
 
              exiftool -p test.fmt a.jpg b.jpg
 
          produces output like this:
 
-             -- Generated by ExifTool 12.23 --
+             -- Generated by ExifTool 12.24 --
              File: a.jpg - 2003:10:31 15:44:19
              (f/5.6, 1/60s, ISO 100)
              File: b.jpg - 2006:05:23 11:57:38
              (f/8.0, 1/13s, ISO 100)
              -- end --

Vulnerable code:    "version" : "12.23",
version: 12.23
  gzip -dc Image-ExifTool-12.23.tar.gz | tar -xf -
  cd Image-ExifTool-12.23
# Usage:        exiftool -config acdsee.config -ACDSEETAG=VALUE FILE ...
    'w'           => { Writable => 'real' },
    'h'           => { Writable => 'real' },
    'unit'        => { },
    # new XMP namespaces (eg. xxx) must be added to the Main XMP table:
            AppliedToDimensions => { Struct => \%sACDSeeDimensions },
my $version = '12.23';
    -- Generated by ExifTool 12.23 --
    (mentioned in the Tag Name documentation) as a block.</td>
    of some additional tags as mentioned in the tag name documentation.</td>
(                           -- Image::ExifTool 12.23 --                                     1)Tj
(                           -- Image::ExifTool 12.23 --                                     2)Tj
(                           -- Image::ExifTool 12.23 --                                     3)Tj
(                           -- Image::ExifTool 12.23 --                                     4)Tj
(                           -- Image::ExifTool 12.23 --                                     5)Tj
/Length 3832
(                           -- Image::ExifTool 12.23 --                                     6)Tj
(               Flag to extract some directories \(mentioned in the Tag Name)Tj
(               documentation\) as a block.  Setting this to a value of 2 also)Tj
(               prevents parsing the block to extract tags contained within.)Tj
0 -2.2 TD
(           ByteOrder)Tj
/Length 4804
(                           -- Image::ExifTool 12.23 --                                     7)Tj
(               The byte order for newly created EXIF segments when writing.)Tj
0 -2.2 TD
(               Note that this option affects some types of information when)Tj
/Length 4420
(                           -- Image::ExifTool 12.23 --                                     8)Tj
(               reading/writing the file and other types when getting/setting)Tj
0 -1.1 TD
(               Format for printing date/time values.  See "strftime" in the)Tj
/Length 4972
(                           -- Image::ExifTool 12.23 --                                     9)Tj
(               POSIX package for details about the format string.  If date can)Tj
T*
(               and FileType are generated.  For 3, the file header is read to)Tj
/Length 4475
(                           -- Image::ExifTool 12.23 --                                    10)Tj
(               provide an educated guess at FileType.  For 4, the file is not)Tj
0 -2.2 TD
(                   'K', 'k' or 'km/h'  - km/h)Tj
/Length 4726
(                           -- Image::ExifTool 12.23 --                                    11)Tj
(                   'M', 'm' or 'mph'   - mph)Tj
T*
(               ValueConv values.  Default is ', '.)Tj
/Length 4332
(                           -- Image::ExifTool 12.23 --                                    12)Tj
0 -2.7333 TD
0 -1.1 TD
(               Flag to request all tags to be extracted.  This causes some)Tj
/Length 4470
(                           -- Image::ExifTool 12.23 --                                    13)Tj
(               tags to be generated which normally would not be unless)Tj
0 -1.1 TD
(               of causing the date/time to be reformatted according to PNG 1.2)Tj
/Length 4239
(                           -- Image::ExifTool 12.23 --                                    14)Tj
(               recommendation \(RFC-1123\) when writing, and a warning to be)Tj
/Length 4249
(                           -- Image::ExifTool 12.23 --                                    15)Tj
0 -1.6333 TD
T*
(           XMPAutoConv.)Tj
/Length 4130
(                           -- Image::ExifTool 12.23 --                                    16)Tj
0 -2.7333 TD
/Length 4045
(                           -- Image::ExifTool 12.23 --                                    17)Tj
0 -1.6333 TD
0 -1.1 TD
(           'Group#'\))Tj
/Length 4391
(                           -- Image::ExifTool 12.23 --                                    18)Tj
0 -2.7333 TD
(           3\) [optional] Secondary sort order \('File', 'Tag' or 'Descr'\))Tj
T*
(       an optional group specifier\), use "GetInfo" instead.)Tj
/Length 3962
(                           -- Image::ExifTool 12.23 --                                    19)Tj
0 -2.7333 TD
0 -1.1 TD
(           $success = $exifTool->SetNewValue\($tag, $value\);)Tj
/Length 4036
(                           -- Image::ExifTool 12.23 --                                    20)Tj
0 -2.7333 TD
T*
(           using a Group option argument.  Also, a '#' may be appended to the)Tj
(                           -- Image::ExifTool 12.23 --                                    21)Tj
(           tag name \(eg. 'EXIF:Orientation#'\), with the same effect as setting)Tj
T*
(               names indicating 'unsafe' and 'protected' tags.  Default is 0.)Tj
(                           -- Image::ExifTool 12.23 --                                    22)Tj
0 -2.7333 TD
0 -2.2 TD
(           1\) Tag name \(case sensitive, may be prefixed by family 0, 1 or 7)Tj
/Length 4649
(                           -- Image::ExifTool 12.23 --                                    23)Tj
T*
(           and/or suffixed by a '#' to disable print conversion.  Copied tags)Tj
/Length 4484
(                           -- Image::ExifTool 12.23 --                                    24)Tj
(           may also be added or deleted from a list with arguments of the form)Tj
0 -2.2 TD
(           The "Struct" option is enabled by default for tags extracted by)Tj
/Length 4317
(                           -- Image::ExifTool 12.23 --                                    25)Tj
(           this routine.  This allows the hierarchy of complex structures to)Tj
0 -2.2 TD
(       Notes:)Tj
/Length 4138
(                           -- Image::ExifTool 12.23 --                                    26)Tj
(           Equivalent to, but more efficient than calling "WriteInfo" when)Tj
0 -1.1 TD
(           0\) ExifTool object reference)Tj
/Length 3762
(                           -- Image::ExifTool 12.23 --                                    27)Tj
0 -2.7333 TD
T*
(           The string is simplified to remove a leading 'Main:' and adjacent)Tj
/Length 5018
(                           -- Image::ExifTool 12.23 --                                    28)Tj
0 -2.2 TD
(           See "GetAllGroups [static]" for complete lists of group names.)Tj
/Length 4328
(                           -- Image::ExifTool 12.23 --                                    29)Tj
0 -2.7333 TD
0 -2.2 TD
(       Return Values:)Tj
/Length 4933
(                           -- Image::ExifTool 12.23 --                                    30)Tj
T*
(           view, ICC_Profile, ICC_Profile#, ID3, ID3v1, ID3v1_Enh, ID3v2_2,)Tj
/Length 4765
(                           -- Image::ExifTool 12.23 --                                    31)Tj
(           ID3v2_3, ID3v2_4, IFD0, IFD1, IPTC, IPTC#, ISO, ITC, Insta360,)Tj
0 -2.2 TD
(       Return Values:)Tj
/Length 4949
(                           -- Image::ExifTool 12.23 --                                    32)Tj
(           A list of deletable group names in alphabetical order.  The current)Tj
0 -2.2 TD
(           my $creatable = Image::ExifTool::CanCreate\($filename\);)Tj
/Length 4693
(                           -- Image::ExifTool 12.23 --                                    33)Tj
0 -2.7333 TD
0 -1.1 TD
(           The encodings used to store strings in the various metadata)Tj
/Length 5318
(                           -- Image::ExifTool 12.23 --                                    34)Tj
(           formats.  These encodings may be changed for certain types of)Tj
/Length 4720
(                           -- Image::ExifTool 12.23 --                                    35)Tj
0 -1.6333 TD
T*
(       respectively.)Tj
/Length 5222
(                           -- Image::ExifTool 12.23 --                                    36)Tj
0 -2.7333 TD
(perl v5.18.4                      2021-04-01                       EXIFTOOL\(1\))Tj
/CreationDate (D:20210401142149-04'00')
/ModDate (D:20210401142149-04'00')
0000170483 00000 n 
0000169484 00000 n 
0000169885 00000 n 
0000168949 00000 n 
0000173585 00000 n 
0000170563 00000 n 
0000170644 00000 n 
0000170727 00000 n 
0000170810 00000 n 
0000170893 00000 n 
0000028252 00000 n 
0000170976 00000 n 
0000028359 00000 n 
0000033216 00000 n 
0000171059 00000 n 
0000033323 00000 n 
0000037796 00000 n 
0000171142 00000 n 
0000037903 00000 n 
0000042928 00000 n 
0000171225 00000 n 
0000043035 00000 n 
0000047563 00000 n 
0000171308 00000 n 
0000047670 00000 n 
0000052449 00000 n 
0000174111 00000 n 
0000173720 00000 n 
0000171392 00000 n 
0000052556 00000 n 
0000056941 00000 n 
0000171476 00000 n 
0000057048 00000 n 
0000061571 00000 n 
0000171560 00000 n 
0000061678 00000 n 
0000065970 00000 n 
0000171644 00000 n 
0000066077 00000 n 
0000070379 00000 n 
0000171728 00000 n 
0000070486 00000 n 
0000074669 00000 n 
0000171812 00000 n 
0000074776 00000 n 
0000078874 00000 n 
0000171896 00000 n 
0000078981 00000 n 
0000083425 00000 n 
0000171980 00000 n 
0000083532 00000 n 
0000087547 00000 n 
0000172064 00000 n 
0000087654 00000 n 
0000091743 00000 n 
0000172148 00000 n 
0000091850 00000 n 
0000096542 00000 n 
0000173858 00000 n 
0000172232 00000 n 
0000096649 00000 n 
0000101295 00000 n 
0000172316 00000 n 
0000101402 00000 n 
0000106104 00000 n 
0000172400 00000 n 
0000106211 00000 n 
0000110748 00000 n 
0000172484 00000 n 
0000110855 00000 n 
0000115225 00000 n 
0000172568 00000 n 
0000115332 00000 n 
0000119523 00000 n 
0000172652 00000 n 
0000119630 00000 n 
0000123445 00000 n 
0000172736 00000 n 
0000123552 00000 n 
0000128623 00000 n 
0000172820 00000 n 
0000128730 00000 n 
0000133111 00000 n 
0000172904 00000 n 
0000133218 00000 n 
0000138204 00000 n 
0000172988 00000 n 
0000138311 00000 n 
0000143129 00000 n 
0000173996 00000 n 
0000173074 00000 n 
0000143237 00000 n 
0000148240 00000 n 
0000173162 00000 n 
0000148348 00000 n 
0000153095 00000 n 
0000173250 00000 n 
0000153203 00000 n 
0000158575 00000 n 
0000173338 00000 n 
0000158683 00000 n 
0000163457 00000 n 
0000173426 00000 n 
0000163565 00000 n 
0000168841 00000 n 
0000169089 00000 n 
0000169292 00000 n 
0000173514 00000 n 
0000173543 00000 n 
0000174217 00000 n 
0000174341 00000 n 
/ID [<b0cc62a5be0c1030b6f351e712d1e1cb><b0cc62a5be0c1030b6f351e712d1e1cb>]
174413
/CreationDate (D:20210401142150-04'00')
/ModDate (D:20210401142150-04'00')
/ID [<89c8b97ce96c2a9e18d602ed3bb880d8><89c8b97ce96c2a9e18d602ed3bb880d8>]
  <br>2 = No flash &amp; flash</span></td></tr>
<td><span class=s>[val &amp; 0xff]
  <br>2 = AF-C
  <br>17 = AF-S (Auto)</span></td></tr>
<tr>
<td class=r title='0 = 0x0'>0.3</td>
<tr class=b>
<td class=r title='0 = 0x0'>0.4</td>
<br><i>Last revised Feb 3, 2021</i>
<td>'id'</td>
<td>JUMBFID</td>
<td>&nbsp;</td></tr>
<td>'label'</td>
<td>JUMBFLabel</td>
<td>'signature'</td>
<td>JUMBFSignature</td>
<td>'type'</td>
<td>JUMBFType</td>
<br><i>Last revised Apr 1, 2021</i>
And they extracted by default from MacOS &quot;._&quot; files when reading
<br><i>Last revised Oct 15, 2020</i>
<br><i>Last revised Oct 2, 2020</i>
<td><span class=s>1 = RAW 1
  <br>3 = IIQ L
  <br>5 = IIQ S
  <br>6 = IIQ Sv2</span></td></tr>
<br><i>Last revised Apr 9, 2019</i>
  <br>6 = RAW + JPEG
  <br>&#39;0 1&#39; = Standard JPEG
  <br>&#39;0 2&#39; = Fine JPEG
  <br>&#39;0 3&#39; = Extra Fine JPEG
  <br>&#39;1 1&#39; = RAW + Standard JPEG
  <br>&#39;1 2&#39; = RAW + Fine JPEG
  <br>&#39;1 3&#39; = RAW + Extra Fine JPEG</td></tr></table>
<tr>
<tr class=b>
<tr>
<tr class=b>
<tr>
<tr class=b>
<tr>
<tr class=b>
<tr>
<tr class=b>
<tr>
<tr class=b>
<tr>
<tr class=b>
<tr>
<tr class=b>
<tr>
<tr class=b>
<tr>
<tr class=b>
<tr>
<tr class=b>
<tr>
<tr class=b>
<tr>
<tr class=b>
<tr>
<tr class=b>
<tr>
<tr class=b>
<tr>
<tr class=b>
<tr>
<tr class=b>
<tr>
<tr class=b>
<tr>
<tr class=b>
<tr>
<tr class=b>
<tr>
<tr class=b>
<tr>
  <br>34 = Gamma HLG3</td></tr></table>
  <br>34 = Gamma HLG3</td></tr></table>
  <br>34 = Gamma HLG3</td></tr></table>
  <br>34 = Gamma HLG3</td></tr></table>
  <br>34 = Gamma HLG3</td></tr></table>
  <br>34 = Gamma HLG3</td></tr></table>
  <br>34 = Gamma HLG3</td></tr></table>
  <br>34 = Gamma HLG3</td></tr></table>
  <br>34 = Gamma HLG3</td></tr></table>
  <br>34 = Gamma HLG3</td></tr></table>
  <br>34 = Gamma HLG3</td></tr></table>
  <br>34 = Gamma HLG3</td></tr></table>
  <br>34 = Gamma HLG3</td></tr></table>
  <br>34 = Gamma HLG3</td></tr></table>
  <br>34 = Gamma HLG3</td></tr></table>
  <br>34 = Gamma HLG3</td></tr></table>
  <br>34 = Gamma HLG3</td></tr></table>
  <br>34 = Gamma HLG3</td></tr></table>
<p>Valid from July 2020 for ILCE-1/7SM3.</p>
  <br>3 = JPEG + MPO</span></td></tr>
<p>NEX and ILCE models only.</p>
<p>Valid for the ILCE-1/7SM3.</p>
  <br>34 = Gamma HLG3</td></tr></table>
<br><i>Last revised Apr 1, 2021</i>
They contain a total of 24102 tags, with 15604 unique tag names.
<br><i>Last revised Apr 1, 2021</i>
<pre><code>    -- Generated by ExifTool 12.23 --
(                              -- ExifTool 12.23 --                                     1)Tj
(                              -- ExifTool 12.23 --                                     2)Tj
(                              -- ExifTool 12.23 --                                     3)Tj
(                              -- ExifTool 12.23 --                                     4)Tj
(                              -- ExifTool 12.23 --                                     5)Tj
(                              -- ExifTool 12.23 --                                     6)Tj
(                              -- ExifTool 12.23 --                                     7)Tj
(                              -- ExifTool 12.23 --                                     8)Tj
(                              -- ExifTool 12.23 --                                     9)Tj
(                              -- ExifTool 12.23 --                                    10)Tj
(                              -- ExifTool 12.23 --                                    11)Tj
(                              -- ExifTool 12.23 --                                    12)Tj
(                              -- ExifTool 12.23 --                                    13)Tj
(                              -- ExifTool 12.23 --                                    14)Tj
(                              -- ExifTool 12.23 --                                    15)Tj
(                -- Generated by ExifTool 12.23 --)Tj
(                              -- ExifTool 12.23 --                                    16)Tj
(                              -- ExifTool 12.23 --                                    17)Tj
(                              -- ExifTool 12.23 --                                    18)Tj
(                              -- ExifTool 12.23 --                                    19)Tj
(                              -- ExifTool 12.23 --                                    20)Tj
(                              -- ExifTool 12.23 --                                    21)Tj
(                              -- ExifTool 12.23 --                                    22)Tj
(                              -- ExifTool 12.23 --                                    23)Tj
(                              -- ExifTool 12.23 --                                    24)Tj
(                              -- ExifTool 12.23 --                                    25)Tj
(                              -- ExifTool 12.23 --                                    26)Tj
(                              -- ExifTool 12.23 --                                    27)Tj
(                              -- ExifTool 12.23 --                                    28)Tj
(                              -- ExifTool 12.23 --                                    29)Tj
(                              -- ExifTool 12.23 --                                    30)Tj
(                              -- ExifTool 12.23 --                                    31)Tj
(                              -- ExifTool 12.23 --                                    32)Tj
(                              -- ExifTool 12.23 --                                    33)Tj
(                              -- ExifTool 12.23 --                                    34)Tj
(                              -- ExifTool 12.23 --                                    35)Tj
(                              -- ExifTool 12.23 --                                    36)Tj
(                              -- ExifTool 12.23 --                                    37)Tj
(                              -- ExifTool 12.23 --                                    38)Tj
(                              -- ExifTool 12.23 --                                    39)Tj
(perl v5.18.4                      2021-04-01                       EXIFTOOL\(1\))Tj
/CreationDate (D:20210401142148-04'00')
/ModDate (D:20210401142148-04'00')
/ID [<ab798910bbf7ddf1029ca400262164d7><ab798910bbf7ddf1029ca400262164d7>]
    <li>Added BlockExtract option
<a href="http://sourceforge.net/projects/exiftool/files/Image-ExifTool-12.23.tar.gz/download">
Download        Version 12.23</a> (4.7 MB) -
<a href="history.html">Apr. 1, 2021</a></b></td></tr></table></blockquote>
<a href="http://sourceforge.net/projects/exiftool/files/exiftool-12.23.zip/download">
         exiftool-12.23.zip</a> (6.4 MB)</b></td></tr></table></blockquote>
         ExifTool-12.23.dmg</a> (3.0 MB)</b></td></tr></table></blockquote>
<br><span class=lt>(The file you download should be named "<code>exiftool-12.23.zip</code>".)</span></li>
<br><span class=lt>(Double-click on "<code>exiftool-12.23.zip</code>" to open
<br><span class=lt>(The file you download should be named "<code>Image-ExifTool-12.23.tar.gz</code>".)</span></li>
<br><span class=lt>(The file you download should be named "<code>ExifTool-12.23.dmg</code>".)</span></li>
<br><span class=lt>(The file you download should be named "<code>Image-ExifTool-12.23.tar.gz</code>".)</span></li>
    tar -xzf Image-ExifTool-12.23.tar.gz
    cd Image-ExifTool-12.23
<blockquote class=red>"ExifTool-12.23.pkg" can't be opened because it is from an
<br><span class=lt>(The file you download should be named "<code>Image-ExifTool-12.23.tar.gz</code>".)</span></li>
    gzip -dc Image-ExifTool-12.23.tar.gz | tar -xf -
    cd Image-ExifTool-12.23
$VERSION = '12.23';
                MacOS PHP PCX DCX DWF DWG WTV Torrent VCard LRI R3D AA PDB MOI
                ISO ALIAS JSON MP3 DICOM PCD TXT);
                    X3F PS PDF ICC VRD DR4 JP2 EXIF AI AIT IND MOV EXV FLIF);
    JP2  => [ qw(J2C JPC JXC) ],
    JXC  => ['JP2', 'JPEG XL Codestream'], # (JXC = PH invention, not a real extension)
    JXL  => ['JP2', 'JPEG XL'],
    JXC  => 'image/x-jxc', #PH (invented)
    JP2  => '(\0\0\0\x0cjP(  |\x1a\x1a)\x0d\x0a\x87\x0a|\xff\x4f\xff\x51\0|\xff\x0a|\0\0\0\x0cJXL \x0d\x0a......ftypjxl )',
Flag to extract some directories (mentioned in the Tag Name documentation)
as a block.  Setting this to a value of 2 also prevents parsing the block to
extract tags contained within.
$VERSION = '1.06';
            # must protect unescaped "$" and "@" symbols, and "\" at end of string
            $tok =~ s{\\(.)|([\$\@]|\\$)}{'\\'.($2 || $1)}sge;
            # convert C escape sequences (allowed in quoted text)
            $tok = eval qq{"$tok"};
$VERSION = '1.79';
        Mask => 0x000000ff,
            0x00 => 'AF-M',
            0x01 => 'AF-S',
            0x02 => 'AF-C',
            0x11 => 'AF-S (Auto)',
    0.3 => {
    0.4 => {
    type => {
        Name => 'JUMBFType',
    label      => { Name => 'JUMBFLabel' },
    id         => { Name => 'JUMBFID', Description => 'JUMBF ID' },
    signature  => { Name => 'JUMBFSignature', PrintConv => 'unpack "H*", $val' },
    $et->HandleTag($tagTablePtr, 'type', substr($$dataPt, $pos, 16));
        $et->HandleTag($tagTablePtr, 'label', $name);
        $et->HandleTag($tagTablePtr, 'id', Get32u($dataPt, $pos));
        $et->HandleTag($tagTablePtr, 'signature', substr($$dataPt, $pos, 32));
            ($hdr eq "\0\0\0\x0cJXL \x0d\x0a\x87\x0a" and $$et{IsJXL} = 1)) # (JPEG XL)
        if ($hdr =~ /^\xff\x0a/) {
            $outfile and $et->Error('Writing of JPEG XL codestream files is not yet supported'), return 0;
            # JPEG XL codestream
            $et->SetFileType('JXC',undef,'JXL'); # (PH invention)
            $et->Warn('JPEG XL codestream support is currently experimental',1);
            ProcessJXLCodestream($et, \$hdr);
            return 1;
        }
    $et->Warn('JPEG XL support is currently experimental',1) if $$et{IsJXL};
# Returns: 1 on success, 0 if this wasn't a valid JPEG XL file
    return ProcessJP2($et, $dirInfo);
        And they extracted by default from MacOS "._" files when reading
        } elsif ($format eq 'vt_filetime') {
    # 0x357 int32u - 0=DNG, 3162=JPG (ref 23)
$VERSION = '1.06';
            3 => 'IIQ L',
            6 => 'IIQ Sv2',
$VERSION = '3.39';
            6 => 'RAW + JPEG',
            ($$self{Model} =~ /^(SLT-|HV)/) or ($$self{Model} =~ /^ILCE-/ and
            '0 1' => 'Standard JPEG',
            '0 2' => 'Fine JPEG',
            '0 3' => 'Extra Fine JPEG',
            '1 1' => 'RAW + Standard JPEG',
            '1 2' => 'RAW + Fine JPEG',
            '1 3' => 'RAW + Extra Fine JPEG',
# 0x2032 - first seen for ILCE-7SM3, July 2020
# 0x2033 - first seen for ILCE-7SM3, July 2020
# 0x2034 - first seen for ILCE-7SM3, July 2020
# 0x2035 - first seen for ILCE-7SM3, July 2020
# 0x2036 - first seen for ILCE-7SM3, July 2020
# 0x2037 - first seen for ILCE-7SM3, July 2020
# 0x2039 - first seen for ILCE-7SM3, July 2020
    # 0x31 (e) for ILCE-1, 7SM3
        Valid from July 2020 for ILCE-1/7SM3.
    0x002a => {
    },
    NOTES => 'NEX and ILCE models only.',
    NOTES => 'Valid for the ILCE-1/7SM3.',
	'afareamode' => { 124 => '0.2', 177 => 0x33, 181 => 0xe, 189 => 0x0, 190 => 0x5, 311 => 0xf, 378 => 0x1205, 391 => [0xa,0x3a], 398 => 0x11, 399 => 0x10, 400 => 0x24, 411 => 0xb043, 435 => 0x17 },
	'afareapointsize' => { 124 => '0.3' },
	'afareazonesize' => { 124 => '0.4' },
	'clarity' => { 225 => 0x35, 226 => 0x3d, 468 => 'Clarity', 470 => 'Clarity' },
	'highlights' => { 462 => 'Highlights' },
	'internalserialnumber' => { 62 => 0x96, 74 => 0x9, 125 => 0x10, 184 => 0x49dc, 287 => 0x18, 289 => 0x102, 308 => 0x500, 311 => 0x25, 326 => 0x4, 378 => 0x5, 429 => [0x7c,0xf0], 430 => 0x88, 431 => 0x88 },
	'shadows' => { 117 => 0xfe52, 462 => 'Shadows', 468 => 'Shadows', 470 => 'Shadows' },
	'whitepoint' => { 117 => 0x13e, 346 => 0x201, 490 => 'WhitePoint' },
	'jumbfid' => 1,
	'jumbflabel' => 1,
	'jumbfsignature' => 1,
	'jumbftype' => 1,
They contain a total of 24102 tags, with 15604 unique tag names.
    0.1    FocusMode2                           int32u & 0xff
    0.2    AFAreaMode                           int32u & 0xf00
    0.3    AFAreaPointSize                      int32u & 0xf000
    0.4    AFAreaZoneSize                       int32u & 0xf0000
Valid from July 2020 for ILCE-1/7SM3.
NEX and ILCE models only.
Valid for the ILCE-1/7SM3.
  'id'                 JUMBFID                  no
  'label'              JUMBFLabel               no
  'signature'          JUMBFSignature           no
  'type'               JUMBFType                no
And they extracted by default from MacOS "._" files when reading
Version: 12.23
[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.23
[File, System, Time] FileAccessDate - File Access Date/Time: 2021:04:01 13:20:48-04:00
[JUMBF, JUMBF, Image] type - JUMBF Type: cacb-0011-0010-800000aa00389b71
[JUMBF, JUMBF, Image] label - JUMBF Label: cai
[JUMBF, JUMBF, Image] type - JUMBF Type: cast-0011-0010-800000aa00389b71
[JUMBF, JUMBF, Image] label - JUMBF Label: cb.reuters_1
[JUMBF, JUMBF, Image] type - JUMBF Type: caas-0011-0010-800000aa00389b71
[JUMBF, JUMBF, Image] label - JUMBF Label: cai.assertions
[JUMBF, JUMBF, Image] type - JUMBF Type: json-0011-0010-800000aa00389b71
[JUMBF, JUMBF, Image] label - JUMBF Label: adobe.asset.info
[JUMBF, JUMBF, Image] type - JUMBF Type: json-0011-0010-800000aa00389b71
[JUMBF, JUMBF, Image] label - JUMBF Label: cai.location.broad
[JUMBF, JUMBF, Image] type - JUMBF Type: json-0011-0010-800000aa00389b71
[JUMBF, JUMBF, Image] label - JUMBF Label: cai.rights
[JUMBF, JUMBF, Image] type - JUMBF Type: cacb-####-####-######aa#####b##
[JUMBF, JUMBF, Image] label - JUMBF Label: cai
[JUMBF, JUMBF, Image] type - JUMBF Type: cast-####-####-######aa#####b##
[JUMBF, JUMBF, Image] label - JUMBF Label: cb.reuters_#
[JUMBF, JUMBF, Image] type - JUMBF Type: caas-####-####-######aa#####b##
[JUMBF, JUMBF, Image] label - JUMBF Label: cai.assertions
[JUMBF, JUMBF, Image] type - JUMBF Type: json-####-####-######aa#####b##
[JUMBF, JUMBF, Image] label - JUMBF Label: adobe.asset.info
[JUMBF, JUMBF, Image] type - JUMBF Type: json-####-####-######aa#####b##
[JUMBF, JUMBF, Image] label - JUMBF Label: cai.location.broad
[JUMBF, JUMBF, Image] type - JUMBF Type: json-####-####-######aa#####b##
[JUMBF, JUMBF, Image] label - JUMBF Label: cai.rights
[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.23
[File, System, Time] FileModifyDate - File Modification Date/Time: 2021:04:01 13:21:08-04:00
[File, System, Time] FileAccessDate - File Access Date/Time: 2021:04:01 13:21:08-04:00
[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2021:04:01 13:21:08-04:00
[JUMBF, JUMBF, Image] type - JUMBF Type: cacb-0011-0010-800000aa00389b71
[JUMBF, JUMBF, Image] label - JUMBF Label: cai
[JUMBF, JUMBF, Image] type - JUMBF Type: cast-0011-0010-800000aa00389b71
[JUMBF, JUMBF, Image] label - JUMBF Label: cb.reuters_1
[JUMBF, JUMBF, Image] type - JUMBF Type: caas-0011-0010-800000aa00389b71
[JUMBF, JUMBF, Image] label - JUMBF Label: cai.assertions
[JUMBF, JUMBF, Image] type - JUMBF Type: json-0011-0010-800000aa00389b71
[JUMBF, JUMBF, Image] label - JUMBF Label: adobe.asset.info
[JUMBF, JUMBF, Image] type - JUMBF Type: json-0011-0010-800000aa00389b71
[JUMBF, JUMBF, Image] label - JUMBF Label: cai.location.broad
[JUMBF, JUMBF, Image] type - JUMBF Type: json-0011-0010-800000aa00389b71
[JUMBF, JUMBF, Image] label - JUMBF Label: cai.rights
my $version = '12.23';
             -- Generated by ExifTool 12.23 --
Fixed code: Apr. 13, 2021 - Version 12.24

  - Added a new PhaseOne RawFormat value (thanks LibRaw)
  - Decode a new Sony tag (thanks Jos Roost)
  - Decode a few new Panasonic and FujiFilm tags (thanks LibRaw and Greybeard)
  - Patched security vulnerability in DjVu reader
  - Updated acdsee.config in distribution (thanks StarGeek)
  - Recognize AutoCAD DXF files
  - More work on experimental JUMBF read support
  - More work on experimental JXL read/write support

   "version" : "12.24",
version: 12.24
  gzip -dc Image-ExifTool-12.24.tar.gz | tar -xf -
  cd Image-ExifTool-12.24
#               The following tags are created in the XMP-acdsee-rs group
#                   RegionInfoACDSee : The structured tag for the ACDSee regions
#                                      (similar to XMP-mwg-rs:RegionInfo)
#
#                   The following tags are the width, height, and unit of the
#                   image at the time of processing  when storing image region
#                   metadata.  They are similar to the AppliedToDimensions tags
#                   of the MWG regions.
#                       ACDSeeRegionAppliedToDimensionsH : Height of the image
#                       ACDSeeRegionAppliedToDimensionsUnit : Unit of the image
#                       ACDSeeRegionAppliedToDimensionsW : Width of the image
#
#                   Actual region data, stored in an array.  These flattened tags
#                   are treated as List Type tags.  There are two region types,
#                   the ALYArea and the DLYArea.  The ALYArea tags tags assigned
#                   by ACDSee and are usually square in dimensions.  The DLYArea
#                   tags are both the tags assigned by ACDSee (but possibly
#                   rectangular instead of square) as well as any  manual
#                   assigned tags.  They are similar to the area tags of the MWG
#                   regions.
#                       ACDSeeRegionDLYAreaH : Height of DLY region
#                       ACDSeeRegionDLYAreaW : Width of DLY region
#                       ACDSeeRegionDLYAreaX : X centerpoint of DLY region
#                       ACDSeeRegionDLYAreaY : Y centerpoint of DLY region
#                       ACDSeeRegionALYAreaH : Height of ALY region
#                       ACDSeeRegionALYAreaW : Width of ALY region
#                       ACDSeeRegionALYAreaX : X centerpoint of ALY region
#                       ACDSeeRegionALYAreaY : Y centerpoint of ALY region
#                       ACDSeeRegionName : Name of region
#                       ACDSeeRegionType : Type of region
#                       ACDSeeRegionNameAssignType : How the type was assigned.
#                                                    "Manual" is the only known
#                                                    entry at this time
#
#               Conversion tags.  These tags can be used to convert other region
#               type tags to ACDSee regions.
#                   MPRegion2ACDSeeRegion : Converts a Microsoft RegionInfoMP
#                   IPTCRegion2ACDSeeRegion : Converts an IPTC ImageRegion
#                   MWGRegion2ACDSeeRegion : Converts a MWG RegionInfo
#
# Usage:        To set individual tags
#               exiftool -config acdsee.config -ACDSEETAG=VALUE FILE ...
#
#               To convert Microsoft Regions to ACDSee regions
#               exiftool -config acdsee.config "-RegionInfoACDSee<MPRegion2ACDSeeRegion" File ...
#               To convert IPTC regions to ACDSee regions
#               exiftool -config acdsee.config "-RegionInfoACDSee<IPTCRegion2ACDSeeRegion" File ...
#               To convert MWG Regions to ACDSee regions
#               exiftool -config acdsee.config "-RegionInfoACDSee<MWGRegion2ACDSeeRegion" File ...
#               2021/04/08 - BKW Added tags to convert from Microsoft, IPTC,
#                            and MWG regions to ACDSee regions based upon
#                            convert_regions.config.  Expanded docs.
#                            Shortened ADCSee tag names and added shortcuts
#                            from original names to new names, for example
#                            "RegionInfoACDSeeAppliedToDimensions*" -> "ACDSeeRegionAppliedToDimensions*"
#                            "RegionInfoACDSeeRegionList* -> "ACDSeeRegion*"
use Data::Dumper;
    'w'         => { Writable => 'real' },
    'h'         => { Writable => 'real' },
    'unit'      => { },
    # new XMP namespaces for ACDSee regions
    'Image::ExifTool::Composite' => {
    # create an ACDSee RegionInfo structure from a Microsoft RegionInfoMP structure
        MPRegion2ACDSeeRegion => {
            Require => {
                0 => 'RegionInfoMP',
                1 => 'ImageWidth',
                2 => 'ImageHeight',
            },
            ValueConv => q{
                my ($rgn, @newRgns);
                foreach $rgn (@{$val[0]{Regions}}) {
                    my $name = $$rgn{PersonDisplayName};
                    next unless $$rgn{Rectangle} or defined $name;
                    my %newRgn = ( Type => 'Face' );
                    if (defined $name) {
                        # don't add ignored faces
                        next if $name eq 'ffffffffffffffff';
                        $newRgn{Name} = $name;
                    }
                    if ($$rgn{Rectangle}) {
                        my @rect = split /\s*,\s*/, $$rgn{Rectangle};
                        $newRgn{DLYArea} = {
                            X => $rect[0] + $rect[2]/2,
                            Y => $rect[1] + $rect[3]/2,
                            W => $rect[2],
                            H => $rect[3],
                        } if @rect == 4;
                    }
                    push @newRgns, \%newRgn;
                }
                return {
                    AppliedToDimensions => { W => $val[1], H => $val[2], Unit => 'pixel' },
                    RegionList => \@newRgns,
                };
            },
        },
        # create an ACDSee RegionInfo structure from an IPTC ImageRegion list
        IPTCRegion2ACDSeeRegion => {
            Require => {
                0 => 'ImageRegion',
                1 => 'ImageWidth',
                2 => 'ImageHeight',
            },
            ValueConv => q{
                my ($rgn, @newRgns);
                my $rgns = ref $val[0] eq 'ARRAY' ? $val[0] : [ $val[0] ]; 
                foreach $rgn (@$rgns) {
                    my %newRgn = ( Type => 'Face' );
                    if ($$rgn{RegionBoundary} and $$rgn{RegionBoundary}{RbShape} eq 'rectangle') {
                        my @rect = @{$$rgn{RegionBoundary}}{'RbX','RbY','RbW','RbH'};
                        if ($$rgn{RegionBoundary}{RbUnit} eq 'pixel') {
                            $rect[0] /= $val[1],  $rect[2] /= $val[1];
                            $rect[1] /= $val[2];  $rect[3] /= $val[2];
                        }
                        $newRgn{'DLYArea'} = {
                            X => $rect[0] + $rect[2]/2,
                            Y => $rect[1] + $rect[3]/2,
                            W => $rect[2],
                            H => $rect[3],
                        };
                    } else {
                        next unless defined $$rgn{Name};
                    }
                    $newRgn{Name} = $$rgn{Name} if defined $$rgn{Name};
                    push @newRgns, \%newRgn;
                }
                return {
                    AppliedToDimensions => { 'W' => $val[1], 'H' => $val[2], 'Unit' => 'pixel' },
                    RegionList => \@newRgns,
                };
            },
        },

        # create an MWG RegionInfo structure from an IPTC ImageRegion list
        MWGRegion2ACDSeeRegion => {
            Require => {
                0 => 'RegionInfo',
                1 => 'ImageWidth',
                2 => 'ImageHeight',
            },
            ValueConv => q{
                my ($rgn, @newRgns);
                my %newRgn;
                foreach $rgn (@{$val[0]{RegionList}}) {
                    next unless $$rgn{Area} or defined $$rgn{Name};
                    my %newRgn;
                    if ($$rgn{Area}) {
                        $newRgn{'DLYArea'} = {
                            'X' => $$rgn{Area}{'X'},
                            'Y' => $$rgn{Area}{'Y'},
                            'W' => $$rgn{Area}{'W'},
                            'H' => $$rgn{Area}{'H'},
                        };
                    };
                    $newRgn{Name} = $$rgn{Name} if defined $$rgn{Name};
                    $newRgn{'Type'} = $$rgn{'Type'} if defined $$rgn{'Type'};
                    push @newRgns, \%newRgn;
                }
                return {
                    'AppliedToDimensions' => $val[0]{'AppliedToDimensions'},
                    RegionList => \@newRgns,
                }
            },
        },
        ####
    },
        FlatName => 'ACDSee',
                FlatName => 'Region',
            AppliedToDimensions => { 
            FlatName => 'RegionAppliedToDimensions',Struct => \%sACDSeeDimensions },
# Shortcuts to old names added so as not to break previously used commands
%Image::ExifTool::UserDefined::Shortcuts = (
    RegionInfoACDSeeAppliedToDimensionsH        => 'ACDSeeRegionAppliedToDimensionsH',
    RegionInfoACDSeeAppliedToDimensionsUnit     => 'ACDSeeRegionAppliedToDimensionsUnit',
    RegionInfoACDSeeAppliedToDimensionsW        => 'ACDSeeRegionAppliedToDimensionsW',
    RegionInfoACDSeeRegionListDLYAreaH          => 'ACDSeeRegionDLYAreaH',
    RegionInfoACDSeeRegionListDLYAreaW          => 'ACDSeeRegionDLYAreaW',
    RegionInfoACDSeeRegionListDLYAreaX          => 'ACDSeeRegionDLYAreaX',  
    RegionInfoACDSeeRegionListDLYAreaY          => 'ACDSeeRegionDLYAreaY',
    RegionInfoACDSeeRegionListALGAreaH          => 'ACDSeeRegionALGAreaH',
    RegionInfoACDSeeRegionListALGAreaW          => 'ACDSeeRegionALGAreaW',
    RegionInfoACDSeeRegionListALGAreaX          => 'ACDSeeRegionALGAreaX',
    RegionInfoACDSeeRegionListALGAreaY          => 'ACDSeeRegionALGAreaY',
    RegionInfoACDSeeRegionListName              => 'ACDSeeRegionName',
    RegionInfoACDSeeRegionListType              => 'ACDSeeRegionType',
    RegionInfoACDSeeRegionListNameAssignType    => 'ACDSeeRegionNameAssignType',
);

# Forced -struct option during debugging
#%Image::ExifTool::UserDefined::Options = (
#   Struct => 1,
#);
my $version = '12.24';
    -- Generated by ExifTool 12.24 --
    (mentioned in the <a href="TagNames/index.html">Tag Name documentation</a>) as a block.</td>
    of some additional tags as mentioned in the <a href="TagNames/index.html">Tag Name documentation</a>.</td>
(                           -- Image::ExifTool 12.24 --                                     1)Tj
(                           -- Image::ExifTool 12.24 --                                     2)Tj
(                           -- Image::ExifTool 12.24 --                                     3)Tj
(                           -- Image::ExifTool 12.24 --                                     4)Tj
(                           -- Image::ExifTool 12.24 --                                     5)Tj
/Length 3828
(                           -- Image::ExifTool 12.24 --                                     6)Tj
(               Flag to extract some directories \(mentioned in the ExifTool tag)Tj
(               name documentation\) as a block.  Setting this to a value of 2)Tj
(               also prevents parsing the block to extract tags contained)Tj
T*
(               within.)Tj
/Length 4742
(                           -- Image::ExifTool 12.24 --                                     7)Tj
(           ByteOrder)Tj
(               The byte order for newly created EXIF segments when writing.)Tj
T*
/Length 4413
(                           -- Image::ExifTool 12.24 --                                     8)Tj
(               Note that this option affects some types of information when)Tj
(               reading/writing the file and other types when getting/setting)Tj
T*
/Length 4970
(                           -- Image::ExifTool 12.24 --                                     9)Tj
(               Format for printing date/time values.  See "strftime" in the)Tj
(               POSIX package for details about the format string.  If date can)Tj
T*
/Length 4500
(                           -- Image::ExifTool 12.24 --                                    10)Tj
(               and FileType are generated.  For 3, the file header is read to)Tj
(               provide an educated guess at FileType.  For 4, the file is not)Tj
T*
/Length 4721
(                           -- Image::ExifTool 12.24 --                                    11)Tj
(                   'K', 'k' or 'km/h'  - km/h)Tj
(                   'M', 'm' or 'mph'   - mph)Tj
T*
/Length 4308
(                           -- Image::ExifTool 12.24 --                                    12)Tj
0 -1.6333 TD
(               ValueConv values.  Default is ', '.)Tj
0 -2.2 TD
/Length 4459
(                           -- Image::ExifTool 12.24 --                                    13)Tj
(               Flag to request all tags to be extracted.  This causes some)Tj
(               tags to be generated which normally would not be unless)Tj
T*
/Length 4325
(                           -- Image::ExifTool 12.24 --                                    14)Tj
(               of causing the date/time to be reformatted according to PNG 1.2)Tj
(               recommendation \(RFC-1123\) when writing, and a warning to be)Tj
T*
/Length 4218
(                           -- Image::ExifTool 12.24 --                                    15)Tj
0 -2.7333 TD
/Length 4168
(                           -- Image::ExifTool 12.24 --                                    16)Tj
0 -1.6333 TD
(           XMPAutoConv.)Tj
0 -2.2 TD
/Length 4009
(                           -- Image::ExifTool 12.24 --                                    17)Tj
0 -2.7333 TD
/Length 4352
(                           -- Image::ExifTool 12.24 --                                    18)Tj
0 -1.6333 TD
(           'Group#'\))Tj
(           3\) [optional] Secondary sort order \('File', 'Tag' or 'Descr'\))Tj
T*
/Length 3961
(                           -- Image::ExifTool 12.24 --                                    19)Tj
0 -1.6333 TD
(       an optional group specifier\), use "GetInfo" instead.)Tj
0 -2.2 TD
/Length 4027
(                           -- Image::ExifTool 12.24 --                                    20)Tj
0 -1.6333 TD
(           $success = $exifTool->SetNewValue\($tag, $value\);)Tj
0 -2.2 TD
(                           -- Image::ExifTool 12.24 --                                    21)Tj
(           using a Group option argument.  Also, a '#' may be appended to the)Tj
(           tag name \(eg. 'EXIF:Orientation#'\), with the same effect as setting)Tj
T*
(                           -- Image::ExifTool 12.24 --                                    22)Tj
0 -1.6333 TD
(               names indicating 'unsafe' and 'protected' tags.  Default is 0.)Tj
0 -2.2 TD
/Length 4656
(                           -- Image::ExifTool 12.24 --                                    23)Tj
(           1\) Tag name \(case sensitive, may be prefixed by family 0, 1 or 7)Tj
0 -1.1 TD
/Length 4480
(                           -- Image::ExifTool 12.24 --                                    24)Tj
(           and/or suffixed by a '#' to disable print conversion.  Copied tags)Tj
(           may also be added or deleted from a list with arguments of the form)Tj
T*
/Length 4371
(                           -- Image::ExifTool 12.24 --                                    25)Tj
(           The "Struct" option is enabled by default for tags extracted by)Tj
(           this routine.  This allows the hierarchy of complex structures to)Tj
T*
/Length 4104
(                           -- Image::ExifTool 12.24 --                                    26)Tj
(       Notes:)Tj
(           Equivalent to, but more efficient than calling "WriteInfo" when)Tj
T*
/Length 3733
(                           -- Image::ExifTool 12.24 --                                    27)Tj
0 -1.6333 TD
(           0\) ExifTool object reference)Tj
0 -2.2 TD
/Length 5021
(                           -- Image::ExifTool 12.24 --                                    28)Tj
(           The string is simplified to remove a leading 'Main:' and adjacent)Tj
0 -1.1 TD
/Length 4380
(                           -- Image::ExifTool 12.24 --                                    29)Tj
0 -1.6333 TD
(           See "GetAllGroups [static]" for complete lists of group names.)Tj
0 -2.2 TD
/Length 4886
(                           -- Image::ExifTool 12.24 --                                    30)Tj
(       Return Values:)Tj
0 -1.1 TD
/Length 4812
(                           -- Image::ExifTool 12.24 --                                    31)Tj
(           view, ICC_Profile, ICC_Profile#, ID3, ID3v1, ID3v1_Enh, ID3v2_2,)Tj
(           ID3v2_3, ID3v2_4, IFD0, IFD1, IPTC, IPTC#, ISO, ITC, Insta360,)Tj
T*
/Length 4896
(                           -- Image::ExifTool 12.24 --                                    32)Tj
(       Return Values:)Tj
(           A list of deletable group names in alphabetical order.  The current)Tj
T*
/Length 4690
(                           -- Image::ExifTool 12.24 --                                    33)Tj
0 -1.6333 TD
(           my $creatable = Image::ExifTool::CanCreate\($filename\);)Tj
0 -2.2 TD
/Length 5396
(                           -- Image::ExifTool 12.24 --                                    34)Tj
(           The encodings used to store strings in the various metadata)Tj
(           formats.  These encodings may be changed for certain types of)Tj
T*
/Length 4692
(                           -- Image::ExifTool 12.24 --                                    35)Tj
0 -2.7333 TD
/Length 5257
(                           -- Image::ExifTool 12.24 --                                    36)Tj
0 -1.6333 TD
(       respectively.)Tj
0 -2.2 TD
(perl v5.18.4                      2021-04-13                       EXIFTOOL\(1\))Tj
/CreationDate (D:20210413110922-04'00')
/ModDate (D:20210413110922-04'00')
0000170479 00000 n 
0000169480 00000 n 
0000169881 00000 n 
0000168945 00000 n 
0000173581 00000 n 
0000170559 00000 n 
0000170640 00000 n 
0000170723 00000 n 
0000170806 00000 n 
0000170889 00000 n 
0000028248 00000 n 
0000170972 00000 n 
0000028355 00000 n 
0000033150 00000 n 
0000171055 00000 n 
0000033257 00000 n 
0000037723 00000 n 
0000171138 00000 n 
0000037830 00000 n 
0000042853 00000 n 
0000171221 00000 n 
0000042960 00000 n 
0000047513 00000 n 
0000171304 00000 n 
0000047620 00000 n 
0000052394 00000 n 
0000174107 00000 n 
0000173716 00000 n 
0000171388 00000 n 
0000052501 00000 n 
0000056862 00000 n 
0000171472 00000 n 
0000056969 00000 n 
0000061481 00000 n 
0000171556 00000 n 
0000061588 00000 n 
0000065966 00000 n 
0000171640 00000 n 
0000066073 00000 n 
0000070344 00000 n 
0000171724 00000 n 
0000070451 00000 n 
0000074672 00000 n 
0000171808 00000 n 
0000074779 00000 n 
0000078841 00000 n 
0000171892 00000 n 
0000078948 00000 n 
0000083353 00000 n 
0000171976 00000 n 
0000083460 00000 n 
0000087474 00000 n 
0000172060 00000 n 
0000087581 00000 n 
0000091661 00000 n 
0000172144 00000 n 
0000091768 00000 n 
0000096460 00000 n 
0000173854 00000 n 
0000172228 00000 n 
0000096567 00000 n 
0000101213 00000 n 
0000172312 00000 n 
0000101320 00000 n 
0000106029 00000 n 
0000172396 00000 n 
0000106136 00000 n 
0000110669 00000 n 
0000172480 00000 n 
0000110776 00000 n 
0000115200 00000 n 
0000172564 00000 n 
0000115307 00000 n 
0000119464 00000 n 
0000172648 00000 n 
0000119571 00000 n 
0000123357 00000 n 
0000172732 00000 n 
0000123464 00000 n 
0000128538 00000 n 
0000172816 00000 n 
0000128645 00000 n 
0000133078 00000 n 
0000172900 00000 n 
0000133185 00000 n 
0000138124 00000 n 
0000172984 00000 n 
0000138231 00000 n 
0000143096 00000 n 
0000173992 00000 n 
0000173070 00000 n 
0000143204 00000 n 
0000148154 00000 n 
0000173158 00000 n 
0000148262 00000 n 
0000153006 00000 n 
0000173246 00000 n 
0000153114 00000 n 
0000158564 00000 n 
0000173334 00000 n 
0000158672 00000 n 
0000163418 00000 n 
0000173422 00000 n 
0000163526 00000 n 
0000168837 00000 n 
0000169085 00000 n 
0000169288 00000 n 
0000173510 00000 n 
0000173539 00000 n 
0000174213 00000 n 
0000174337 00000 n 
/ID [<560ec6fe6e5440771a95f440aabbe0e8><560ec6fe6e5440771a95f440aabbe0e8>]
174409
/CreationDate (D:20210413110922-04'00')
/ModDate (D:20210413110922-04'00')
/ID [<aaba228f321479095b428dfe7ef65dcb><aaba228f321479095b428dfe7ef65dcb>]
  <br>2 = No flash &amp; flash
  <br>6 = Pixel Shift</span></td></tr>
<td title='0x1105 = 4357'>0x1105</td>
<td>PixelShiftShots</td>
<td class=c>int16u</td>
<td>&nbsp;</td></tr>
<tr>
<td title='0x1106 = 4358'>0x1106</td>
<td>PixelShiftOffset</td>
<td class=c>rational64s[2]</td>
<td>&nbsp;</td></tr>
<tr class=b>
<td><span class=s>[val &amp; 0xf]
  <br>2 = AF-C</span></td></tr>
<td>PreAF</td>
<td class=c>int32u</td>
<td><span class=s>[val &gt;&gt; 4 &amp; 0xf]
  <br>0 = Off
  <br>1 = On</span></td></tr>
<tr>
<td class=r title='0 = 0x0'>0.3</td>
<tr class=b>
<td class=r title='0 = 0x0'>0.4</td>
<tr>
<td class=r title='0 = 0x0'>0.5</td>
<br><i>Last revised Apr 13, 2021</i>
<td>'jumd-flags'</td>
<td>JUMDFlags</td>
<td><span class=s>Bit 0 = Requestable
  <br>Bit 1 = Label
  <br>Bit 2 = ID
  <br>Bit 3 = Signature</span></td></tr>
<td>'jumd-id'</td>
<td>JUMDID</td>
<td>'jumd-label'</td>
<td>JUMDLabel</td>
<td>'jumd-sig'</td>
<td>JUMDSignature</td>
<td class=c>no</td>
<td>&nbsp;</td></tr>
<tr>
<td>'jumd-type'</td>
<td>JUMDType</td>
<br><i>Last revised Apr 13, 2021</i>
And they are extracted by default from MacOS &quot;._&quot; files when reading
<br><i>Last revised Apr 13, 2021</i>
<tr>
<td title='0x035b = 859'>0x035b</td>
<td>CorrelatedColorTemp</td>
<td class=c>int16u</td>
<td>&nbsp;</td></tr>
<tr class=b>
<td title='0x035c = 860'>0x035c</td>
<td>ColorTint</td>
<td class=c>int16s</td>
<td>&nbsp;</td></tr>
<tr>
<td title='0x035d = 861'>0x035d</td>
<td>WhitePoint</td>
<td class=c>rational64u[2]</td>
<td>&nbsp;</td></tr>
<br><i>Last revised Apr 13, 2021</i>
<td><table class=cols><tr>
  <td>1 = RAW 1
  <br>3 = IIQ L</td><td>&nbsp;&nbsp;</td>
  <td>5 = IIQ S
  <br>6 = IIQ Sv2
  <br>8 = IIQ L16</td></tr></table>
</td></tr>
<br><i>Last revised Apr 13, 2021</i>
  <br>6 = RAW + JPEG/HEIF
  <br>9 = Light
  <br>&#39;0 1&#39; = Standard
  <br>&#39;0 2&#39; = Fine
  <br>&#39;0 3&#39; = Extra Fine
  <br>&#39;0 4&#39; = Light
  <br>&#39;1 1&#39; = RAW + Standard
  <br>&#39;1 2&#39; = RAW + Fine
  <br>&#39;1 3&#39; = RAW + Extra Fine
  <br>&#39;1 4&#39; = RAW + Light</td></tr></table>
<td title='0x2032 = 8242'>0x2032</td>
<td>Shadows</td>
<td class=c>int32s</td>
<td>&nbsp;</td></tr>
<tr>
<td title='0x2033 = 8243'>0x2033</td>
<td>Highlights</td>
<td class=c>int32s</td>
<td>&nbsp;</td></tr>
<tr class=b>
<td title='0x2034 = 8244'>0x2034</td>
<td>Fade</td>
<td class=c>int32s</td>
<td>&nbsp;</td></tr>
<tr>
<td title='0x2035 = 8245'>0x2035</td>
<td>SharpnessRange</td>
<td class=c>int32s</td>
<td>&nbsp;</td></tr>
<tr class=b>
<td title='0x2036 = 8246'>0x2036</td>
<td>Clarity</td>
<td class=c>int32s</td>
<td>&nbsp;</td></tr>
<tr>
<td title='0x2037 = 8247'>0x2037</td>
<td>FocusFrameSize</td>
<td class=c>no</td>
<td>&nbsp;</td></tr>
<tr class=b>
<td title='0x2039 = 8249'>0x2039</td>
<td>JPEG-HEIFSwitch</td>
<td class=c>int16u</td>
<td><span class=s>0 = JPEG
  <br>1 = HEIF
  <br>65535 = n/a</span></td></tr>
<tr>
<tr class=b>
<tr>
<tr class=b>
<tr>
<tr class=b>
<tr>
<tr class=b>
<tr>
<tr class=b>
<tr>
<tr class=b>
<tr>
<tr class=b>
<tr>
<tr class=b>
<tr>
<tr class=b>
<tr>
<tr class=b>
<tr>
<tr class=b>
<tr>
<tr class=b>
<tr>
<tr class=b>
<tr>
<tr class=b>
<tr>
<tr class=b>
<tr>
<tr class=b>
<tr>
<tr class=b>
<tr>
<tr class=b>
<tr>
<tr class=b>
<tr>
<tr class=b>
<tr>
<tr class=b>
<tr>
<tr class=b>
  <br>34 = Gamma HLG3
  <br>37 = FL
  <br>39 = IN
  <br>40 = SH</td></tr></table>
  <br>34 = Gamma HLG3
  <br>37 = FL
  <br>39 = IN
  <br>40 = SH</td></tr></table>
  <br>34 = Gamma HLG3
  <br>37 = FL
  <br>39 = IN
  <br>40 = SH</td></tr></table>
  <br>34 = Gamma HLG3
  <br>37 = FL
  <br>39 = IN
  <br>40 = SH</td></tr></table>
  <br>34 = Gamma HLG3
  <br>37 = FL
  <br>39 = IN
  <br>40 = SH</td></tr></table>
  <br>34 = Gamma HLG3
  <br>37 = FL
  <br>39 = IN
  <br>40 = SH</td></tr></table>
  <br>34 = Gamma HLG3
  <br>37 = FL
  <br>39 = IN
  <br>40 = SH</td></tr></table>
  <br>34 = Gamma HLG3
  <br>37 = FL
  <br>39 = IN
  <br>40 = SH</td></tr></table>
  <br>34 = Gamma HLG3
  <br>37 = FL
  <br>39 = IN
  <br>40 = SH</td></tr></table>
  <br>34 = Gamma HLG3
  <br>37 = FL
  <br>39 = IN
  <br>40 = SH</td></tr></table>
  <br>34 = Gamma HLG3
  <br>37 = FL
  <br>39 = IN
  <br>40 = SH</td></tr></table>
  <br>34 = Gamma HLG3
  <br>37 = FL
  <br>39 = IN
  <br>40 = SH</td></tr></table>
  <br>34 = Gamma HLG3
  <br>37 = FL
  <br>39 = IN
  <br>40 = SH</td></tr></table>
  <br>34 = Gamma HLG3
  <br>37 = FL
  <br>39 = IN
  <br>40 = SH</td></tr></table>
  <br>34 = Gamma HLG3
  <br>37 = FL
  <br>39 = IN
  <br>40 = SH</td></tr></table>
  <br>34 = Gamma HLG3
  <br>37 = FL
  <br>39 = IN
  <br>40 = SH</td></tr></table>
  <br>34 = Gamma HLG3
  <br>37 = FL
  <br>39 = IN
  <br>40 = SH</td></tr></table>
  <br>34 = Gamma HLG3
  <br>37 = FL
  <br>39 = IN
  <br>40 = SH</td></tr></table>
<p>Valid from July 2020 for ILCE-1/7SM3, ILME-FX3.</p>
<tr class=b>
<td class=r title='138 = 0x8a'>138</td>
<td>InternalSerialNumber</td>
<td class=c title=' ~ = Writable only with -n'>int8u[6]~</td>
<td>&nbsp;</td></tr>
  <br>3 = JPEG + MPO
  <br>1 = JPEG
  <br>2 = RAW
  <br>3 = RAW + JPEG
  <br>4 = HEIF
  <br>6 = RAW + HEIF</span></td></tr>
<p>E-mount cameras only.</p>
<p>Valid for the ILCE-1/7SM3, ILME-FX3.</p>
  <br>34 = Gamma HLG3
  <br>37 = FL
  <br>39 = IN
  <br>40 = SH</td></tr></table>
<br><i>Last revised Apr 13, 2021</i>
They contain a total of 24118 tags, with 15614 unique tag names.
<br><i>Last revised Apr 13, 2021</i>
<pre><code>    -- Generated by ExifTool 12.24 --
(                              -- ExifTool 12.24 --                                     1)Tj
(                              -- ExifTool 12.24 --                                     2)Tj
(                              -- ExifTool 12.24 --                                     3)Tj
(                              -- ExifTool 12.24 --                                     4)Tj
(                              -- ExifTool 12.24 --                                     5)Tj
(                              -- ExifTool 12.24 --                                     6)Tj
(                              -- ExifTool 12.24 --                                     7)Tj
(                              -- ExifTool 12.24 --                                     8)Tj
(                              -- ExifTool 12.24 --                                     9)Tj
(                              -- ExifTool 12.24 --                                    10)Tj
(                              -- ExifTool 12.24 --                                    11)Tj
(                              -- ExifTool 12.24 --                                    12)Tj
(                              -- ExifTool 12.24 --                                    13)Tj
(                              -- ExifTool 12.24 --                                    14)Tj
(                              -- ExifTool 12.24 --                                    15)Tj
(                -- Generated by ExifTool 12.24 --)Tj
(                              -- ExifTool 12.24 --                                    16)Tj
(                              -- ExifTool 12.24 --                                    17)Tj
(                              -- ExifTool 12.24 --                                    18)Tj
(                              -- ExifTool 12.24 --                                    19)Tj
(                              -- ExifTool 12.24 --                                    20)Tj
(                              -- ExifTool 12.24 --                                    21)Tj
(                              -- ExifTool 12.24 --                                    22)Tj
(                              -- ExifTool 12.24 --                                    23)Tj
(                              -- ExifTool 12.24 --                                    24)Tj
(                              -- ExifTool 12.24 --                                    25)Tj
(                              -- ExifTool 12.24 --                                    26)Tj
(                              -- ExifTool 12.24 --                                    27)Tj
(                              -- ExifTool 12.24 --                                    28)Tj
(                              -- ExifTool 12.24 --                                    29)Tj
(                              -- ExifTool 12.24 --                                    30)Tj
(                              -- ExifTool 12.24 --                                    31)Tj
(                              -- ExifTool 12.24 --                                    32)Tj
(                              -- ExifTool 12.24 --                                    33)Tj
(                              -- ExifTool 12.24 --                                    34)Tj
(                              -- ExifTool 12.24 --                                    35)Tj
(                              -- ExifTool 12.24 --                                    36)Tj
(                              -- ExifTool 12.24 --                                    37)Tj
(                              -- ExifTool 12.24 --                                    38)Tj
(                              -- ExifTool 12.24 --                                    39)Tj
(perl v5.18.4                      2021-04-13                       EXIFTOOL\(1\))Tj
/CreationDate (D:20210413110921-04'00')
/ModDate (D:20210413110921-04'00')
/ID [<88f6ccfb20ef49d8fb5d8a90914f5aa9><88f6ccfb20ef49d8fb5d8a90914f5aa9>]
<a name='v12.24'><b>Apr. 13, 2021 - Version 12.24</b></a>
<ul>
<li>Added a new PhaseOne RawFormat value (thanks LibRaw)
<li>Decode a new Sony tag (thanks Jos Roost)
<li>Decode a few new Panasonic and FujiFilm tags (thanks LibRaw and Greybeard)
<li>Patched security vulnerability in DjVu reader
<li>Updated acdsee.config in distribution (thanks StarGeek)
<li>Recognize AutoCAD DXF files
<li>More work on experimental JUMBF read support
<li>More work on experimental JXL read/write support
</ul>

    <li>Added <a href="ExifTool.html#BlockExtract">BlockExtract option</a>
<a href="http://sourceforge.net/projects/exiftool/files/Image-ExifTool-12.24.tar.gz/download">
Download        Version 12.24</a> (4.7 MB) -
<a href="history.html">Apr. 13, 2021</a></b></td></tr></table></blockquote>
<a href="http://sourceforge.net/projects/exiftool/files/exiftool-12.24.zip/download">
         exiftool-12.24.zip</a> (6.4 MB)</b></td></tr></table></blockquote>
         ExifTool-12.24.dmg</a> (3.0 MB)</b></td></tr></table></blockquote>
<br><span class=lt>(The file you download should be named "<code>exiftool-12.24.zip</code>".)</span></li>
<br><span class=lt>(Double-click on "<code>exiftool-12.24.zip</code>" to open
<br><span class=lt>(The file you download should be named "<code>Image-ExifTool-12.24.tar.gz</code>".)</span></li>
<br><span class=lt>(The file you download should be named "<code>ExifTool-12.24.dmg</code>".)</span></li>
<br><span class=lt>(The file you download should be named "<code>Image-ExifTool-12.24.tar.gz</code>".)</span></li>
    tar -xzf Image-ExifTool-12.24.tar.gz
    cd Image-ExifTool-12.24
<blockquote class=red>"ExifTool-12.24.pkg" can't be opened because it is from an
<br><span class=lt>(The file you download should be named "<code>Image-ExifTool-12.24.tar.gz</code>".)</span></li>
    gzip -dc Image-ExifTool-12.24.tar.gz | tar -xf -
    cd Image-ExifTool-12.24
$VERSION = '12.24';
                MacOS PHP PCX DCX DWF DWG DXF WTV Torrent VCard LRI R3D AA PDB
                JXL MOI ISO ALIAS JSON MP3 DICOM PCD TXT);
                    X3F PS PDF ICC VRD DR4 JP2 JXL EXIF AI AIT IND MOV EXV FLIF);
    JP2  => [ qw(J2C JPC) ],
    DXF  => ['DXF',  'AutoCAD Drawing Exchange Format'],
    JXL  => ['JXL',  'JPEG XL'],
    DXF  => 'application/dxf',
    DXF  => 0,
    DXF  => '\s*0\s+\0?\s*SECTION\s+2\s+HEADER',
    JP2  => '(\0\0\0\x0cjP(  |\x1a\x1a)\x0d\x0a\x87\x0a|\xff\x4f\xff\x51\0)',
    JXL  => '\xff\x0a|\0\0\0\x0cJXL \x0d\x0a......ftypjxl ',
Flag to extract some directories (mentioned in the
L<ExifTool tag name documentation|Image::ExifTool::TagNames>) as a block. 
Setting this to a value of 2 also prevents parsing the block to extract tags
contained within.
$VERSION = '1.07';
            # convert C escape sequences, allowed in quoted text
            # (note: this only converts a few of them!)
            my %esc = ( a => "\a", b => "\b", f => "\f", n => "\n",
                        r => "\r", t => "\t", '"' => '"', '\\' => '\\' );
            $tok =~ s/\\(.)/$esc{$1}||'\\'.$1/egs;
$VERSION = '1.80';
            6 => 'Pixel Shift', #IB (GFX100S)
    0x1105 => { Name => 'PixelShiftShots',  Writable => 'int16u' }, #IB
    0x1106 => { Name => 'PixelShiftOffset', Writable => 'rational64s', Count => 2 }, #IB
        Mask => 0x0000000f,
            0x0 => 'AF-M',
            0x1 => 'AF-S',
            0x2 => 'AF-C',
        Name => 'PreAF',
        Mask => 0x00f0,
        PrintConv => {
            0 => 'Off',
            1 => 'On',
        },
    },
    0.3 => {
    0.4 => {
    0.5 => {
    'jumd-type' => {
        Name => 'JUMDType',
    'jumd-label' => { Name => 'JUMDLabel' },
    'jumd-flags' => {
        Name => 'JUMDFlags',
        PrintConv => { BITMASK => {
            0 => 'Requestable',
            1 => 'Label',
            2 => 'ID',
            3 => 'Signature',
        }},
    },
    'jumd-id'    => { Name => 'JUMDID', Description => 'JUMD ID' },
    'jumd-sig'   => { Name => 'JUMDSignature', PrintConv => 'unpack "H*", $val' },
    $et->HandleTag($tagTablePtr, 'jumd-type', substr($$dataPt, $pos, 16));
    $et->HandleTag($tagTablePtr, 'jumd-flags', $flags);
        $et->HandleTag($tagTablePtr, 'jumd-label', $name);
        $et->HandleTag($tagTablePtr, 'jumd-id', Get32u($dataPt, $pos));
        $et->HandleTag($tagTablePtr, 'jumd-sig', substr($$dataPt, $pos, 32));
# Returns: 1
    return 1;
            $$et{IsJXL})
# Returns: 1 on success, 0 if this wasn't a valid JPEG XL file, -1 on write error
    my $raf = $$dirInfo{RAF};
    my $outfile = $$dirInfo{OutFile};
    my ($hdr, $buff);

    return 0 unless $raf->Read($hdr,12) == 12;
    if ($hdr eq "\0\0\0\x0cJXL \x0d\x0a\x87\x0a") {
        # JPEG XL in ISO BMFF container
        $$et{IsJXL} = 1;
    } elsif ($hdr =~ /^\xff\x0a/) {
        # JPEG XL codestream
        if ($outfile) {
            if ($$et{OPTIONS}{IgnoreMinorErrors}) {
                $et->Warn('Wrapped JXL codestream in ISO BMFF container');
            } else {
                $et->Error('Will wrap JXL codestream in ISO BMFF container for writing',1);
                return 0;
            }
            $$et{IsJXL} = 2;
            my $buff = "\0\0\0\x0cJXL \x0d\x0a\x87\x0a\0\0\0\x14ftypjxl \0\0\0\0jxl ";
            # add metadata to empty ISO BMFF container
            $$dirInfo{RAF} = new File::RandomAccess(\$buff);
        } else {
            $et->Warn('JPEG XL codestream support is currently experimental',1);
            $et->SetFileType('JXL Codestream','image/jxl', 'jxl');
            return ProcessJXLCodestream($et, \$hdr);
        }
    } else {
        return 0;
    }
    $raf->Seek(0,0) or $et->Error('Seek error'), return 0;
    $et->Warn('JPEG XL support is currently experimental',1);

    my $success = ProcessJP2($et, $dirInfo);

    if ($outfile and $success > 0 and $$et{IsJXL} == 2) {
        # attach the JXL codestream box to the ISO BMFF file
        $raf->Seek(0,2) or return -1;
        my $size = $raf->Tell();
        $raf->Seek(0,0) or return -1;
        SetByteOrder('MM');
        Write($outfile, Set32u($size + 8), 'jxlc') or return -1;
        while ($raf->Read($buff, 65536)) {
            Write($outfile, $buff) or return -1;
        }
    }
    return $success;
        And they are extracted by default from MacOS "._" files when reading
                # 100ns intervals since Jan 1, 1601
        } elsif ($format eq 'vt_filetime') { # 'date' value inside a VT_VARIANT
                # 100ns intervals since Jan 1, 1601
    # 0x357 int32u - 0=DNG, 3162=JPG (ref 23)
    0x035b => { #IB
        Name => 'CorrelatedColorTemp', # (in Kelvin)
        Writable => 'int16u',
    },
    0x035c => { #IB
        Name => 'ColorTint', # (same units as Adobe is using)
        Writable => 'int16s',
    },
    0x035d => { #IB
        Name => 'WhitePoint', # (x/y)
        Writable => 'rational64u',
        Count => 2,
    },
$VERSION = '1.07';
            3 => 'IIQ L', # (now "L14", ref IB)
            6 => 'IIQ Sv2', # (now "S14" for "IIQ 14 Smart" and "IIQ 14 Sensor+", ref IB)
            8 => 'IIQ L16', #IB ("IIQ 16 Extended" and "IIQ 16 Large")
$VERSION = '3.40';
            6 => 'RAW + JPEG/HEIF',
            9 => 'Light', #JR
            ($$self{Model} =~ /^(SLT-|HV)/) or ($$self{Model} =~ /^(ILCE-|ILME-)/ and
            '0 1' => 'Standard',
            '0 2' => 'Fine',
            '0 3' => 'Extra Fine',
            '0 4' => 'Light', #JR
            '1 1' => 'RAW + Standard',
            '1 2' => 'RAW + Fine',
            '1 3' => 'RAW + Extra Fine',
            '1 4' => 'RAW + Light', #JR
# 0x2032 - 0x2039: from July 2020 for ILCE-7SM3, ILCE-1, ILME-FX3 and newer
    0x2032 => {
        Name => 'Shadows',
        Writable => 'int32s',
        PrintConv => '$val > 0 ? "+$val" : $val',
        PrintConvInv => '$val',
    },
    0x2033 => {
        Name => 'Highlights',
        Writable => 'int32s',
        PrintConv => '$val > 0 ? "+$val" : $val',
        PrintConvInv => '$val',
    },
    0x2034 => {
        Name => 'Fade',
        Writable => 'int32s',
        PrintConv => '$val > 0 ? "+$val" : $val',
        PrintConvInv => '$val',
    },
    0x2035 => {
        Name => 'SharpnessRange',
        Writable => 'int32s',
        PrintConv => '$val > 0 ? "+$val" : $val',
        PrintConvInv => '$val',
    },
    0x2036 => {
        Name => 'Clarity',
        Writable => 'int32s',
        PrintConv => '$val > 0 ? "+$val" : $val',
        PrintConvInv => '$val',
    },
    0x2037 => {
        Name => 'FocusFrameSize',
        Format => 'int16u',
        Count => '3',
        PrintConv => q{
            my @a = split ' ', $val;
            return $a[2] ? sprintf('%3dx%3d', $a[0], $a[1]) : 'n/a';
        },
        PrintConvInv => '$val =~ /(\d+)x(\d+)/ ? "$1 $2 257" : "0 0 0"',
    },
    0x2039 => { #JR
        Name => 'JPEG-HEIFSwitch', # (name used in camera menus)
        Writable => 'int16u',
        PrintConv => {
            0 => 'JPEG',
            1 => 'HEIF',
            65535 => 'n/a',
        },
    },
    # 0x31 (e) for ILCE-1/7SM3, ILME-FX3
        37 => 'FL',
        39 => 'IN',
        40 => 'SH',
        Valid from July 2020 for ILCE-1/7SM3, ILME-FX3.
        Condition => '$$self{Model} =~ /^(ILCE-7SM3|ILME-FX3)/',
        Format => 'int8u[6]',
        PrintConv => 'unpack "H*", pack "C*", split " ", $val',
    },
    0x008a => {
        Name => 'InternalSerialNumber', #(NC)
        Condition => '$$self{Model} =~ /^(ILCE-1)/',
    0x002a => [{
    },{
        Name => 'Quality2',
        Condition => '$$self{Model} =~ /^(ILCE-(1|7SM3)|ILME-FX3)\b/',
        PrintConv => {
            1 => 'JPEG',
            2 => 'RAW',
            3 => 'RAW + JPEG',
            4 => 'HEIF',
            6 => 'RAW + HEIF',
        },
    }],
    NOTES => 'E-mount cameras only.',
    NOTES => 'Valid for the ILCE-1/7SM3, ILME-FX3.',
	'afareamode' => { 124 => '0.3', 177 => 0x33, 181 => 0xe, 189 => 0x0, 190 => 0x5, 311 => 0xf, 378 => 0x1205, 391 => [0xa,0x3a], 398 => 0x11, 399 => 0x10, 400 => 0x24, 411 => 0xb043, 435 => 0x17 },
	'afareapointsize' => { 124 => '0.4' },
	'afareazonesize' => { 124 => '0.5' },
	'clarity' => { 225 => 0x35, 226 => 0x3d, 411 => 0x2036, 468 => 'Clarity', 470 => 'Clarity' },
	'colortint' => { 310 => 0x35c },
	'correlatedcolortemp' => { 310 => 0x35b },
	'fade' => { 411 => 0x2034 },
	'highlights' => { 411 => 0x2033, 462 => 'Highlights' },
	'internalserialnumber' => { 62 => 0x96, 74 => 0x9, 125 => 0x10, 184 => 0x49dc, 287 => 0x18, 289 => 0x102, 308 => 0x500, 311 => 0x25, 326 => 0x4, 378 => 0x5, 429 => [0x7c,0xf0], 430 => 0x88, 431 => [0x88,0x8a] },
	'jpeg-heifswitch' => { 411 => 0x2039 },
	'pixelshiftoffset' => { 125 => 0x1106 },
	'pixelshiftshots' => { 125 => 0x1105 },
	'preaf' => { 124 => '0.2' },
	'shadows' => { 117 => 0xfe52, 411 => 0x2032, 462 => 'Shadows', 468 => 'Shadows', 470 => 'Shadows' },
	'sharpnessrange' => { 411 => 0x2035 },
	'whitepoint' => { 117 => 0x13e, 310 => 0x35d, 346 => 0x201, 490 => 'WhitePoint' },
	'focusframesize' => 1,
	'jumdflags' => 1,
	'jumdid' => 1,
	'jumdlabel' => 1,
	'jumdsignature' => 1,
	'jumdtype' => 1,
They contain a total of 24118 tags, with 15614 unique tag names.
  0x1105   PixelShiftShots                      int16u
  0x1106   PixelShiftOffset                     rational64s[2]
    0.1    FocusMode2                           int32u & 0x0f
    0.2    PreAF                                int32u & 0xf0
    0.3    AFAreaMode                           int32u & 0xf00
    0.4    AFAreaPointSize                      int32u & 0xf000
    0.5    AFAreaZoneSize                       int32u & 0xf0000
  0x035b   CorrelatedColorTemp                  int16u
  0x035c   ColorTint                            int16s
  0x035d   WhitePoint                           rational64u[2]
  0x2032   Shadows                              int32s
  0x2033   Highlights                           int32s
  0x2034   Fade                                 int32s
  0x2035   SharpnessRange                       int32s
  0x2036   Clarity                              int32s
  0x2037   FocusFrameSize                       no
  0x2039   JPEG-HEIFSwitch                      int16u
Valid from July 2020 for ILCE-1/7SM3, ILME-FX3.
    138    InternalSerialNumber                 int8u[6]~
E-mount cameras only.
Valid for the ILCE-1/7SM3, ILME-FX3.
  'jumd-flags'         JUMDFlags                no
  'jumd-id'            JUMDID                   no
  'jumd-label'         JUMDLabel                no
  'jumd-sig'           JUMDSignature            no
  'jumd-type'          JUMDType                 no
And they are extracted by default from MacOS "._" files when reading
    JXL =>   'Jpeg2000',
Version: 12.24
[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.24
[File, System, Time] FileAccessDate - File Access Date/Time: 2021:04:12 12:43:44-04:00
[JUMBF, JUMBF, Image] jumd-type - JUMD Type: cacb-0011-0010-800000aa00389b71
[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable, Label
[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cai
[JUMBF, JUMBF, Image] jumd-type - JUMD Type: cast-0011-0010-800000aa00389b71
[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable, Label
[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cb.reuters_1
[JUMBF, JUMBF, Image] jumd-type - JUMD Type: caas-0011-0010-800000aa00389b71
[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable, Label
[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cai.assertions
[JUMBF, JUMBF, Image] jumd-type - JUMD Type: json-0011-0010-800000aa00389b71
[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable, Label
[JUMBF, JUMBF, Image] jumd-label - JUMD Label: adobe.asset.info
[JUMBF, JUMBF, Image] jumd-type - JUMD Type: json-0011-0010-800000aa00389b71
[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable, Label
[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cai.location.broad
[JUMBF, JUMBF, Image] jumd-type - JUMD Type: json-0011-0010-800000aa00389b71
[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable, Label
[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cai.rights
[JUMBF, JUMBF, Image] jumd-type - JUMD Type: cacb-####-####-######aa#####b##
[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable,_Label
[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cai
[JUMBF, JUMBF, Image] jumd-type - JUMD Type: cast-####-####-######aa#####b##
[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable,_Label
[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cb.reuters_#
[JUMBF, JUMBF, Image] jumd-type - JUMD Type: caas-####-####-######aa#####b##
[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable,_Label
[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cai.assertions
[JUMBF, JUMBF, Image] jumd-type - JUMD Type: json-####-####-######aa#####b##
[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable,_Label
[JUMBF, JUMBF, Image] jumd-label - JUMD Label: adobe.asset.info
[JUMBF, JUMBF, Image] jumd-type - JUMD Type: json-####-####-######aa#####b##
[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable,_Label
[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cai.location.broad
[JUMBF, JUMBF, Image] jumd-type - JUMD Type: json-####-####-######aa#####b##
[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable,_Label
[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cai.rights
[ExifTool, ExifTool, ExifTool] ExifToolVersion - ExifTool Version Number: 12.24
[File, System, Time] FileModifyDate - File Modification Date/Time: 2021:04:12 12:44:05-04:00
[File, System, Time] FileAccessDate - File Access Date/Time: 2021:04:12 12:44:05-04:00
[File, System, Time] FileInodeChangeDate - File Inode Change Date/Time: 2021:04:12 12:44:05-04:00
[JUMBF, JUMBF, Image] jumd-type - JUMD Type: cacb-0011-0010-800000aa00389b71
[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable, Label
[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cai
[JUMBF, JUMBF, Image] jumd-type - JUMD Type: cast-0011-0010-800000aa00389b71
[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable, Label
[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cb.reuters_1
[JUMBF, JUMBF, Image] jumd-type - JUMD Type: caas-0011-0010-800000aa00389b71
[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable, Label
[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cai.assertions
[JUMBF, JUMBF, Image] jumd-type - JUMD Type: json-0011-0010-800000aa00389b71
[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable, Label
[JUMBF, JUMBF, Image] jumd-label - JUMD Label: adobe.asset.info
[JUMBF, JUMBF, Image] jumd-type - JUMD Type: json-0011-0010-800000aa00389b71
[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable, Label
[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cai.location.broad
[JUMBF, JUMBF, Image] jumd-type - JUMD Type: json-0011-0010-800000aa00389b71
[JUMBF, JUMBF, Image] jumd-flags - JUMD Flags: Requestable, Label
[JUMBF, JUMBF, Image] jumd-label - JUMD Label: cai.rights
my $version = '12.24';
             -- Generated by ExifTool 12.24 --