New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

exifreader

Package Overview
Dependencies
Maintainers
1
Versions
97
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

exifreader - npm Package Compare versions

Comparing version 3.16.0 to 4.0.0

13

bin/build.js

@@ -19,3 +19,14 @@ /* This Source Code Form is subject to the terms of the Mozilla Public

console.log('Installing ExifReader custom build dependencies...'); // eslint-disable-line no-console
execSync('npm install --production=false --loglevel=error --no-optional --no-package-lock --no-save @babel/core@7.9.0 @babel/preset-env@7.9.0 @babel/register@7.9.0 babel-loader@8.1.0 cross-env@5.2.0 string-replace-loader@2.2.0 webpack@4.44.1 webpack-cli@3.3.12 terser-webpack-plugin@2.3.8', {stdio: 'inherit'});
const packages = [
'@babel/core@7.13.10',
'@babel/preset-env@7.13.12',
'@babel/register@7.13.8',
'babel-loader@8.2.2',
'cross-env@7.0.3',
'string-replace-loader@3.0.3',
'webpack@5.58.1',
'webpack-cli@4.9.0',
'terser-webpack-plugin@5.2.4'
];
execSync(`npm install --production=false --loglevel=error --no-optional --no-package-lock --no-save ${packages.join(' ')}`, {stdio: 'inherit'});
console.log('Done.'); // eslint-disable-line no-console

@@ -22,0 +33,0 @@ }

2

dist/exif-reader.js

@@ -1,2 +0,2 @@

!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.ExifReader=t():e.ExifReader=t()}("undefined"!=typeof self?self:this,(function(){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:0,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=1,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:1,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:1})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:1,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function i(e,t,n){for(var r=[],i=0;i<n&&t+i<e.byteLength;i++)r.push(e.getUint8(t+i));return a(r)}function o(e,t,n){for(var r=[],i=0;i<n&&t+i<e.byteLength;i+=2)r.push(e.getUint16(t+i));return a(r)}function a(e){return e.map((function(e){return String.fromCharCode(e)})).join("")}function u(){for(var e=1;e<arguments.length;e++)for(var t in arguments[e])arguments[0][t]=arguments[e][t];return arguments[0]}function c(e,t,n){var r=0;Object.defineProperty(e,t,{get:function(){return r||(r=1,Object.defineProperty(e,t,{configurable:1,enumerable:1,value:n.apply(e),writable:1})),e[t]},configurable:1,enumerable:1})}function f(e){return"undefined"!=typeof btoa?btoa(Array.prototype.reduce.call(new Uint8Array(e),(function(e,t){return e+String.fromCharCode(t)}),"")):"undefined"!=typeof Buffer?void 0!==r(Buffer.from)?Buffer.from(e).toString("base64"):new Buffer(e).toString("base64"):void 0}function s(e){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}n.r(t),n.d(t,"errors",(function(){return St})),n.d(t,"load",(function(){return bt})),n.d(t,"loadView",(function(){return Ut}));var l=function(){function e(t){if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),function(e){return"object"!==s(e)||void 0===e.length||void 0===e.readUInt8||void 0===e.readUInt16LE||void 0===e.readUInt16BE||void 0===e.readUInt32LE||void 0===e.readUInt32BE||void 0===e.readInt32LE||void 0===e.readInt32BE}(t))throw Error("DataView: Passed buffer type is unsupported.");this.buffer=t,this.byteLength=this.buffer.length}var t;return(t=[{key:"getUint8",value:function(e){return this.buffer.readUInt8(e)}},{key:"getUint16",value:function(e,t){return t?this.buffer.readUInt16LE(e):this.buffer.readUInt16BE(e)}},{key:"getUint32",value:function(e,t){return t?this.buffer.readUInt32LE(e):this.buffer.readUInt32BE(e)}},{key:"getInt32",value:function(e,t){return t?this.buffer.readInt32LE(e):this.buffer.readInt32BE(e)}}])&&function(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||0,r.configurable=1,"value"in r&&(r.writable=1),Object.defineProperty(e,r.key,r)}}(e.prototype,t),e}();function d(e){return e.map((function(e){return String.fromCharCode(e)})).join("")}function p(e){if(e.length>=8){var t=d(e.slice(0,8));if("ASCII\0\0\0"===t)return d(e.slice(8));if("JIS\0\0\0\0\0"===t)return"[JIS encoded text]";if("UNICODE\0"===t)return"[Unicode encoded text]";if("\0\0\0\0\0\0\0\0"===t)return"[Undefined encoding]"}return"Undefined"}function m(e){return e[0][0]/e[0][1]+e[1][0]/e[1][1]/60+e[2][0]/e[2][1]/3600}var g=function(e,t){if(18761===e.getUint16(t))return 18761;if(19789===e.getUint16(t))return 19789;throw Error("Illegal byte order value. Faulty image.")};function v(e,t){return 65472===e.getUint16(t)}function h(e,t){return 65474===e.getUint16(t)}function y(e,t){return 65506===e.getUint16(t)&&"ICC_PROFILE\0"===i(e,t+4,12)}function S(e,t){return 65506===e.getUint16(t)&&"MPF\0"===i(e,t+4,4)}function b(e,t){return 65505===e.getUint16(t)&&"Exif"===i(e,t+4,4)&&0===e.getUint8(t+4+4)}function C(e,t){return 65505===e.getUint16(t)&&function(e,t){return"http://ns.adobe.com/xap/1.0/\0"===i(e,t+4,29)}(e,t)}function I(e,t){return 65505===e.getUint16(t)&&function(e,t){return"http://ns.adobe.com/xmp/extension/\0"===i(e,t+4,35)}(e,t)}function P(e,t){return{dataOffset:e+33,length:t-31}}function A(e,t){return{dataOffset:e+79,length:t-77}}function w(e,t){return 65517===e.getUint16(t)&&"Photoshop 3.0"===i(e,t+4,13)&&0===e.getUint8(t+4+13)}function U(e,t){var n=e.getUint16(t);return n>=65504&&n<=65519||65534===n||65472===n||65474===n||65476===n||65499===n||65501===n||65498===n}function D(e,t){return"IHDR"===i(e,t+4,4)}function O(e,t){return"iTXt"===i(e,t+4,4)&&"XML:com.adobe.xmp\0"===i(e,t+8,18)}function T(e,t){t+=28;for(var n=0;n<2&&t<e.byteLength;)0===e.getUint8(t)&&n++,t++;if(!(n<2))return t}function M(e,t){var n=e.getUint32(t);return function(e){return 0===e}(n)?e.byteLength-t:function(e){return 1===e}(n)&&function(e,t){return 0===e.getUint32(t+8)}(e,t)?e.getUint32(t+12):n}var x=function(e){if(function(e){return e.byteLength>=4&&function(e){var t=18761===e.getUint16(0);return 42===e.getUint16(2,t)}(e)}(e))return{hasAppMarkers:1,tiffHeaderOffset:0};if(function(e){return e.byteLength>=2&&65496===e.getUint16(0)}(e))return function(e){for(var t,n,r,i,o,a,u,c,f=2;f+4+5<=e.byteLength;){if(v(e,f))n=f+2;else if(h(e,f))r=f+2;else if(b(e,f))t=e.getUint16(f+2),i=f+10;else if(C(e,f))a||(a=[]),t=e.getUint16(f+2),a.push(P(f,t));else if(I(e,f))a||(a=[]),t=e.getUint16(f+2),a.push(A(f,t));else if(w(e,f))t=e.getUint16(f+2),o=f+18;else if(y(e,f)){var s=f+18,l=(t=e.getUint16(f+2))-16,d=e.getUint8(f+16),p=e.getUint8(f+17);u||(u=[]),u.push({offset:s,length:l,chunkNumber:d,chunksTotal:p})}else if(S(e,f))t=e.getUint16(f+2),c=f+8;else{if(!U(e,f))break;t=e.getUint16(f+2)}f+=2+t}return{hasAppMarkers:f>2,fileDataOffset:n||r,tiffHeaderOffset:i,iptcDataOffset:o,xmpChunks:a,iccChunks:u,mpfDataOffset:c}}(e);if(function(e){return"‰PNG\r\n\n"===i(e,0,8)}(e))return function(e){for(var t={hasAppMarkers:0},n=8;n+4+4<=e.byteLength;){if(D(e,n))t.hasAppMarkers=1,t.pngHeaderOffset=n+8;else if(O(e,n)){var r=T(e,n);void 0!==r&&(t.hasAppMarkers=1,t.xmpChunks=[{dataOffset:r,length:e.getUint32(n+0)-(r-(n+8))}])}n+=e.getUint32(n+0)+4+4+4}return t}(e);if(function(e){var t=i(e,8,4);return"ftyp"===i(e,4,4)&&-1!==["heic","heix","hevc","hevx","heim","heis","hevm","hevs","mif1"].indexOf(t)}(e))return function(e){var t=function(e){for(var t=0;t+4+4<=e.byteLength;){var n=M(e,t);if(n>=8&&"meta"===i(e,t+4,4))return{offset:t,length:n};t+=n}return{offset:void 0,length:0}}(e),n=t.offset,r=t.length;if(void 0===n)return{hasAppMarkers:0};var o=Math.min(n+r,e.byteLength),a=function(e,t,n){for(var r={ilocOffset:void 0,exifItemOffset:void 0,colrOffset:void 0};t+4<=n&&(!r.ilocOffset||!r.exifItemOffset||!r.colrOffset);){var o=i(e,t,4);"iloc"===o?r.ilocOffset=t:"Exif"===o?r.exifItemOffset=t+-4:"colr"===o&&(r.colrOffset=t+-4),t++}return r}(e,n,o),u=a.exifItemOffset,c=a.ilocOffset,f=a.colrOffset,s=function(e,t,n,r){if(n&&t&&!(t+2>r)){var i=e.getUint16(t);for(n+=12;n+16<=r;){if(e.getUint16(n)===i){var o=e.getUint32(n+8);if(o+4<=e.byteLength)return o+(e.getUint32(o)+4)}n+=16}}}(e,u,c,o),l=function(e,t,n){if(t&&!(t+12>n)){var r=i(e,t+8,4);if("prof"===r||"rICC"===r)return[{offset:t+12,length:M(e,t)-12,chunkNumber:1,chunksTotal:1}]}}(e,f,o);return{hasAppMarkers:void 0!==s||void 0!==l,tiffHeaderOffset:s,iccChunks:l}}(e);if(function(e){return"RIFF"===i(e,0,4)&&"WEBP"===i(e,8,4)}(e))return function(e){for(var t,n,r,o=12,a=0;o+8<e.byteLength;){var u=i(e,o,4),c=e.getUint32(o+4,1);"EXIF"===u?(a=1,t="Exif\0\0"===i(e,o+8,6)?o+8+6:o+8):"XMP "===u?(a=1,n=[{dataOffset:o+8,length:c}]):"ICCP"===u&&(a=1,r=[{offset:o+8,length:c,chunkNumber:1,chunksTotal:1}]),o+=8+(c%2==0?c:c+1)}return{hasAppMarkers:a,tiffHeaderOffset:t,xmpChunks:n,iccChunks:r}}(e);throw Error("Invalid image format")},F={1:1,2:1,3:2,4:4,5:8,7:1,9:4,10:8,13:4},L={BYTE:1,ASCII:2,SHORT:3,LONG:4,RATIONAL:5,UNDEFINED:7,SLONG:9,SRATIONAL:10,IFD:13},R={getAsciiValue:function(e){return e.map((function(e){return String.fromCharCode(e)}))},getByteAt:k,getAsciiAt:function(e,t){return e.getUint8(t)},getShortAt:function(e,t,n){return e.getUint16(t,18761===n)},getLongAt:N,getRationalAt:function(e,t,n){return[N(e,t,n),N(e,t+4,n)]},getUndefinedAt:function(e,t){return k(e,t)},getSlongAt:E,getSrationalAt:function(e,t,n){return[E(e,t,n),E(e,t+4,n)]},getIfdPointerAt:function(e,t,n){return N(e,t,n)},typeSizes:F,tagTypes:L,getTypeSize:function(e){if(void 0===L[e])throw Error("No such type found.");return F[L[e]]}};function k(e,t){return e.getUint8(t)}function N(e,t,n){return e.getUint32(t,18761===n)}function E(e,t,n){return e.getInt32(t,18761===n)}var G={LightSource:function(e){return 1===e?"Daylight":2===e?"Fluorescent":3===e?"Tungsten (incandescent light)":4===e?"Flash":9===e?"Fine weather":10===e?"Cloudy weather":11===e?"Shade":12===e?"Daylight fluorescent (D 5700 – 7100K)":13===e?"Day white fluorescent (N 4600 – 5400K)":14===e?"Cool white fluorescent (W 3900 – 4500K)":15===e?"White fluorescent (WW 3200 – 3700K)":17===e?"Standard light A":18===e?"Standard light B":19===e?"Standard light C":20===e?"D55":21===e?"D65":22===e?"D75":23===e?"D50":24===e?"ISO studio tungsten":255===e?"Other light source":"Unknown"}};function j(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function B(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var z={0:{name:"GPSVersionID",description:function(e){return 2===e[0]&&2===e[1]&&0===e[2]&&0===e[3]?"Version 2.2":"Unknown"}},1:{name:"GPSLatitudeRef",description:function(e){var t=e.join("");return"N"===t?"North latitude":"S"===t?"South latitude":"Unknown"}},2:{name:"GPSLatitude",description:m},3:{name:"GPSLongitudeRef",description:function(e){var t=e.join("");return"E"===t?"East longitude":"W"===t?"West longitude":"Unknown"}},4:{name:"GPSLongitude",description:m},5:{name:"GPSAltitudeRef",description:function(e){return 0===e?"Sea level":1===e?"Sea level reference (negative value)":"Unknown"}},6:{name:"GPSAltitude",description:function(e){return e[0]/e[1]+" m"}},7:{name:"GPSTimeStamp",description:function(e){return e.map((function(e){var t,n=(2,function(e){if(Array.isArray(e))return e}(t=e)||function(e,t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e)){var n=[],r=1,i=0,o=void 0;try{for(var a,u=e[Symbol.iterator]();!(r=(a=u.next()).done)&&(n.push(a.value),2!==n.length);r=1);}catch(e){i=1,o=e}finally{try{r||null==u.return||u.return()}finally{if(i)throw o}}return n}}(t)||function(e,t){if(e){if("string"==typeof e)return B(e,2);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?B(e,2):void 0}}(t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),r=n[0]/n[1];return/^\d(\.|$)/.test("".concat(r))?"0".concat(r):r})).join(":")}},8:"GPSSatellites",9:{name:"GPSStatus",description:function(e){var t=e.join("");return"A"===t?"Measurement in progress":"V"===t?"Measurement Interoperability":"Unknown"}},10:{name:"GPSMeasureMode",description:function(e){var t=e.join("");return"2"===t?"2-dimensional measurement":"3"===t?"3-dimensional measurement":"Unknown"}},11:"GPSDOP",12:{name:"GPSSpeedRef",description:function(e){var t=e.join("");return"K"===t?"Kilometers per hour":"M"===t?"Miles per hour":"N"===t?"Knots":"Unknown"}},13:"GPSSpeed",14:{name:"GPSTrackRef",description:function(e){var t=e.join("");return"T"===t?"True direction":"M"===t?"Magnetic direction":"Unknown"}},15:"GPSTrack",16:{name:"GPSImgDirectionRef",description:function(e){var t=e.join("");return"T"===t?"True direction":"M"===t?"Magnetic direction":"Unknown"}},17:"GPSImgDirection",18:"GPSMapDatum",19:{name:"GPSDestLatitudeRef",description:function(e){var t=e.join("");return"N"===t?"North latitude":"S"===t?"South latitude":"Unknown"}},20:{name:"GPSDestLatitude",description:function(e){return e[0][0]/e[0][1]+e[1][0]/e[1][1]/60+e[2][0]/e[2][1]/3600}},21:{name:"GPSDestLongitudeRef",description:function(e){var t=e.join("");return"E"===t?"East longitude":"W"===t?"West longitude":"Unknown"}},22:{name:"GPSDestLongitude",description:function(e){return e[0][0]/e[0][1]+e[1][0]/e[1][1]/60+e[2][0]/e[2][1]/3600}},23:{name:"GPSDestBearingRef",description:function(e){var t=e.join("");return"T"===t?"True direction":"M"===t?"Magnetic direction":"Unknown"}},24:"GPSDestBearing",25:{name:"GPSDestDistanceRef",description:function(e){var t=e.join("");return"K"===t?"Kilometers":"M"===t?"Miles":"N"===t?"Knots":"Unknown"}},26:"GPSDestDistance",27:{name:"GPSProcessingMethod",description:p},28:{name:"GPSAreaInformation",description:p},29:"GPSDateStamp",30:{name:"GPSDifferential",description:function(e){return 0===e?"Measurement without differential correction":1===e?"Differential correction applied":"Unknown"}},31:"GPSHPositioningError"},W={1:"InteroperabilityIndex",2:{name:"InteroperabilityVersion",description:function(e){return d(e)}},4096:"RelatedImageFileFormat",4097:"RelatedImageWidth",4098:"RelatedImageHeight"},H={45056:{name:"MPFVersion",description:function(e){return d(e)}},45057:"NumberOfImages",45058:"MPEntry",45059:"ImageUIDList",45060:"TotalFrames"},V=u({},{11:"ProcessingSoftware",254:{name:"SubfileType",description:function(e){return{0:"Full-resolution image",1:"Reduced-resolution image",2:"Single page of multi-page image",3:"Single page of multi-page reduced-resolution image",4:"Transparency mask",5:"Transparency mask of reduced-resolution image",6:"Transparency mask of multi-page image",7:"Transparency mask of reduced-resolution multi-page image",65537:"Alternate reduced-resolution image",4294967295:"Invalid"}[e]||"Unknown"}},255:{name:"OldSubfileType",description:function(e){return{0:"Full-resolution image",1:"Reduced-resolution image",2:"Single page of multi-page image"}[e]||"Unknown"}},256:"ImageWidth",257:"ImageLength",258:"BitsPerSample",259:"Compression",262:"PhotometricInterpretation",263:{name:"Thresholding",description:function(e){return{1:"No dithering or halftoning",2:"Ordered dither or halfton",3:"Randomized dither"}[e]||"Unknown"}},264:"CellWidth",265:"CellLength",266:{name:"FillOrder",description:function(e){return{1:"Normal",2:"Reversed"}[e]||"Unknown"}},269:"DocumentName",270:"ImageDescription",271:"Make",272:"Model",273:"StripOffsets",274:{name:"Orientation",description:function(e){return 1===e?"top-left":2===e?"top-right":3===e?"bottom-right":4===e?"bottom-left":5===e?"left-top":6===e?"right-top":7===e?"right-bottom":8===e?"left-bottom":"Undefined"}},277:"SamplesPerPixel",278:"RowsPerStrip",279:"StripByteCounts",280:"MinSampleValue",281:"MaxSampleValue",282:{name:"XResolution",description:function(e){return""+Math.round(e[0]/e[1])}},283:{name:"YResolution",description:function(e){return""+Math.round(e[0]/e[1])}},284:"PlanarConfiguration",285:"PageName",286:{name:"XPosition",description:function(e){return""+Math.round(e[0]/e[1])}},287:{name:"YPosition",description:function(e){return""+Math.round(e[0]/e[1])}},290:{name:"GrayResponseUnit",description:function(e){return{1:"0.1",2:"0.001",3:"0.0001",4:"1e-05",5:"1e-06"}[e]||"Unknown"}},296:{name:"ResolutionUnit",description:function(e){return 2===e?"inches":3===e?"centimeters":"Unknown"}},297:"PageNumber",301:"TransferFunction",305:"Software",306:"DateTime",315:"Artist",316:"HostComputer",317:"Predictor",318:{name:"WhitePoint",description:function(e){return e.map((function(e){return"".concat(e[0],"/").concat(e[1])})).join(", ")}},319:{name:"PrimaryChromaticities",description:function(e){return e.map((function(e){return"".concat(e[0],"/").concat(e[1])})).join(", ")}},321:"HalftoneHints",322:"TileWidth",323:"TileLength",330:"A100DataOffset",332:{name:"InkSet",description:function(e){return{1:"CMYK",2:"Not CMYK"}[e]||"Unknown"}},337:"TargetPrinter",338:{name:"ExtraSamples",description:function(e){return{0:"Unspecified",1:"Associated Alpha",2:"Unassociated Alpha"}[e]||"Unknown"}},339:{name:"SampleFormat",description:function(e){var t={1:"Unsigned",2:"Signed",3:"Float",4:"Undefined",5:"Complex int",6:"Complex float"};return Array.isArray(e)?e.map((function(e){return t[e]||"Unknown"})).join(", "):"Unknown"}},513:"JPEGInterchangeFormat",514:"JPEGInterchangeFormatLength",529:{name:"YCbCrCoefficients",description:function(e){return e.map((function(e){return""+e[0]/e[1]})).join("/")}},530:"YCbCrSubSampling",531:{name:"YCbCrPositioning",description:function(e){return 1===e?"centered":2===e?"co-sited":"undefined "+e}},532:{name:"ReferenceBlackWhite",description:function(e){return e.map((function(e){return""+e[0]/e[1]})).join(", ")}},700:"ApplicationNotes",18246:"Rating",18249:"RatingPercent",33432:{name:"Copyright",description:function(e){return e.join("; ")}},33550:"PixelScale",33723:"IPTC-NAA",33920:"IntergraphMatrix",33922:"ModelTiePoint",34118:"SEMInfo",34264:"ModelTransform",34377:"PhotoshopSettings",34665:"Exif IFD Pointer",34675:"ICC_Profile",34735:"GeoTiffDirectory",34736:"GeoTiffDoubleParams",34737:"GeoTiffAsciiParams",34853:"GPS Info IFD Pointer",40091:"XPTitle",40092:"XPComment",40093:"XPAuthor",40094:"XPKeywords",40095:"XPSubject",42112:"GDALMetadata",42113:"GDALNoData",50341:"PrintIM",50707:"DNGBackwardVersion",50708:"UniqueCameraModel",50709:"LocalizedCameraModel",50721:"ColorMatrix1",50722:"ColorMatrix2",50723:"CameraCalibration1",50724:"CameraCalibration2",50725:"ReductionMatrix1",50726:"ReductionMatrix2",50727:"AnalogBalance",50728:"AsShotNeutral",50729:"AsShotWhiteXY",50730:"BaselineExposure",50731:"BaselineNoise",50732:"BaselineSharpness",50734:"LinearResponseLimit",50735:"CameraSerialNumber",50736:"DNGLensInfo",50739:"ShadowScale",50741:{name:"MakerNoteSafety",description:function(e){return{0:"Unsafe",1:"Safe"}[e]||"Unknown"}},50778:{name:"CalibrationIlluminant1",description:G.LightSource},50779:{name:"CalibrationIlluminant2",description:G.LightSource},50781:"RawDataUniqueID",50827:"OriginalRawFileName",50828:"OriginalRawFileData",50831:"AsShotICCProfile",50832:"AsShotPreProfileMatrix",50833:"CurrentICCProfile",50834:"CurrentPreProfileMatrix",50879:"ColorimetricReference",50885:"SRawType",50898:"PanasonicTitle",50899:"PanasonicTitle2",50931:"CameraCalibrationSig",50932:"ProfileCalibrationSig",50933:"ProfileIFD",50934:"AsShotProfileName",50936:"ProfileName",50937:"ProfileHueSatMapDims",50938:"ProfileHueSatMapData1",50939:"ProfileHueSatMapData2",50940:"ProfileToneCurve",50941:{name:"ProfileEmbedPolicy",description:function(e){return{0:"Allow Copying",1:"Embed if Used",2:"Never Embed",3:"No Restrictions"}[e]||"Unknown"}},50942:"ProfileCopyright",50964:"ForwardMatrix1",50965:"ForwardMatrix2",50966:"PreviewApplicationName",50967:"PreviewApplicationVersion",50968:"PreviewSettingsName",50969:"PreviewSettingsDigest",50970:{name:"PreviewColorSpace",description:function(e){return{1:"Gray Gamma 2.2",2:"sRGB",3:"Adobe RGB",4:"ProPhoto RGB"}[e]||"Unknown"}},50971:"PreviewDateTime",50972:"RawImageDigest",50973:"OriginalRawFileDigest",50981:"ProfileLookTableDims",50982:"ProfileLookTableData",51043:"TimeCodes",51044:"FrameRate",51058:"TStop",51081:"ReelName",51089:"OriginalDefaultFinalSize",51090:"OriginalBestQualitySize",51091:"OriginalDefaultCropSize",51105:"CameraLabel",51107:{name:"ProfileHueSatMapEncoding",description:function(e){return{0:"Linear",1:"sRGB"}[e]||"Unknown"}},51108:{name:"ProfileLookTableEncoding",description:function(e){return{0:"Linear",1:"sRGB"}[e]||"Unknown"}},51109:"BaselineExposureOffset",51110:{name:"DefaultBlackRender",description:function(e){return{0:"Auto",1:"None"}[e]||"Unknown"}},51111:"NewRawImageDigest",51112:"RawToPreviewGain"},{33434:{name:"ExposureTime",description:function(e){return 0!==e[0]?"1/".concat(Math.round(e[1]/e[0])):"0/".concat(e[1])}},33437:{name:"FNumber",description:function(e){return"f/".concat(e[0]/e[1])}},34850:{name:"ExposureProgram",description:function(e){return 0===e?"Undefined":1===e?"Manual":2===e?"Normal program":3===e?"Aperture priority":4===e?"Shutter priority":5===e?"Creative program":6===e?"Action program":7===e?"Portrait mode":8===e?"Landscape mode":9===e?"Bulb":"Unknown"}},34852:"SpectralSensitivity",34855:"ISOSpeedRatings",34856:{name:"OECF",description:function(){return"[Raw OECF table data]"}},34858:"TimeZoneOffset",34859:"SelfTimerMode",34864:{name:"SensitivityType",description:function(e){return{1:"Standard Output Sensitivity",2:"Recommended Exposure Index",3:"ISO Speed",4:"Standard Output Sensitivity and Recommended Exposure Index",5:"Standard Output Sensitivity and ISO Speed",6:"Recommended Exposure Index and ISO Speed",7:"Standard Output Sensitivity, Recommended Exposure Index and ISO Speed"}[e]||"Unknown"}},34865:"StandardOutputSensitivity",34866:"RecommendedExposureIndex",34867:"ISOSpeed",34868:"ISOSpeedLatitudeyyy",34869:"ISOSpeedLatitudezzz",36864:{name:"ExifVersion",description:function(e){return d(e)}},36867:"DateTimeOriginal",36868:"DateTimeDigitized",36873:"GooglePlusUploadCode",36880:"OffsetTime",36881:"OffsetTimeOriginal",36882:"OffsetTimeDigitized",37121:{name:"ComponentsConfiguration",description:function(e){return e.map((function(e){return 49===e?"Y":50===e?"Cb":51===e?"Cr":52===e?"R":53===e?"G":54===e?"B":void 0})).join("")}},37122:"CompressedBitsPerPixel",37377:{name:"ShutterSpeedValue",description:function(e){return"1/".concat(Math.round(Math.pow(2,e[0]/e[1])))}},37378:{name:"ApertureValue",description:function(e){return Math.pow(Math.sqrt(2),e[0]/e[1]).toFixed(2)}},37379:"BrightnessValue",37380:"ExposureBiasValue",37381:{name:"MaxApertureValue",description:function(e){return Math.pow(Math.sqrt(2),e[0]/e[1]).toFixed(2)}},37382:{name:"SubjectDistance",description:function(e){return e[0]/e[1]+" m"}},37383:{name:"MeteringMode",description:function(e){return 1===e?"Average":2===e?"CenterWeightedAverage":3===e?"Spot":4===e?"MultiSpot":5===e?"Pattern":6===e?"Partial":255===e?"Other":"Unknown"}},37384:{name:"LightSource",description:G.LightSource},37385:{name:"Flash",description:function(e){return 0===e?"Flash did not fire":1===e?"Flash fired":5===e?"Strobe return light not detected":7===e?"Strobe return light detected":9===e?"Flash fired, compulsory flash mode":13===e?"Flash fired, compulsory flash mode, return light not detected":15===e?"Flash fired, compulsory flash mode, return light detected":16===e?"Flash did not fire, compulsory flash mode":24===e?"Flash did not fire, auto mode":25===e?"Flash fired, auto mode":29===e?"Flash fired, auto mode, return light not detected":31===e?"Flash fired, auto mode, return light detected":32===e?"No flash function":65===e?"Flash fired, red-eye reduction mode":69===e?"Flash fired, red-eye reduction mode, return light not detected":71===e?"Flash fired, red-eye reduction mode, return light detected":73===e?"Flash fired, compulsory flash mode, red-eye reduction mode":77===e?"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected":79===e?"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected":89===e?"Flash fired, auto mode, red-eye reduction mode":93===e?"Flash fired, auto mode, return light not detected, red-eye reduction mode":95===e?"Flash fired, auto mode, return light detected, red-eye reduction mode":"Unknown"}},37386:{name:"FocalLength",description:function(e){return e[0]/e[1]+" mm"}},37393:"ImageNumber",37394:{name:"SecurityClassification",description:function(e){return{C:"Confidential",R:"Restricted",S:"Secret",T:"Top Secret",U:"Unclassified"}[e]||"Unknown"}},37395:"ImageHistory",37396:{name:"SubjectArea",description:function(e){return 2===e.length?"Location; X: ".concat(e[0],", Y: ").concat(e[1]):3===e.length?"Circle; X: ".concat(e[0],", Y: ").concat(e[1],", diameter: ").concat(e[2]):4===e.length?"Rectangle; X: ".concat(e[0],", Y: ").concat(e[1],", width: ").concat(e[2],", height: ").concat(e[3]):"Unknown"}},37500:{name:"MakerNote",description:function(){return"[Raw maker note data]"}},37510:{name:"UserComment",description:p},37520:"SubSecTime",37521:"SubSecTimeOriginal",37522:"SubSecTimeDigitized",37888:{name:"AmbientTemperature",description:function(e){return e[0]/e[1]+" °C"}},37889:{name:"Humidity",description:function(e){return e[0]/e[1]+" %"}},37890:{name:"Pressure",description:function(e){return e[0]/e[1]+" hPa"}},37891:{name:"WaterDepth",description:function(e){return e[0]/e[1]+" m"}},37892:{name:"Acceleration",description:function(e){return e[0]/e[1]+" mGal"}},37893:{name:"CameraElevationAngle",description:function(e){return e[0]/e[1]+" °"}},40960:{name:"FlashpixVersion",description:function(e){return e.map((function(e){return String.fromCharCode(e)})).join("")}},40961:{name:"ColorSpace",description:function(e){return 1===e?"sRGB":65535===e?"Uncalibrated":"Unknown"}},40962:"PixelXDimension",40963:"PixelYDimension",40964:"RelatedSoundFile",40965:"Interoperability IFD Pointer",41483:"FlashEnergy",41484:{name:"SpatialFrequencyResponse",description:function(){return"[Raw SFR table data]"}},41486:"FocalPlaneXResolution",41487:"FocalPlaneYResolution",41488:{name:"FocalPlaneResolutionUnit",description:function(e){return 2===e?"inches":3===e?"centimeters":"Unknown"}},41492:{name:"SubjectLocation",description:function(e){var t,n=(2,function(e){if(Array.isArray(e))return e}(t=e)||function(e,t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e)){var n=[],r=1,i=0,o=void 0;try{for(var a,u=e[Symbol.iterator]();!(r=(a=u.next()).done)&&(n.push(a.value),2!==n.length);r=1);}catch(e){i=1,o=e}finally{try{r||null==u.return||u.return()}finally{if(i)throw o}}return n}}(t)||function(e,t){if(e){if("string"==typeof e)return j(e,2);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?j(e,2):void 0}}(t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),r=n[0],i=n[1];return"X: ".concat(r,", Y: ").concat(i)}},41493:"ExposureIndex",41495:{name:"SensingMethod",description:function(e){return 1===e?"Undefined":2===e?"One-chip color area sensor":3===e?"Two-chip color area sensor":4===e?"Three-chip color area sensor":5===e?"Color sequential area sensor":7===e?"Trilinear sensor":8===e?"Color sequential linear sensor":"Unknown"}},41728:{name:"FileSource",description:function(e){return 3===e?"DSC":"Unknown"}},41729:{name:"SceneType",description:function(e){return 1===e?"A directly photographed image":"Unknown"}},41730:{name:"CFAPattern",description:function(){return"[Raw CFA pattern table data]"}},41985:{name:"CustomRendered",description:function(e){return 0===e?"Normal process":1===e?"Custom process":"Unknown"}},41986:{name:"ExposureMode",description:function(e){return 0===e?"Auto exposure":1===e?"Manual exposure":2===e?"Auto bracket":"Unknown"}},41987:{name:"WhiteBalance",description:function(e){return 0===e?"Auto white balance":1===e?"Manual white balance":"Unknown"}},41988:{name:"DigitalZoomRatio",description:function(e){return 0===e[0]?"Digital zoom was not used":""+e[0]/e[1]}},41989:{name:"FocalLengthIn35mmFilm",description:function(e){return 0===e?"Unknown":e}},41990:{name:"SceneCaptureType",description:function(e){return 0===e?"Standard":1===e?"Landscape":2===e?"Portrait":3===e?"Night scene":"Unknown"}},41991:{name:"GainControl",description:function(e){return 0===e?"None":1===e?"Low gain up":2===e?"High gain up":3===e?"Low gain down":4===e?"High gain down":"Unknown"}},41992:{name:"Contrast",description:function(e){return 0===e?"Normal":1===e?"Soft":2===e?"Hard":"Unknown"}},41993:{name:"Saturation",description:function(e){return 0===e?"Normal":1===e?"Low saturation":2===e?"High saturation":"Unknown"}},41994:{name:"Sharpness",description:function(e){return 0===e?"Normal":1===e?"Soft":2===e?"Hard":"Unknown"}},41995:{name:"DeviceSettingDescription",description:function(){return"[Raw device settings table data]"}},41996:{name:"SubjectDistanceRange",description:function(e){return 1===e?"Macro":2===e?"Close view":3===e?"Distant view":"Unknown"}},42016:"ImageUniqueID",42032:"CameraOwnerName",42033:"BodySerialNumber",42034:{name:"LensSpecification",description:function(e){var t="".concat(e[0][0]/e[0][1],"-").concat(e[1][0]/e[1][1]," mm");return 0===e[3][1]?"".concat(t," f/?"):"".concat(t," f/").concat(1/(e[2][1]/e[2][1]/(e[3][0]/e[3][1])))}},42035:"LensMake",42036:"LensModel",42037:"LensSerialNumber",42080:{name:"CompositeImage",description:function(e){return{1:"Not a Composite Image",2:"General Composite Image",3:"Composite Image Captured While Shooting"}[e]||"Unknown"}},42081:"SourceImageNumberOfCompositeImage",42082:"SourceExposureTimesOfCompositeImage",42240:"Gamma",59932:"Padding",59933:"OffsetSchema",65e3:"OwnerName",65001:"SerialNumber",65002:"Lens",65100:"RawFile",65101:"Converter",65102:"WhiteBalance",65105:"Exposure",65106:"Shadows",65107:"Brightness",65108:"Contrast",65109:"Saturation",65110:"Sharpness",65111:"Smoothness",65112:"MoireFilter"}),X={"0th":V,exif:V,gps:z,interoperability:W,mpf:H},q={1:R.getByteAt,2:R.getAsciiAt,3:R.getShortAt,4:R.getLongAt,5:R.getRationalAt,7:R.getUndefinedAt,9:R.getSlongAt,10:R.getSrationalAt,13:R.getIfdPointerAt},Y=function(e,t){var n=g(e,t),r=function(e,t,n){return te(e,"0th",t,_(e,t,n),n)}(e,t,n);return function(e,t,n,r){return void 0!==e["Interoperability IFD Pointer"]?u(e,te(t,"interoperability",n,n+e["Interoperability IFD Pointer"].value,r)):e}(r=function(e,t,n,r){return void 0!==e["GPS Info IFD Pointer"]?u(e,te(t,"gps",n,n+e["GPS Info IFD Pointer"].value,r)):e}(r=function(e,t,n,r){return void 0!==e["Exif IFD Pointer"]?u(e,te(t,"exif",n,n+e["Exif IFD Pointer"].value,r)):e}(r,e,t,n),e,t,n),e,t,n)},K=function(e,t){var n=g(e,t);return function(e,t,n,r){if(!n.MPEntry)return n;for(var i=[],o=0;o<Math.ceil(n.MPEntry.value.length/16);o++){i[o]={};var a=J(n.MPEntry.value,16*o,R.getTypeSize("LONG"),r);i[o].ImageFlags=$(a),i[o].ImageFormat=Q(a),i[o].ImageType=Z(a);var u=J(n.MPEntry.value,16*o+4,R.getTypeSize("LONG"),r);i[o].ImageSize={value:u,description:""+u};var s=ee(o)?0:J(n.MPEntry.value,16*o+8,R.getTypeSize("LONG"),r)+t;i[o].ImageOffset={value:s,description:""+s};var l=J(n.MPEntry.value,16*o+12,R.getTypeSize("SHORT"),r);i[o].DependentImage1EntryNumber={value:l,description:""+l};var d=J(n.MPEntry.value,16*o+14,R.getTypeSize("SHORT"),r);i[o].DependentImage2EntryNumber={value:d,description:""+d},i[o].image=e.buffer.slice(s,s+u),c(i[o],"base64",(function(){return f(this.image)}))}return n.Images=i,n}(e,t,te(e,"mpf",t,_(e,t,n),n),n)};function _(e,t,n){return t+R.getLongAt(e,t+4,n)}function J(e,t,n,r){if(18761===r){for(var i=0,o=0;o<n;o++)i+=e[t+o]<<8*o;return i}for(var a=0,u=0;u<n;u++)a+=e[t+u]<<8*(n-1-u);return a}function $(e){var t=[e>>31&1,e>>30&1,e>>29&1],n=[];return t[0]&&n.push("Dependent Parent Image"),t[1]&&n.push("Dependent Child Image"),t[2]&&n.push("Representative Image"),{value:t,description:n.join(", ")||"None"}}function Q(e){var t=e>>24&7;return{value:t,description:0===t?"JPEG":"Unknown"}}function Z(e){var t=16777215&e;return{value:t,description:{196608:"Baseline MP Primary Image",65537:"Large Thumbnail (VGA equivalent)",65538:"Large Thumbnail (Full HD equivalent)",131073:"Multi-Frame Image (Panorama)",131074:"Multi-Frame Image (Disparity)",131075:"Multi-Frame Image (Multi-Angle)",0:"Undefined"}[t]||"Unknown"}}function ee(e){return 0===e}function te(e,t,n,r,i){var o=R.getTypeSize("SHORT"),a={},u=function(e,t,n){return t+R.getTypeSize("SHORT")<=e.byteLength?R.getShortAt(e,t,n):0}(e,r,i);r+=o;for(var c=0;c<u&&!(r+12>e.byteLength);c++){var f=ne(e,t,n,r,i);void 0!==f&&(a[f.name]={id:f.id,value:f.value,description:f.description}),r+=12}if(r<e.byteLength-R.getTypeSize("LONG")){var s=R.getLongAt(e,r,i);0!==s&&(a.Thumbnail=te(e,t,n,n+s,i))}return a}function ne(e,t,n,r,i){var o,a=R.getTypeSize("SHORT"),u=a+R.getTypeSize("SHORT"),c=u+R.getTypeSize("LONG"),f=R.getShortAt(e,r,i),s=R.getShortAt(e,r+a,i),l=R.getLongAt(e,r+u,i);if(void 0!==R.typeSizes[s]){if(function(e,t){return R.typeSizes[e]*t<=R.getTypeSize("LONG")}(s,l))o=re(e,r+c,s,l,i);else{var d=R.getLongAt(e,r+c,i);o=function(e,t,n,r,i){return t+n+R.typeSizes[r]*i<=e.byteLength}(e,n,d,s,l)?re(e,n+d,s,l,i,33723===f):"<faulty value>"}s===R.tagTypes.ASCII&&(o=function(e){try{return e.map((function(e){return decodeURIComponent(escape(e))}))}catch(t){return e}}(o=function(e){for(var t=[],n=0,r=0;r<e.length;r++)"\0"!==e[r]?(void 0===t[n]&&(t[n]=""),t[n]+=e[r]):n++;return t}(o)));var p="undefined-".concat(f),m=o;if(void 0!==X[t][f])if(void 0!==X[t][f].name&&void 0!==X[t][f].description){p=X[t][f].name;try{m=X[t][f].description(o)}catch(e){m=ie(o)}}else s===R.tagTypes.RATIONAL||s===R.tagTypes.SRATIONAL?(p=X[t][f],m=""+o[0]/o[1]):(p=X[t][f],m=ie(o));return{id:f,name:p,value:o,description:m}}}function re(e,t,n,r,i){var o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,a=[];o&&(r*=R.typeSizes[n],n=R.tagTypes.BYTE);for(var u=0;u<r;u++)a.push(q[n](e,t,i)),t+=R.typeSizes[n];return n===R.tagTypes.ASCII?a=R.getAsciiValue(a):1===a.length&&(a=a[0]),a}function ie(e){return e instanceof Array?e.join(", "):e}var oe=function(e,t){var n=function(e,t){return R.getShortAt(e,t)}(e,t),r=function(e,t,n){if(!(8>n)){var r=R.getByteAt(e,t+7);return{value:r,description:""+r}}}(e,t,n);return{"Bits Per Sample":ae(e,t,n),"Image Height":ue(e,t,n),"Image Width":ce(e,t,n),"Color Components":r,Subsampling:r&&fe(e,t,r.value,n)}};function ae(e,t,n){if(!(3>n)){var r=R.getByteAt(e,t+2);return{value:r,description:""+r}}}function ue(e,t,n){if(!(5>n)){var r=R.getShortAt(e,t+3);return{value:r,description:"".concat(r,"px")}}}function ce(e,t,n){if(!(7>n)){var r=R.getShortAt(e,t+5);return{value:r,description:"".concat(r,"px")}}}function fe(e,t,n,r){if(!(8+3*n>r)){for(var i=[],o=0;o<n;o++){var a=t+8+3*o;i.push([R.getByteAt(e,a),R.getByteAt(e,a+1),R.getByteAt(e,a+2)])}return{value:i,description:i.length>1?se(i)+le(i):""}}}function se(e){var t={1:"Y",2:"Cb",3:"Cr",4:"I",5:"Q"};return e.map((function(e){return t[e[0]]})).join("")}function le(e){var t={17:"4:4:4 (1 1)",18:"4:4:0 (1 2)",20:"4:4:1 (1 4)",33:"4:2:2 (2 1)",34:"4:2:0 (2 2)",36:"4:2:1 (2 4)",65:"4:1:1 (4 1)",66:"4:1:0 (4 2)"};return 0===e.length||void 0===e[0][1]||void 0===t[e[0][1]]?"":t[e[0][1]]}var de={iptc:{256:{name:"Model Version",description:function(e){return""+((e[0]<<8)+e[1])}},261:{name:"Destination",repeatable:1},276:{name:"File Format",description:function(e){return""+((e[0]<<8)+e[1])}},278:{name:"File Format Version",description:function(e){return""+((e[0]<<8)+e[1])}},286:"Service Identifier",296:"Envelope Number",306:"Product ID",316:"Envelope Priority",326:{name:"Date Sent",description:pe},336:{name:"Time Sent",description:me},346:{name:"Coded Character Set",description:ge,encoding_name:ge},356:"UNO",376:{name:"ARM Identifier",description:function(e){return""+((e[0]<<8)+e[1])}},378:{name:"ARM Version",description:function(e){return""+((e[0]<<8)+e[1])}},512:{name:"Record Version",description:function(e){return""+((e[0]<<8)+e[1])}},515:"Object Type Reference",516:"Object Attribute Reference",517:"Object Name",519:"Edit Status",520:{name:"Editorial Update",description:function(e){return"01"===d(e)?"Additional Language":"Unknown"}},522:"Urgency",524:{name:"Subject Reference",repeatable:1,description:function(e){var t=d(e).split(":");return t[2]+(t[3]?"/"+t[3]:"")+(t[4]?"/"+t[4]:"")}},527:"Category",532:{name:"Supplemental Category",repeatable:1},534:"Fixture Identifier",537:{name:"Keywords",repeatable:1},538:{name:"Content Location Code",repeatable:1},539:{name:"Content Location Name",repeatable:1},542:"Release Date",547:"Release Time",549:"Expiration Date",550:"Expiration Time",552:"Special Instructions",554:{name:"Action Advised",description:function(e){var t=d(e);return"01"===t?"Object Kill":"02"===t?"Object Replace":"03"===t?"Object Append":"04"===t?"Object Reference":"Unknown"}},557:{name:"Reference Service",repeatable:1},559:{name:"Reference Date",repeatable:1},562:{name:"Reference Number",repeatable:1},567:{name:"Date Created",description:pe},572:{name:"Time Created",description:me},574:{name:"Digital Creation Date",description:pe},575:{name:"Digital Creation Time",description:me},577:"Originating Program",582:"Program Version",587:{name:"Object Cycle",description:function(e){var t=d(e);return"a"===t?"morning":"p"===t?"evening":"b"===t?"both":"Unknown"}},592:{name:"By-line",repeatable:1},597:{name:"By-line Title",repeatable:1},602:"City",604:"Sub-location",607:"Province/State",612:"Country/Primary Location Code",613:"Country/Primary Location Name",615:"Original Transmission Reference",617:"Headline",622:"Credit",627:"Source",628:"Copyright Notice",630:{name:"Contact",repeatable:1},632:"Caption/Abstract",634:{name:"Writer/Editor",repeatable:1},637:{name:"Rasterized Caption",description:function(e){return e}},642:"Image Type",643:{name:"Image Orientation",description:function(e){var t=d(e);return"P"===t?"Portrait":"L"===t?"Landscape":"S"===t?"Square":"Unknown"}},647:"Language Identifier",662:{name:"Audio Type",description:function(e){var t=d(e),n=t.charAt(0),r=t.charAt(1),i="";return"1"===n?i+="Mono":"2"===n&&(i+="Stereo"),"A"===r?i+=", actuality":"C"===r?i+=", question and answer session":"M"===r?i+=", music, transmitted by itself":"Q"===r?i+=", response to a question":"R"===r?i+=", raw sound":"S"===r?i+=", scener":"V"===r?i+=", voicer":"W"===r&&(i+=", wrap"),""!==i?i:t}},663:{name:"Audio Sampling Rate",description:function(e){return parseInt(d(e),10)+" Hz"}},664:{name:"Audio Sampling Resolution",description:function(e){var t=parseInt(d(e),10);return t+(1===t?" bit":" bits")}},665:{name:"Audio Duration",description:function(e){var t=d(e);return t.length>=6?t.substr(0,2)+":"+t.substr(2,2)+":"+t.substr(4,2):t}},666:"Audio Outcue",698:"Short Document ID",699:"Unique Document ID",700:"Owner ID",712:{name:function(e){return 2===e.length?"ObjectData Preview File Format":"Record 2 destination"},description:function(e){if(2===e.length){var t=(e[0]<<8)+e[1];return 0===t?"No ObjectData":1===t?"IPTC-NAA Digital Newsphoto Parameter Record":2===t?"IPTC7901 Recommended Message Format":3===t?"Tagged Image File Format (Adobe/Aldus Image data)":4===t?"Illustrator (Adobe Graphics data)":5===t?"AppleSingle (Apple Computer Inc)":6===t?"NAA 89-3 (ANPA 1312)":7===t?"MacBinary II":8===t?"IPTC Unstructured Character Oriented File Format (UCOFF)":9===t?"United Press International ANPA 1312 variant":10===t?"United Press International Down-Load Message":11===t?"JPEG File Interchange (JFIF)":12===t?"Photo-CD Image-Pac (Eastman Kodak)":13===t?"Microsoft Bit Mapped Graphics File [*.BMP]":14===t?"Digital Audio File [*.WAV] (Microsoft & Creative Labs)":15===t?"Audio plus Moving Video [*.AVI] (Microsoft)":16===t?"PC DOS/Windows Executable Files [*.COM][*.EXE]":17===t?"Compressed Binary File [*.ZIP] (PKWare Inc)":18===t?"Audio Interchange File Format AIFF (Apple Computer Inc)":19===t?"RIFF Wave (Microsoft Corporation)":20===t?"Freehand (Macromedia/Aldus)":21===t?'Hypertext Markup Language "HTML" (The Internet Society)':22===t?"MPEG 2 Audio Layer 2 (Musicom), ISO/IEC":23===t?"MPEG 2 Audio Layer 3, ISO/IEC":24===t?"Portable Document File (*.PDF) Adobe":25===t?"News Industry Text Format (NITF)":26===t?"Tape Archive (*.TAR)":27===t?"Tidningarnas Telegrambyrå NITF version (TTNITF DTD)":28===t?"Ritzaus Bureau NITF version (RBNITF DTD)":29===t?"Corel Draw [*.CDR]":"Unknown format ".concat(t)}return d(e)}},713:{name:"ObjectData Preview File Format Version",description:function(e,t){var n={"00":{"00":"1"},"01":{"01":"1","02":"2","03":"3","04":"4"},"02":{"04":"4"},"03":{"01":"5.0","02":"6.0"},"04":{"01":"1.40"},"05":{"01":"2"},"06":{"01":"1"},11:{"01":"1.02"},20:{"01":"3.1","02":"4.0","03":"5.0","04":"5.5"},21:{"02":"2.0"}},r=d(e);if(t["ObjectData Preview File Format"]){var i=d(t["ObjectData Preview File Format"].value);if(n[i]&&n[i][r])return n[i][r]}return r}},714:"ObjectData Preview Data",1802:{name:"Size Mode",description:function(e){return e[0].toString()}},1812:{name:"Max Subfile Size",description:function(e){for(var t=0,n=0;n<e.length;n++)t=(t<<8)+e[n];return t.toString()}},1882:{name:"ObjectData Size Announced",description:function(e){for(var t=0,n=0;n<e.length;n++)t=(t<<8)+e[n];return t.toString()}},1887:{name:"Maximum ObjectData Size",description:function(e){for(var t=0,n=0;n<e.length;n++)t=(t<<8)+e[n];return t.toString()}}}};function pe(e){var t=d(e);return t.length>=8?t.substr(0,4)+"-"+t.substr(4,2)+"-"+t.substr(6,2):t}function me(e){var t=d(e),n=t;return t.length>=6&&(n=t.substr(0,2)+":"+t.substr(2,2)+":"+t.substr(4,2),11===t.length&&(n+=t.substr(6,1)+t.substr(7,2)+":"+t.substr(9,2))),n}function ge(e){var t=d(e);return"%G"===t?"UTF-8":"%5"===t?"Windows-1252":"%/G"===t?"UTF-8 Level 1":"%/H"===t?"UTF-8 Level 2":"%/I"===t?"UTF-8 Level 3":"/A"===t?"ISO-8859-1":"/B"===t?"ISO-8859-2":"/C"===t?"ISO-8859-3":"/D"===t?"ISO-8859-4":"/@"===t?"ISO-8859-5":"/G"===t?"ISO-8859-6":"/F"===t?"ISO-8859-7":"/H"===t?"ISO-8859-8":"Unknown"}var ve=function(e,t){var n=function(){if("undefined"!=typeof TextDecoder)return TextDecoder}();if("undefined"!=typeof n&&void 0!==e)try{return new n(e).decode(Uint8Array.from(t))}catch(e){}return function(e){try{return decodeURIComponent(escape(e))}catch(t){return e}}(t.map((function(e){return String.fromCharCode(e)})).join(""))},he=function(e,t){try{if(Array.isArray(e))return Ce(new DataView(Uint8Array.from(e).buffer),{size:e.length},0);var n=function(e,t){for(;t+12<=e.byteLength;){var n=ye(e,t);if(Se(n))return{naaBlock:n,dataOffset:t+12};t+=12+n.size+be(n)}throw Error("No IPTC NAA resource block.")}(e,t);return Ce(e,n.naaBlock,n.dataOffset)}catch(e){return{}}};function ye(e,t){if(943868237!==e.getUint32(t,0))throw Error("Not an IPTC resource block.");return{type:e.getUint16(t+4),size:e.getUint16(t+10)}}function Se(e){return 1028===e.type}function be(e){return e.size%2!=0?1:0}function Ce(e,t,n){for(var r={},i=void 0,o=n+t.size;n<o&&n<e.byteLength;){var a=Ie(e,n,r,i),u=a.tag,c=a.tagSize;if(null===u)break;"encoding"in u&&(i=u.encoding),void 0===r[u.name]||void 0===u.repeatable?r[u.name]={id:u.id,value:u.value,description:u.description}:(r[u.name]instanceof Array||(r[u.name]=[{id:r[u.name].id,value:r[u.name].value,description:r[u.name].description}]),r[u.name].push({id:u.id,value:u.value,description:u.description})),n+=5+c}return r}function Ie(e,t,n,r){if(function(e,t){return 28!==e.getUint8(t)}(e,t))return{tag:null,tagSize:0};var i=e.getUint16(t+1),o=e.getUint16(t+3),a=function(e,t,n){for(var r=[],i=0;i<n;i++)r.push(e.getUint8(t+i));return r}(e,t+5,o),u={id:i,name:Pe(de.iptc[i],i,a),value:a,description:Ae(de.iptc[i],a,n,r)};return function(e){return de.iptc[e]&&de.iptc[e].repeatable}(i)&&(u.repeatable=1),function(e){return de.iptc[e]&&void 0!==de.iptc[e].encoding_name}(i)&&(u.encoding=de.iptc[i].encoding_name(a)),{tag:u,tagSize:o}}function Pe(e,t,n){return e?function(e){return"string"==typeof e}(e)?e:function(e){return"function"==typeof e.name}(e)?e.name(n):e.name:"undefined-".concat(t)}function Ae(e,t,n,r){if(function(e){return e&&void 0!==e.description}(e))try{return e.description(t,n)}catch(e){}return function(e,t){return e&&t instanceof Array}(e,t)?ve(r,t):t}function we(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var Ue={"tiff:Orientation":function(e){return"1"===e?"Horizontal (normal)":"2"===e?"Mirror horizontal":"3"===e?"Rotate 180":"4"===e?"Mirror vertical":"5"===e?"Mirror horizontal and rotate 270 CW":"6"===e?"Rotate 90 CW":"7"===e?"Mirror horizontal and rotate 90 CW":"8"===e?"Rotate 270 CW":e},"exif:GPSLatitude":De,"exif:GPSLongitude":De};function De(e){var t,n=(2,function(e){if(Array.isArray(e))return e}(t=e.split(","))||function(e,t){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(e)){var n=[],r=1,i=0,o=void 0;try{for(var a,u=e[Symbol.iterator]();!(r=(a=u.next()).done)&&(n.push(a.value),2!==n.length);r=1);}catch(e){i=1,o=e}finally{try{r||null==u.return||u.return()}finally{if(i)throw o}}return n}}(t)||function(e,t){if(e){if("string"==typeof e)return we(e,2);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(n):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?we(e,2):void 0}}(t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),r=n[0],i=n[1];if(void 0!==r&&void 0!==i){var o=parseFloat(r),a=parseFloat(i),u=i.charAt(i.length-1);if(!Number.isNaN(o)&&!Number.isNaN(a))return""+(o+a/60)+u}return e}function Oe(e){return(Oe="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}var Te=function(e,t){return"string"==typeof e?xe({},e):function(e,t){if(0===t.length)return[];var n=[Me(e,t.slice(0,1))];return t.length>1&&n.push(Me(e,t.slice(1))),n}(e,t).reduce(xe,{})};function Me(e,t){for(var n=t.reduce((function(e,t){return e+t.length}),0),r=new Uint8Array(n),i=0,o=0;o<t.length;o++){var a=t[o],u=e.buffer.slice(a.dataOffset,a.dataOffset+a.length);r.set(new Uint8Array(u),i),i+=a.length}return new DataView(r.buffer)}function xe(e,t){try{return u(e,Ge(Fe(function e(t){for(var n=0;n<t.childNodes.length;n++){if("x:xmpmeta"===t.childNodes[n].tagName)return e(t.childNodes[n]);if("rdf:RDF"===t.childNodes[n].tagName)return t.childNodes[n]}throw Error()}(function(e){var t=function(){if("undefined"!=typeof DOMParser)return DOMParser;try{return require("xmldom").DOMParser}catch(e){return}}();if(!t)throw console.warn("Warning: DOMParser is not available. It is needed to be able to parse XMP tags."),Error();var n=new t,r="string"==typeof e?e:i(e,0,e.byteLength),o=n.parseFromString(r.replace(/^.+(<\?xpacket begin)/,"$1").replace(/(<\?xpacket end=".*"\?>).+$/,"$1"),"application/xml");if("parsererror"===o.documentElement.nodeName)throw Error(o.documentElement.textContent);return o}(t)),1)))}catch(t){return e}}function Fe(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=Le(e);return Re(n)?t?{}:ke(n[0]):Ne(n)}function Le(e){for(var t=[],n=0;n<e.childNodes.length;n++)t.push(e.childNodes[n]);return t}function Re(e){return 1===e.length&&"#text"===e[0].nodeName}function ke(e){return e.nodeValue}function Ne(e){var t={};return e.forEach((function(e){if(function(e){return e.nodeName&&"#text"!==e.nodeName}(e)){var n=function(e){return{attributes:Ee(e),value:Fe(e)}}(e);void 0!==t[e.nodeName]?(Array.isArray(t[e.nodeName])||(t[e.nodeName]=[t[e.nodeName]]),t[e.nodeName].push(n)):t[e.nodeName]=n}})),t}function Ee(e){for(var t={},n=0;n<e.attributes.length;n++)t[e.attributes[n].nodeName]=decodeURIComponent(escape(e.attributes[n].value));return t}function Ge(e){var t={};if("string"==typeof e)return e;for(var n in e){var r=e[n];Array.isArray(r)||(r=[r]),r.forEach((function(e){u(t,je(e.attributes)),"object"===Oe(e.value)&&u(t,Ye(e.value))}))}return t}function je(e){var t={};for(var n in e)Be(n)&&(t[We(n)]={value:e[n],attributes:{},description:He(e[n],n)});return t}function Be(e){return"rdf:parseType"!==e&&!ze(e)}function ze(e){return"xmlns"===e.split(":")[0]}function We(e){return/^MicrosoftPhoto(_\d+_)?:Rating$/i.test(e)?"RatingPercent":e.split(":")[1]}function He(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;if(Array.isArray(e))return Ve(e);if("object"===Oe(e))return Xe(e);try{return t&&"function"==typeof Ue[t]?Ue[t](e):decodeURIComponent(escape(e))}catch(t){return e}}function Ve(e){return e.map((function(e){return void 0!==e.value?He(e.value):He(e)})).join(", ")}function Xe(e){var t=[];for(var n in e)t.push("".concat(qe(n),": ").concat(e[n].value));return t.join("; ")}function qe(e){return"CiAdrCity"===e?"CreatorCity":"CiAdrCtry"===e?"CreatorCountry":"CiAdrExtadr"===e?"CreatorAddress":"CiAdrPcode"===e?"CreatorPostalCode":"CiAdrRegion"===e?"CreatorRegion":"CiEmailWork"===e?"CreatorWorkEmail":"CiTelWork"===e?"CreatorWorkPhone":"CiUrlWork"===e?"CreatorWorkUrl":e}function Ye(e){var t={};for(var n in e)ze(n)||(t[We(n)]=Ke(e[n],n));return t}function Ke(e,t){return _e(e)?Je(e,t):function(e){return"Resource"===e.attributes["rdf:parseType"]||void 0!==e.value["rdf:Description"]&&void 0===e.value["rdf:Description"].value["rdf:value"]}(e)?function(e,t){var n={value:{},attributes:{}};return void 0!==e.value["rdf:Description"]&&(u(n.value,je(e.value["rdf:Description"].attributes)),u(n.attributes,$e(e)),e=e.value["rdf:Description"]),u(n.value,Ye(e.value)),n.description=He(n.value,t),n}(e,t):function(e){return 0===Object.keys(e.value).length&&void 0===e.attributes["rdf:resource"]}(e)?function(e,t){var n=je(e.attributes);return{value:n,attributes:{},description:He(n,t)}}(e,t):function(e){return void 0!==Qe(e.value)}(e)?function(e,t){var n=Qe(e.value).value["rdf:li"],r=$e(e),i=[];return void 0===n?n=[]:Array.isArray(n)||(n=[n]),n.forEach((function(e){i.push(function(e){return _e(e)?Je(e):function(e){return"Resource"===e.attributes["rdf:parseType"]}(e)?Ye(e.value):{value:e.value,attributes:$e(e),description:He(e.value)}}(e))})),{value:i,attributes:r,description:He(i,t)}}(e,t):function(e,t){var n=Ze(e)||Ge(e.value);return{value:n,attributes:$e(e),description:He(n,t)}}(e,t)}function _e(e){return"Resource"===e.attributes["rdf:parseType"]&&void 0!==e.value["rdf:value"]||void 0!==e.value["rdf:Description"]&&void 0!==e.value["rdf:Description"].value["rdf:value"]}function Je(e,t){var n=$e(e);void 0!==e.value["rdf:Description"]&&(e=e.value["rdf:Description"]),u(n,$e(e),function(e){var t={};for(var n in e.value)"rdf:value"===n||ze(n)||(t[We(n)]=e.value[n].value);return t}(e));var r=function(e){return Ze(e.value["rdf:value"])||e.value["rdf:value"].value}(e);return{value:r,attributes:n,description:He(r,t)}}function $e(e){var t={};for(var n in e.attributes)"rdf:parseType"===n||"rdf:resource"===n||ze(n)||(t[We(n)]=e.attributes[n]);return t}function Qe(e){return e["rdf:Bag"]||e["rdf:Seq"]||e["rdf:Alt"]}function Ze(e){return e.attributes&&e.attributes["rdf:resource"]}var et={desc:{name:"ICC Description"},cprt:{name:"ICC Copyright"},dmdd:{name:"ICC Device Model Description"},vued:{name:"ICC Viewing Conditions Description"},dmnd:{name:"ICC Device Manufacturer for Display"},tech:{name:"Technology"}},tt={4:{name:"Preferred CMM type",value:function(e,t){return i(e,t,4)},description:function(e){return null!==e?nt(e):""}},8:{name:"Profile Version",value:function(e,t){return e.getUint8(t).toString(10)+"."+(e.getUint8(t+1)>>4).toString(10)+"."+(e.getUint8(t+1)%16).toString(10)}},12:{name:"Profile/Device class",value:function(e,t){return i(e,t,4)},description:function(e){switch(e.toLowerCase()){case"scnr":return"Input Device profile";case"mntr":return"Display Device profile";case"prtr":return"Output Device profile";case"link":return"DeviceLink profile";case"abst":return"Abstract profile";case"spac":return"ColorSpace profile";case"nmcl":return"NamedColor profile";case"cenc":return"ColorEncodingSpace profile";case"mid ":return"MultiplexIdentification profile";case"mlnk":return"MultiplexLink profile";case"mvis":return"MultiplexVisualization profile";default:return e}}},16:{name:"Color Space",value:function(e,t){return i(e,t,4)}},20:{name:"Connection Space",value:function(e,t){return i(e,t,4)}},24:{name:"ICC Profile Date",value:function(e,t){return function(e,t){var n=e.getUint16(t),r=e.getUint16(t+2)-1,i=e.getUint16(t+4),o=e.getUint16(t+6),a=e.getUint16(t+8),u=e.getUint16(t+10);return new Date(Date.UTC(n,r,i,o,a,u))}(e,t).toISOString()}},36:{name:"ICC Signature",value:function(e,t){return n=e.buffer.slice(t,t+4),String.fromCharCode.apply(null,new Uint8Array(n));var n}},40:{name:"Primary Platform",value:function(e,t){return i(e,t,4)},description:function(e){return nt(e)}},48:{name:"Device Manufacturer",value:function(e,t){return i(e,t,4)},description:function(e){return nt(e)}},52:{name:"Device Model Number",value:function(e,t){return i(e,t,4)}},64:{name:"Rendering Intent",value:function(e,t){return e.getUint32(t)},description:function(e){switch(e){case 0:return"Perceptual";case 1:return"Relative Colorimetric";case 2:return"Saturation";case 3:return"Absolute Colorimetric";default:return e}}},80:{name:"Profile Creator",value:function(e,t){return i(e,t,4)}}};function nt(e){switch(e.toLowerCase()){case"appl":return"Apple";case"adbe":return"Adobe";case"msft":return"Microsoft";case"sunw":return"Sun Microsystems";case"sgi":return"Silicon Graphics";case"tgnt":return"Taligent";default:return e}}var rt=function(e,t){try{for(var n=t.reduce((function(e,t){return e+t.length}),0),r=new Uint8Array(n),a=0,u=function(e){return Array.isArray(e)?new DataView(Uint8Array.from(e).buffer).buffer:e.buffer}(e),c=function(e){var n=t.find((function(t){return t.chunkNumber===e}));if(!n)throw Error("ICC chunk ".concat(e," not found"));var i=u.slice(n.offset,n.offset+n.length),o=new Uint8Array(i);r.set(o,a),a+=o.length},f=1;f<=t.length;f++)c(f);return function(e){var t=e.buffer,n=e.getUint32();if(e.byteLength!==n)throw Error("ICC profile length not matching");if(e.length<84)throw Error("ICC profile too short");for(var r={},a=Object.keys(tt),u=0;u<a.length;u++){var c=a[u],f=tt[c],s=f.value(e,parseInt(c,10)),l=s;f.description&&(l=f.description(s)),r[f.name]={value:s,description:l}}if("acsp"!==ot(t.slice(36,40)))throw Error("ICC profile: missing signature");if(function(e){return e.length<132}(t))return r;for(var d=e.getUint32(128),p=132,m=0;m<d;m++){if(it(t,p))return r;var g=i(e,p,4),v=e.getUint32(p+4),h=e.getUint32(p+8);if(v>t.length)return r;var y=i(e,v,4);if("desc"===y){var S=e.getUint32(v+8);if(S>h)return r;at(r,g,ot(t.slice(v+12,v+S+11)))}else if("mluc"===y){for(var b=e.getUint32(v+8),C=e.getUint32(v+12),I=v+16,P=[],A=0;A<b;A++){var w=i(e,I+0,2),U=i(e,I+2,2),D=e.getUint32(I+4),O=e.getUint32(I+8),T=o(e,v+O,D);P.push({languageCode:w,countryCode:U,text:T}),I+=C}if(1===b)at(r,g,P[0].text);else{for(var M={},x=0;x<P.length;x++)M["".concat(P[x].languageCode,"-").concat(P[x].countryCode)]=P[x].text;at(r,g,M)}}else"text"===y?at(r,g,ot(t.slice(v+8,v+h-7))):"sig "===y&&at(r,g,ot(t.slice(v+8,v+12)));p+=12}return r}(new DataView(r.buffer))}catch(e){return{}}};function it(e,t){return e.length<t+12}function ot(e){return String.fromCharCode.apply(null,new Uint8Array(e))}function at(e,t,n){et[t]?e[et[t].name]={value:n,description:n}:e[t]={value:n,description:n}}var ut=function(e,t){return{"Image Width":ct(e,t),"Image Height":ft(e,t),"Bit Depth":st(e,t),"Color Type":lt(e,t),Compression:dt(e,t),Filter:pt(e,t),Interlace:mt(e,t)}};function ct(e,t){if(!(t+0+4>e.byteLength)){var n=R.getLongAt(e,t);return{value:n,description:"".concat(n,"px")}}}function ft(e,t){if(!(t+4+4>e.byteLength)){var n=R.getLongAt(e,t+4);return{value:n,description:"".concat(n,"px")}}}function st(e,t){if(!(t+8+1>e.byteLength)){var n=R.getByteAt(e,t+8);return{value:n,description:"".concat(n)}}}function lt(e,t){if(!(t+9+1>e.byteLength)){var n=R.getByteAt(e,t+9);return{value:n,description:{0:"Grayscale",2:"RGB",3:"Palette",4:"Grayscale with Alpha",6:"RGB with Alpha"}[n]||"Unknown"}}}function dt(e,t){if(!(t+10+1>e.byteLength)){var n=R.getByteAt(e,t+10);return{value:n,description:0===n?"Deflate/Inflate":"Unknown"}}}function pt(e,t){if(!(t+11+1>e.byteLength)){var n=R.getByteAt(e,t+11);return{value:n,description:0===n?"Adaptive":"Unknown"}}}function mt(e,t){if(!(t+12+1>e.byteLength)){var n=R.getByteAt(e,t+12);return{value:n,description:{0:"Noninterlaced",1:"Adam7 Interlace"}[n]||"Unknown"}}}var gt=[6,7,99],vt=function(e,t,n){if((i=t)&&(void 0===i.Compression||gt.includes(i.Compression.value))&&i.JPEGInterchangeFormat&&i.JPEGInterchangeFormat.value&&i.JPEGInterchangeFormatLength&&i.JPEGInterchangeFormatLength.value){t.type="image/jpeg";var r=n+t.JPEGInterchangeFormat.value;t.image=e.buffer.slice(r,r+t.JPEGInterchangeFormatLength.value),c(t,"base64",(function(){return f(this.image)}))}var i;return t};function ht(e){this.name="MetadataMissingError",this.message=e||"No Exif data",this.stack=Error().stack}ht.prototype=Error();var yt={MetadataMissingError:ht},St=(t.default={load:bt,loadView:Ut,errors:yt},yt);function bt(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{expanded:0};return Ct(e)?It(e).then((function(e){return wt(e,t)})):Pt(e)?At(e).then((function(e){return wt(e,t)})):wt(e,t)}function Ct(e){return"string"==typeof e}function It(e){return"undefined"!=typeof window?fetch(e).then((function(e){return e.arrayBuffer()})):/^https?:\/\//.test(e)?function(e){return new Promise((function(t,n){(function(e){return/^https:\/\//.test(e)?require("https").get:require("http").get})(e)(e,(function(e){if(e.statusCode>=200&&e.statusCode<=299){var r=[];e.on("data",(function(e){return r.push(Buffer.from(e))})),e.on("error",(function(e){return n(e)})),e.on("end",(function(){return t(Buffer.concat(r))}))}else n("Could not fetch file: ".concat(e.statusCode," ").concat(e.statusMessage)),e.resume()})).on("error",(function(e){return n(e)}))}))}(e).then((function(e){return e})):function(e){return new Promise((function(t,n){var r=function(){try{return require("fs")}catch(e){return}}();r.open(e,(function(i,o){i?n(i):r.stat(e,(function(i,a){if(i)n(i);else{var u=Buffer.alloc(a.size);r.read(o,{buffer:u},(function(i){i?n(i):r.close(o,(function(n){n&&console.warn("Could not close file ".concat(e,":"),n),t(u)}))}))}}))}))}))}(e)}function Pt(e){return"undefined"!=typeof window&&"undefined"!=typeof File&&e instanceof File}function At(e){return new Promise((function(t,n){var r=new FileReader;r.onload=function(e){return t(e.target.result)},r.onerror=function(){return n(r.error)},r.readAsArrayBuffer(e)}))}function wt(e,t){return function(e){try{return Buffer.isBuffer(e)}catch(e){return 0}}(e)&&(e=new Uint8Array(e).buffer),Ut(function(e){try{return new DataView(e)}catch(t){return new l(e)}}(e),t)}function Ut(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{expanded:0},n=0,r={},i=x(e),o=i.fileDataOffset,c=i.tiffHeaderOffset,f=i.iptcDataOffset,s=i.xmpChunks,l=i.iccChunks,d=i.mpfDataOffset,p=i.pngHeaderOffset;if(Dt(o)){n=1;var m=oe(e,o);t.expanded?r.file=m:r=u({},r,m)}if(Ot(c)){n=1;var g=Y(e,c);if(g.Thumbnail&&(r.Thumbnail=g.Thumbnail,delete g.Thumbnail),t.expanded?(r.exif=g,Tt(r)):r=u({},r,g),g["IPTC-NAA"]&&!Mt(f)){var v=he(g["IPTC-NAA"].value,0);t.expanded?r.iptc=v:r=u({},r,v)}if(g.ApplicationNotes&&!xt(s)){var h=Te(a(g.ApplicationNotes.value));t.expanded?r.xmp=h:r=u({},r,h)}if(g.ICC_Profile&&!Ft(l)){var y=rt(g.ICC_Profile.value,[{offset:0,length:g.ICC_Profile.value.length,chunkNumber:1,chunksTotal:1}]);t.expanded?r.icc=y:r=u({},r,y)}}if(Mt(f)){n=1;var S=he(e,f);t.expanded?r.iptc=S:r=u({},r,S)}if(xt(s)){n=1;var b=Te(e,s);t.expanded?r.xmp=b:r=u({},r,b)}if(Ft(l)){n=1;var C=rt(e,l);t.expanded?r.icc=C:r=u({},r,C)}if(Lt(d)){n=1;var I=K(e,d);t.expanded?r.mpf=I:r=u({},r,I)}if(Rt(p)){n=1;var P=ut(e,p);t.expanded?r.pngFile=P:r=u({},r,P)}var A=vt(e,r.Thumbnail,c);if(A?(n=1,r.Thumbnail=A):delete r.Thumbnail,!n)throw new yt.MetadataMissingError;return r}function Dt(e){return void 0!==e}function Ot(e){return void 0!==e}function Tt(e){if(e.exif){if(e.exif.GPSLatitude&&e.exif.GPSLatitudeRef)try{e.gps=e.gps||{},e.gps.Latitude=m(e.exif.GPSLatitude.value),"S"===e.exif.GPSLatitudeRef.value.join("")&&(e.gps.Latitude=-e.gps.Latitude)}catch(e){}if(e.exif.GPSLongitude&&e.exif.GPSLongitudeRef)try{e.gps=e.gps||{},e.gps.Longitude=m(e.exif.GPSLongitude.value),"W"===e.exif.GPSLongitudeRef.value.join("")&&(e.gps.Longitude=-e.gps.Longitude)}catch(e){}if(e.exif.GPSAltitude&&e.exif.GPSAltitudeRef)try{e.gps=e.gps||{},e.gps.Altitude=e.exif.GPSAltitude.value[0]/e.exif.GPSAltitude.value[1],1===e.exif.GPSAltitudeRef.value&&(e.gps.Altitude=-e.gps.Altitude)}catch(e){}}}function Mt(e){return void 0!==e}function xt(e){return Array.isArray(e)&&e.length>0}function Ft(e){return Array.isArray(e)&&e.length>0}function Lt(e){return void 0!==e}function Rt(e){return void 0!==e}}])}));
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.ExifReader=t():e.ExifReader=t()}("undefined"!=typeof self?self:this,(function(){return function(){"use strict";var e={d:function(t,n){for(var r in n)e.o(n,r)&&!e.o(t,r)&&Object.defineProperty(t,r,{enumerable:1,get:n[r]})},o:function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r:function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:1})}},t={};function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function r(e,t,n){for(var r=[],i=0;i<n&&t+i<e.byteLength;i++)r.push(e.getUint8(t+i));return o(r)}function i(e,t,n){for(var r=[],i=0;i<n&&t+i<e.byteLength;i+=2)r.push(e.getUint16(t+i));return o(r)}function o(e){return e.map((function(e){return String.fromCharCode(e)})).join("")}function a(){for(var e=1;e<arguments.length;e++)for(var t in arguments[e])arguments[0][t]=arguments[e][t];return arguments[0]}function u(e,t,n){var r=0;Object.defineProperty(e,t,{get:function(){return r||(r=1,Object.defineProperty(e,t,{configurable:1,enumerable:1,value:n.apply(e),writable:1})),e[t]},configurable:1,enumerable:1})}function c(e){return"undefined"!=typeof btoa?btoa(Array.prototype.reduce.call(new Uint8Array(e),(function(e,t){return e+String.fromCharCode(t)}),"")):"undefined"!=typeof Buffer?void 0!==n(Buffer.from)?Buffer.from(e).toString("base64"):new Buffer(e).toString("base64"):void 0}function f(e){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},f(e)}e.r(t),e.d(t,{default:function(){return Rt},errors:function(){return kt},load:function(){return xt},loadView:function(){return Et}});var s=function(){function e(t){if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),function(e){return"object"!==f(e)||void 0===e.length||void 0===e.readUInt8||void 0===e.readUInt16LE||void 0===e.readUInt16BE||void 0===e.readUInt32LE||void 0===e.readUInt32BE||void 0===e.readInt32LE||void 0===e.readInt32BE}(t))throw Error("DataView: Passed buffer type is unsupported.");this.buffer=t,this.byteLength=this.buffer.length}var t;return(t=[{key:"getUint8",value:function(e){return this.buffer.readUInt8(e)}},{key:"getUint16",value:function(e,t){return t?this.buffer.readUInt16LE(e):this.buffer.readUInt16BE(e)}},{key:"getUint32",value:function(e,t){return t?this.buffer.readUInt32LE(e):this.buffer.readUInt32BE(e)}},{key:"getInt32",value:function(e,t){return t?this.buffer.readInt32LE(e):this.buffer.readInt32BE(e)}}])&&function(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||0,r.configurable=1,"value"in r&&(r.writable=1),Object.defineProperty(e,r.key,r)}}(e.prototype,t),e}();function l(e){return e.map((function(e){return String.fromCharCode(e)})).join("")}function d(e){if(e.length>=8){var t=l(e.slice(0,8));if("ASCII\0\0\0"===t)return l(e.slice(8));if("JIS\0\0\0\0\0"===t)return"[JIS encoded text]";if("UNICODE\0"===t)return"[Unicode encoded text]";if("\0\0\0\0\0\0\0\0"===t)return"[Undefined encoding]"}return"Undefined"}function p(e){return e[0][0]/e[0][1]+e[1][0]/e[1][1]/60+e[2][0]/e[2][1]/3600}var m=18761,g=m,v=function(e,t){if(e.getUint16(t)===m)return m;if(19789===e.getUint16(t))return 19789;throw Error("Illegal byte order value. Faulty image.")},h=65505;function y(e,t){return 65472===e.getUint16(t)}function S(e,t){return 65474===e.getUint16(t)}function b(e,t){return 65506===e.getUint16(t)&&"ICC_PROFILE\0"===r(e,t+4,12)}function C(e,t){return 65506===e.getUint16(t)&&"MPF\0"===r(e,t+4,4)}function I(e,t){return e.getUint16(t)===h&&"Exif"===r(e,t+4,4)&&0===e.getUint8(t+4+4)}function P(e,t){return e.getUint16(t)===h&&function(e,t){return"http://ns.adobe.com/xap/1.0/\0"===r(e,t+4,29)}(e,t)}function A(e,t){return e.getUint16(t)===h&&function(e,t){return"http://ns.adobe.com/xmp/extension/\0"===r(e,t+4,35)}(e,t)}function w(e,t){return{dataOffset:e+33,length:t-31}}function U(e,t){return{dataOffset:e+79,length:t-77}}function D(e,t){return 65517===e.getUint16(t)&&"Photoshop 3.0"===r(e,t+4,13)&&0===e.getUint8(t+4+13)}function T(e,t){var n=e.getUint16(t);return n>=65504&&n<=65519||65534===n||65472===n||65474===n||65476===n||65499===n||65501===n||65498===n}var O="‰PNG\r\n\n";function M(e,t){return"IHDR"===r(e,t+4,4)}function F(e,t){return"iTXt"===r(e,t+4,4)&&"XML:com.adobe.xmp\0"===r(e,t+8,18)}function L(e,t){t+=28;for(var n=0;n<2&&t<e.byteLength;)0===e.getUint8(t)&&n++,t++;if(!(n<2))return t}function R(e,t){var n=e.getUint32(t);return function(e){return 0===e}(n)?e.byteLength-t:function(e){return 1===e}(n)&&function(e,t){return 0===e.getUint32(t+8)}(e,t)?e.getUint32(t+12):n}var k=function(e){if(function(e){return e.byteLength>=4&&function(e){var t=e.getUint16(0)===g;return 42===e.getUint16(2,t)}(e)}(e))return{hasAppMarkers:1,tiffHeaderOffset:0};if(function(e){return e.byteLength>=2&&65496===e.getUint16(0)}(e))return function(e){for(var t,n,r,i,o,a,u,c,f=2;f+4+5<=e.byteLength;){if(y(e,f))n=f+2;else if(S(e,f))r=f+2;else if(I(e,f))t=e.getUint16(f+2),i=f+10;else if(P(e,f))a||(a=[]),t=e.getUint16(f+2),a.push(w(f,t));else if(A(e,f))a||(a=[]),t=e.getUint16(f+2),a.push(U(f,t));else if(D(e,f))t=e.getUint16(f+2),o=f+18;else if(b(e,f)){var s=f+18,l=(t=e.getUint16(f+2))-16,d=e.getUint8(f+16),p=e.getUint8(f+17);u||(u=[]),u.push({offset:s,length:l,chunkNumber:d,chunksTotal:p})}else if(C(e,f))t=e.getUint16(f+2),c=f+8;else{if(!T(e,f))break;t=e.getUint16(f+2)}f+=2+t}return{hasAppMarkers:f>2,fileDataOffset:n||r,tiffHeaderOffset:i,iptcDataOffset:o,xmpChunks:a,iccChunks:u,mpfDataOffset:c}}(e);if(function(e){return r(e,0,8)===O}(e))return function(e){for(var t={hasAppMarkers:0},n=8;n+4+4<=e.byteLength;){if(M(e,n))t.hasAppMarkers=1,t.pngHeaderOffset=n+8;else if(F(e,n)){var r=L(e,n);void 0!==r&&(t.hasAppMarkers=1,t.xmpChunks=[{dataOffset:r,length:e.getUint32(n+0)-(r-(n+8))}])}n+=e.getUint32(n+0)+4+4+4}return t}(e);if(function(e){var t=r(e,8,4);return"ftyp"===r(e,4,4)&&-1!==["heic","heix","hevc","hevx","heim","heis","hevm","hevs","mif1"].indexOf(t)}(e))return function(e){var t=function(e){for(var t=0;t+4+4<=e.byteLength;){var n=R(e,t);if(n>=8&&"meta"===r(e,t+4,4))return{offset:t,length:n};t+=n}return{offset:void 0,length:0}}(e),n=t.offset,i=t.length;if(void 0===n)return{hasAppMarkers:0};var o=Math.min(n+i,e.byteLength),a=function(e,t,n){for(var i={ilocOffset:void 0,exifItemOffset:void 0,colrOffset:void 0};t+4<=n&&(!i.ilocOffset||!i.exifItemOffset||!i.colrOffset);){var o=r(e,t,4);"iloc"===o?i.ilocOffset=t:"Exif"===o?i.exifItemOffset=t+-4:"colr"===o&&(i.colrOffset=t+-4),t++}return i}(e,n,o),u=a.exifItemOffset,c=a.ilocOffset,f=a.colrOffset,s=function(e,t,n,r){if(n&&t&&!(t+2>r)){var i=e.getUint16(t);for(n+=12;n+16<=r;){if(e.getUint16(n)===i){var o=e.getUint32(n+8);if(o+4<=e.byteLength)return o+(e.getUint32(o)+4)}n+=16}}}(e,u,c,o),l=function(e,t,n){if(t&&!(t+12>n)){var i=r(e,t+8,4);if("prof"===i||"rICC"===i)return[{offset:t+12,length:R(e,t)-12,chunkNumber:1,chunksTotal:1}]}}(e,f,o);return{hasAppMarkers:void 0!==s||void 0!==l,tiffHeaderOffset:s,iccChunks:l}}(e);if(function(e){return"RIFF"===r(e,0,4)&&"WEBP"===r(e,8,4)}(e))return function(e){for(var t,n,i,o=12,a=0;o+8<e.byteLength;){var u=r(e,o,4),c=e.getUint32(o+4,1);"EXIF"===u?(a=1,t="Exif\0\0"===r(e,o+8,6)?o+8+6:o+8):"XMP "===u?(a=1,n=[{dataOffset:o+8,length:c}]):"ICCP"===u&&(a=1,i=[{offset:o+8,length:c,chunkNumber:1,chunksTotal:1}]),o+=8+(c%2==0?c:c+1)}return{hasAppMarkers:a,tiffHeaderOffset:t,xmpChunks:n,iccChunks:i}}(e);throw Error("Invalid image format")},x={1:1,2:1,3:2,4:4,5:8,7:1,9:4,10:8,13:4},N={BYTE:1,ASCII:2,SHORT:3,LONG:4,RATIONAL:5,UNDEFINED:7,SLONG:9,SRATIONAL:10,IFD:13},E={getAsciiValue:function(e){return e.map((function(e){return String.fromCharCode(e)}))},getByteAt:G,getAsciiAt:function(e,t){return e.getUint8(t)},getShortAt:function(e,t,n){return e.getUint16(t,n===g)},getLongAt:B,getRationalAt:function(e,t,n){return[B(e,t,n),B(e,t+4,n)]},getUndefinedAt:function(e,t){return G(e,t)},getSlongAt:j,getSrationalAt:function(e,t,n){return[j(e,t,n),j(e,t+4,n)]},getIfdPointerAt:function(e,t,n){return B(e,t,n)},typeSizes:x,tagTypes:N,getTypeSize:function(e){if(void 0===N[e])throw Error("No such type found.");return x[N[e]]}};function G(e,t){return e.getUint8(t)}function B(e,t,n){return e.getUint32(t,n===g)}function j(e,t,n){return e.getInt32(t,n===g)}var z={LightSource:function(e){return 1===e?"Daylight":2===e?"Fluorescent":3===e?"Tungsten (incandescent light)":4===e?"Flash":9===e?"Fine weather":10===e?"Cloudy weather":11===e?"Shade":12===e?"Daylight fluorescent (D 5700 – 7100K)":13===e?"Day white fluorescent (N 4600 – 5400K)":14===e?"Cool white fluorescent (W 3900 – 4500K)":15===e?"White fluorescent (WW 3200 – 3700K)":17===e?"Standard light A":18===e?"Standard light B":19===e?"Standard light C":20===e?"D55":21===e?"D65":22===e?"D75":23===e?"D50":24===e?"ISO studio tungsten":255===e?"Other light source":"Unknown"}};function W(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function H(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var V={0:{name:"GPSVersionID",description:function(e){return 2===e[0]&&2===e[1]&&0===e[2]&&0===e[3]?"Version 2.2":"Unknown"}},1:{name:"GPSLatitudeRef",description:function(e){var t=e.join("");return"N"===t?"North latitude":"S"===t?"South latitude":"Unknown"}},2:{name:"GPSLatitude",description:p},3:{name:"GPSLongitudeRef",description:function(e){var t=e.join("");return"E"===t?"East longitude":"W"===t?"West longitude":"Unknown"}},4:{name:"GPSLongitude",description:p},5:{name:"GPSAltitudeRef",description:function(e){return 0===e?"Sea level":1===e?"Sea level reference (negative value)":"Unknown"}},6:{name:"GPSAltitude",description:function(e){return e[0]/e[1]+" m"}},7:{name:"GPSTimeStamp",description:function(e){return e.map((function(e){var t,n=(2,function(e){if(Array.isArray(e))return e}(t=e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,o=[],a=1,u=0;try{for(n=n.call(e);!(a=(r=n.next()).done)&&(o.push(r.value),2!==o.length);a=1);}catch(e){u=1,i=e}finally{try{a||null==n.return||n.return()}finally{if(u)throw i}}return o}}(t)||function(e,t){if(e){if("string"==typeof e)return H(e,2);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?H(e,2):void 0}}(t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),r=n[0]/n[1];return/^\d(\.|$)/.test("".concat(r))?"0".concat(r):r})).join(":")}},8:"GPSSatellites",9:{name:"GPSStatus",description:function(e){var t=e.join("");return"A"===t?"Measurement in progress":"V"===t?"Measurement Interoperability":"Unknown"}},10:{name:"GPSMeasureMode",description:function(e){var t=e.join("");return"2"===t?"2-dimensional measurement":"3"===t?"3-dimensional measurement":"Unknown"}},11:"GPSDOP",12:{name:"GPSSpeedRef",description:function(e){var t=e.join("");return"K"===t?"Kilometers per hour":"M"===t?"Miles per hour":"N"===t?"Knots":"Unknown"}},13:"GPSSpeed",14:{name:"GPSTrackRef",description:function(e){var t=e.join("");return"T"===t?"True direction":"M"===t?"Magnetic direction":"Unknown"}},15:"GPSTrack",16:{name:"GPSImgDirectionRef",description:function(e){var t=e.join("");return"T"===t?"True direction":"M"===t?"Magnetic direction":"Unknown"}},17:"GPSImgDirection",18:"GPSMapDatum",19:{name:"GPSDestLatitudeRef",description:function(e){var t=e.join("");return"N"===t?"North latitude":"S"===t?"South latitude":"Unknown"}},20:{name:"GPSDestLatitude",description:function(e){return e[0][0]/e[0][1]+e[1][0]/e[1][1]/60+e[2][0]/e[2][1]/3600}},21:{name:"GPSDestLongitudeRef",description:function(e){var t=e.join("");return"E"===t?"East longitude":"W"===t?"West longitude":"Unknown"}},22:{name:"GPSDestLongitude",description:function(e){return e[0][0]/e[0][1]+e[1][0]/e[1][1]/60+e[2][0]/e[2][1]/3600}},23:{name:"GPSDestBearingRef",description:function(e){var t=e.join("");return"T"===t?"True direction":"M"===t?"Magnetic direction":"Unknown"}},24:"GPSDestBearing",25:{name:"GPSDestDistanceRef",description:function(e){var t=e.join("");return"K"===t?"Kilometers":"M"===t?"Miles":"N"===t?"Knots":"Unknown"}},26:"GPSDestDistance",27:{name:"GPSProcessingMethod",description:d},28:{name:"GPSAreaInformation",description:d},29:"GPSDateStamp",30:{name:"GPSDifferential",description:function(e){return 0===e?"Measurement without differential correction":1===e?"Differential correction applied":"Unknown"}},31:"GPSHPositioningError"},X={1:"InteroperabilityIndex",2:{name:"InteroperabilityVersion",description:function(e){return l(e)}},4096:"RelatedImageFileFormat",4097:"RelatedImageWidth",4098:"RelatedImageHeight"},q={45056:{name:"MPFVersion",description:function(e){return l(e)}},45057:"NumberOfImages",45058:"MPEntry",45059:"ImageUIDList",45060:"TotalFrames"},Y=a({},{11:"ProcessingSoftware",254:{name:"SubfileType",description:function(e){return{0:"Full-resolution image",1:"Reduced-resolution image",2:"Single page of multi-page image",3:"Single page of multi-page reduced-resolution image",4:"Transparency mask",5:"Transparency mask of reduced-resolution image",6:"Transparency mask of multi-page image",7:"Transparency mask of reduced-resolution multi-page image",65537:"Alternate reduced-resolution image",4294967295:"Invalid"}[e]||"Unknown"}},255:{name:"OldSubfileType",description:function(e){return{0:"Full-resolution image",1:"Reduced-resolution image",2:"Single page of multi-page image"}[e]||"Unknown"}},256:"ImageWidth",257:"ImageLength",258:"BitsPerSample",259:"Compression",262:"PhotometricInterpretation",263:{name:"Thresholding",description:function(e){return{1:"No dithering or halftoning",2:"Ordered dither or halfton",3:"Randomized dither"}[e]||"Unknown"}},264:"CellWidth",265:"CellLength",266:{name:"FillOrder",description:function(e){return{1:"Normal",2:"Reversed"}[e]||"Unknown"}},269:"DocumentName",270:"ImageDescription",271:"Make",272:"Model",273:"StripOffsets",274:{name:"Orientation",description:function(e){return 1===e?"top-left":2===e?"top-right":3===e?"bottom-right":4===e?"bottom-left":5===e?"left-top":6===e?"right-top":7===e?"right-bottom":8===e?"left-bottom":"Undefined"}},277:"SamplesPerPixel",278:"RowsPerStrip",279:"StripByteCounts",280:"MinSampleValue",281:"MaxSampleValue",282:{name:"XResolution",description:function(e){return""+Math.round(e[0]/e[1])}},283:{name:"YResolution",description:function(e){return""+Math.round(e[0]/e[1])}},284:"PlanarConfiguration",285:"PageName",286:{name:"XPosition",description:function(e){return""+Math.round(e[0]/e[1])}},287:{name:"YPosition",description:function(e){return""+Math.round(e[0]/e[1])}},290:{name:"GrayResponseUnit",description:function(e){return{1:"0.1",2:"0.001",3:"0.0001",4:"1e-05",5:"1e-06"}[e]||"Unknown"}},296:{name:"ResolutionUnit",description:function(e){return 2===e?"inches":3===e?"centimeters":"Unknown"}},297:"PageNumber",301:"TransferFunction",305:"Software",306:"DateTime",315:"Artist",316:"HostComputer",317:"Predictor",318:{name:"WhitePoint",description:function(e){return e.map((function(e){return"".concat(e[0],"/").concat(e[1])})).join(", ")}},319:{name:"PrimaryChromaticities",description:function(e){return e.map((function(e){return"".concat(e[0],"/").concat(e[1])})).join(", ")}},321:"HalftoneHints",322:"TileWidth",323:"TileLength",330:"A100DataOffset",332:{name:"InkSet",description:function(e){return{1:"CMYK",2:"Not CMYK"}[e]||"Unknown"}},337:"TargetPrinter",338:{name:"ExtraSamples",description:function(e){return{0:"Unspecified",1:"Associated Alpha",2:"Unassociated Alpha"}[e]||"Unknown"}},339:{name:"SampleFormat",description:function(e){var t={1:"Unsigned",2:"Signed",3:"Float",4:"Undefined",5:"Complex int",6:"Complex float"};return Array.isArray(e)?e.map((function(e){return t[e]||"Unknown"})).join(", "):"Unknown"}},513:"JPEGInterchangeFormat",514:"JPEGInterchangeFormatLength",529:{name:"YCbCrCoefficients",description:function(e){return e.map((function(e){return""+e[0]/e[1]})).join("/")}},530:"YCbCrSubSampling",531:{name:"YCbCrPositioning",description:function(e){return 1===e?"centered":2===e?"co-sited":"undefined "+e}},532:{name:"ReferenceBlackWhite",description:function(e){return e.map((function(e){return""+e[0]/e[1]})).join(", ")}},700:"ApplicationNotes",18246:"Rating",18249:"RatingPercent",33432:{name:"Copyright",description:function(e){return e.join("; ")}},33550:"PixelScale",33723:"IPTC-NAA",33920:"IntergraphMatrix",33922:"ModelTiePoint",34118:"SEMInfo",34264:"ModelTransform",34377:"PhotoshopSettings",34665:"Exif IFD Pointer",34675:"ICC_Profile",34735:"GeoTiffDirectory",34736:"GeoTiffDoubleParams",34737:"GeoTiffAsciiParams",34853:"GPS Info IFD Pointer",40091:"XPTitle",40092:"XPComment",40093:"XPAuthor",40094:"XPKeywords",40095:"XPSubject",42112:"GDALMetadata",42113:"GDALNoData",50341:"PrintIM",50707:"DNGBackwardVersion",50708:"UniqueCameraModel",50709:"LocalizedCameraModel",50721:"ColorMatrix1",50722:"ColorMatrix2",50723:"CameraCalibration1",50724:"CameraCalibration2",50725:"ReductionMatrix1",50726:"ReductionMatrix2",50727:"AnalogBalance",50728:"AsShotNeutral",50729:"AsShotWhiteXY",50730:"BaselineExposure",50731:"BaselineNoise",50732:"BaselineSharpness",50734:"LinearResponseLimit",50735:"CameraSerialNumber",50736:"DNGLensInfo",50739:"ShadowScale",50741:{name:"MakerNoteSafety",description:function(e){return{0:"Unsafe",1:"Safe"}[e]||"Unknown"}},50778:{name:"CalibrationIlluminant1",description:z.LightSource},50779:{name:"CalibrationIlluminant2",description:z.LightSource},50781:"RawDataUniqueID",50827:"OriginalRawFileName",50828:"OriginalRawFileData",50831:"AsShotICCProfile",50832:"AsShotPreProfileMatrix",50833:"CurrentICCProfile",50834:"CurrentPreProfileMatrix",50879:"ColorimetricReference",50885:"SRawType",50898:"PanasonicTitle",50899:"PanasonicTitle2",50931:"CameraCalibrationSig",50932:"ProfileCalibrationSig",50933:"ProfileIFD",50934:"AsShotProfileName",50936:"ProfileName",50937:"ProfileHueSatMapDims",50938:"ProfileHueSatMapData1",50939:"ProfileHueSatMapData2",50940:"ProfileToneCurve",50941:{name:"ProfileEmbedPolicy",description:function(e){return{0:"Allow Copying",1:"Embed if Used",2:"Never Embed",3:"No Restrictions"}[e]||"Unknown"}},50942:"ProfileCopyright",50964:"ForwardMatrix1",50965:"ForwardMatrix2",50966:"PreviewApplicationName",50967:"PreviewApplicationVersion",50968:"PreviewSettingsName",50969:"PreviewSettingsDigest",50970:{name:"PreviewColorSpace",description:function(e){return{1:"Gray Gamma 2.2",2:"sRGB",3:"Adobe RGB",4:"ProPhoto RGB"}[e]||"Unknown"}},50971:"PreviewDateTime",50972:"RawImageDigest",50973:"OriginalRawFileDigest",50981:"ProfileLookTableDims",50982:"ProfileLookTableData",51043:"TimeCodes",51044:"FrameRate",51058:"TStop",51081:"ReelName",51089:"OriginalDefaultFinalSize",51090:"OriginalBestQualitySize",51091:"OriginalDefaultCropSize",51105:"CameraLabel",51107:{name:"ProfileHueSatMapEncoding",description:function(e){return{0:"Linear",1:"sRGB"}[e]||"Unknown"}},51108:{name:"ProfileLookTableEncoding",description:function(e){return{0:"Linear",1:"sRGB"}[e]||"Unknown"}},51109:"BaselineExposureOffset",51110:{name:"DefaultBlackRender",description:function(e){return{0:"Auto",1:"None"}[e]||"Unknown"}},51111:"NewRawImageDigest",51112:"RawToPreviewGain"},{33434:{name:"ExposureTime",description:function(e){return 0!==e[0]?"1/".concat(Math.round(e[1]/e[0])):"0/".concat(e[1])}},33437:{name:"FNumber",description:function(e){return"f/".concat(e[0]/e[1])}},34850:{name:"ExposureProgram",description:function(e){return 0===e?"Undefined":1===e?"Manual":2===e?"Normal program":3===e?"Aperture priority":4===e?"Shutter priority":5===e?"Creative program":6===e?"Action program":7===e?"Portrait mode":8===e?"Landscape mode":9===e?"Bulb":"Unknown"}},34852:"SpectralSensitivity",34855:"ISOSpeedRatings",34856:{name:"OECF",description:function(){return"[Raw OECF table data]"}},34858:"TimeZoneOffset",34859:"SelfTimerMode",34864:{name:"SensitivityType",description:function(e){return{1:"Standard Output Sensitivity",2:"Recommended Exposure Index",3:"ISO Speed",4:"Standard Output Sensitivity and Recommended Exposure Index",5:"Standard Output Sensitivity and ISO Speed",6:"Recommended Exposure Index and ISO Speed",7:"Standard Output Sensitivity, Recommended Exposure Index and ISO Speed"}[e]||"Unknown"}},34865:"StandardOutputSensitivity",34866:"RecommendedExposureIndex",34867:"ISOSpeed",34868:"ISOSpeedLatitudeyyy",34869:"ISOSpeedLatitudezzz",36864:{name:"ExifVersion",description:function(e){return l(e)}},36867:"DateTimeOriginal",36868:"DateTimeDigitized",36873:"GooglePlusUploadCode",36880:"OffsetTime",36881:"OffsetTimeOriginal",36882:"OffsetTimeDigitized",37121:{name:"ComponentsConfiguration",description:function(e){return e.map((function(e){return 49===e?"Y":50===e?"Cb":51===e?"Cr":52===e?"R":53===e?"G":54===e?"B":void 0})).join("")}},37122:"CompressedBitsPerPixel",37377:{name:"ShutterSpeedValue",description:function(e){return"1/".concat(Math.round(Math.pow(2,e[0]/e[1])))}},37378:{name:"ApertureValue",description:function(e){return Math.pow(Math.sqrt(2),e[0]/e[1]).toFixed(2)}},37379:"BrightnessValue",37380:"ExposureBiasValue",37381:{name:"MaxApertureValue",description:function(e){return Math.pow(Math.sqrt(2),e[0]/e[1]).toFixed(2)}},37382:{name:"SubjectDistance",description:function(e){return e[0]/e[1]+" m"}},37383:{name:"MeteringMode",description:function(e){return 1===e?"Average":2===e?"CenterWeightedAverage":3===e?"Spot":4===e?"MultiSpot":5===e?"Pattern":6===e?"Partial":255===e?"Other":"Unknown"}},37384:{name:"LightSource",description:z.LightSource},37385:{name:"Flash",description:function(e){return 0===e?"Flash did not fire":1===e?"Flash fired":5===e?"Strobe return light not detected":7===e?"Strobe return light detected":9===e?"Flash fired, compulsory flash mode":13===e?"Flash fired, compulsory flash mode, return light not detected":15===e?"Flash fired, compulsory flash mode, return light detected":16===e?"Flash did not fire, compulsory flash mode":24===e?"Flash did not fire, auto mode":25===e?"Flash fired, auto mode":29===e?"Flash fired, auto mode, return light not detected":31===e?"Flash fired, auto mode, return light detected":32===e?"No flash function":65===e?"Flash fired, red-eye reduction mode":69===e?"Flash fired, red-eye reduction mode, return light not detected":71===e?"Flash fired, red-eye reduction mode, return light detected":73===e?"Flash fired, compulsory flash mode, red-eye reduction mode":77===e?"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected":79===e?"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected":89===e?"Flash fired, auto mode, red-eye reduction mode":93===e?"Flash fired, auto mode, return light not detected, red-eye reduction mode":95===e?"Flash fired, auto mode, return light detected, red-eye reduction mode":"Unknown"}},37386:{name:"FocalLength",description:function(e){return e[0]/e[1]+" mm"}},37393:"ImageNumber",37394:{name:"SecurityClassification",description:function(e){return{C:"Confidential",R:"Restricted",S:"Secret",T:"Top Secret",U:"Unclassified"}[e]||"Unknown"}},37395:"ImageHistory",37396:{name:"SubjectArea",description:function(e){return 2===e.length?"Location; X: ".concat(e[0],", Y: ").concat(e[1]):3===e.length?"Circle; X: ".concat(e[0],", Y: ").concat(e[1],", diameter: ").concat(e[2]):4===e.length?"Rectangle; X: ".concat(e[0],", Y: ").concat(e[1],", width: ").concat(e[2],", height: ").concat(e[3]):"Unknown"}},37500:{name:"MakerNote",description:function(){return"[Raw maker note data]"}},37510:{name:"UserComment",description:d},37520:"SubSecTime",37521:"SubSecTimeOriginal",37522:"SubSecTimeDigitized",37888:{name:"AmbientTemperature",description:function(e){return e[0]/e[1]+" °C"}},37889:{name:"Humidity",description:function(e){return e[0]/e[1]+" %"}},37890:{name:"Pressure",description:function(e){return e[0]/e[1]+" hPa"}},37891:{name:"WaterDepth",description:function(e){return e[0]/e[1]+" m"}},37892:{name:"Acceleration",description:function(e){return e[0]/e[1]+" mGal"}},37893:{name:"CameraElevationAngle",description:function(e){return e[0]/e[1]+" °"}},40960:{name:"FlashpixVersion",description:function(e){return e.map((function(e){return String.fromCharCode(e)})).join("")}},40961:{name:"ColorSpace",description:function(e){return 1===e?"sRGB":65535===e?"Uncalibrated":"Unknown"}},40962:"PixelXDimension",40963:"PixelYDimension",40964:"RelatedSoundFile",40965:"Interoperability IFD Pointer",41483:"FlashEnergy",41484:{name:"SpatialFrequencyResponse",description:function(){return"[Raw SFR table data]"}},41486:"FocalPlaneXResolution",41487:"FocalPlaneYResolution",41488:{name:"FocalPlaneResolutionUnit",description:function(e){return 2===e?"inches":3===e?"centimeters":"Unknown"}},41492:{name:"SubjectLocation",description:function(e){var t,n=(2,function(e){if(Array.isArray(e))return e}(t=e)||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,o=[],a=1,u=0;try{for(n=n.call(e);!(a=(r=n.next()).done)&&(o.push(r.value),2!==o.length);a=1);}catch(e){u=1,i=e}finally{try{a||null==n.return||n.return()}finally{if(u)throw i}}return o}}(t)||function(e,t){if(e){if("string"==typeof e)return W(e,2);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?W(e,2):void 0}}(t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),r=n[0],i=n[1];return"X: ".concat(r,", Y: ").concat(i)}},41493:"ExposureIndex",41495:{name:"SensingMethod",description:function(e){return 1===e?"Undefined":2===e?"One-chip color area sensor":3===e?"Two-chip color area sensor":4===e?"Three-chip color area sensor":5===e?"Color sequential area sensor":7===e?"Trilinear sensor":8===e?"Color sequential linear sensor":"Unknown"}},41728:{name:"FileSource",description:function(e){return 3===e?"DSC":"Unknown"}},41729:{name:"SceneType",description:function(e){return 1===e?"A directly photographed image":"Unknown"}},41730:{name:"CFAPattern",description:function(){return"[Raw CFA pattern table data]"}},41985:{name:"CustomRendered",description:function(e){return 0===e?"Normal process":1===e?"Custom process":"Unknown"}},41986:{name:"ExposureMode",description:function(e){return 0===e?"Auto exposure":1===e?"Manual exposure":2===e?"Auto bracket":"Unknown"}},41987:{name:"WhiteBalance",description:function(e){return 0===e?"Auto white balance":1===e?"Manual white balance":"Unknown"}},41988:{name:"DigitalZoomRatio",description:function(e){return 0===e[0]?"Digital zoom was not used":""+e[0]/e[1]}},41989:{name:"FocalLengthIn35mmFilm",description:function(e){return 0===e?"Unknown":e}},41990:{name:"SceneCaptureType",description:function(e){return 0===e?"Standard":1===e?"Landscape":2===e?"Portrait":3===e?"Night scene":"Unknown"}},41991:{name:"GainControl",description:function(e){return 0===e?"None":1===e?"Low gain up":2===e?"High gain up":3===e?"Low gain down":4===e?"High gain down":"Unknown"}},41992:{name:"Contrast",description:function(e){return 0===e?"Normal":1===e?"Soft":2===e?"Hard":"Unknown"}},41993:{name:"Saturation",description:function(e){return 0===e?"Normal":1===e?"Low saturation":2===e?"High saturation":"Unknown"}},41994:{name:"Sharpness",description:function(e){return 0===e?"Normal":1===e?"Soft":2===e?"Hard":"Unknown"}},41995:{name:"DeviceSettingDescription",description:function(){return"[Raw device settings table data]"}},41996:{name:"SubjectDistanceRange",description:function(e){return 1===e?"Macro":2===e?"Close view":3===e?"Distant view":"Unknown"}},42016:"ImageUniqueID",42032:"CameraOwnerName",42033:"BodySerialNumber",42034:{name:"LensSpecification",description:function(e){var t="".concat(e[0][0]/e[0][1],"-").concat(e[1][0]/e[1][1]," mm");return 0===e[3][1]?"".concat(t," f/?"):"".concat(t," f/").concat(1/(e[2][1]/e[2][1]/(e[3][0]/e[3][1])))}},42035:"LensMake",42036:"LensModel",42037:"LensSerialNumber",42080:{name:"CompositeImage",description:function(e){return{1:"Not a Composite Image",2:"General Composite Image",3:"Composite Image Captured While Shooting"}[e]||"Unknown"}},42081:"SourceImageNumberOfCompositeImage",42082:"SourceExposureTimesOfCompositeImage",42240:"Gamma",59932:"Padding",59933:"OffsetSchema",65e3:"OwnerName",65001:"SerialNumber",65002:"Lens",65100:"RawFile",65101:"Converter",65102:"WhiteBalance",65105:"Exposure",65106:"Shadows",65107:"Brightness",65108:"Contrast",65109:"Saturation",65110:"Sharpness",65111:"Smoothness",65112:"MoireFilter"}),K={"0th":Y,exif:Y,gps:V,interoperability:X,mpf:q},J={1:E.getByteAt,2:E.getAsciiAt,3:E.getShortAt,4:E.getLongAt,5:E.getRationalAt,7:E.getUndefinedAt,9:E.getSlongAt,10:E.getSrationalAt,13:E.getIfdPointerAt},_=function(e,t,n){var r=v(e,t),i=function(e,t,n,r){return ie(e,"0th",t,Q(e,t,n),n,r)}(e,t,r,n);return function(e,t,n,r,i){return void 0!==e["Interoperability IFD Pointer"]?a(e,ie(t,"interoperability",n,n+e["Interoperability IFD Pointer"].value,r,i)):e}(i=function(e,t,n,r,i){return void 0!==e["GPS Info IFD Pointer"]?a(e,ie(t,"gps",n,n+e["GPS Info IFD Pointer"].value,r,i)):e}(i=function(e,t,n,r,i){return void 0!==e["Exif IFD Pointer"]?a(e,ie(t,"exif",n,n+e["Exif IFD Pointer"].value,r,i)):e}(i,e,t,r,n),e,t,r,n),e,t,r,n)},$=function(e,t,n){var r=v(e,t);return function(e,t,n,r){var i=16;if(!n.MPEntry)return n;for(var o=[],a=0;a<Math.ceil(n.MPEntry.value.length/i);a++){o[a]={};var f=Z(n.MPEntry.value,a*i,E.getTypeSize("LONG"),r);o[a].ImageFlags=ee(f),o[a].ImageFormat=te(f),o[a].ImageType=ne(f);var s=Z(n.MPEntry.value,a*i+4,E.getTypeSize("LONG"),r);o[a].ImageSize={value:s,description:""+s};var l=re(a)?0:Z(n.MPEntry.value,a*i+8,E.getTypeSize("LONG"),r)+t;o[a].ImageOffset={value:l,description:""+l};var d=Z(n.MPEntry.value,a*i+12,E.getTypeSize("SHORT"),r);o[a].DependentImage1EntryNumber={value:d,description:""+d};var p=Z(n.MPEntry.value,a*i+14,E.getTypeSize("SHORT"),r);o[a].DependentImage2EntryNumber={value:p,description:""+p},o[a].image=e.buffer.slice(l,l+s),u(o[a],"base64",(function(){return c(this.image)}))}return n.Images=o,n}(e,t,ie(e,"mpf",t,Q(e,t,r),r,n),r)};function Q(e,t,n){return t+E.getLongAt(e,t+4,n)}function Z(e,t,n,r){if(r===g){for(var i=0,o=0;o<n;o++)i+=e[t+o]<<8*o;return i}for(var a=0,u=0;u<n;u++)a+=e[t+u]<<8*(n-1-u);return a}function ee(e){var t=[e>>31&1,e>>30&1,e>>29&1],n=[];return t[0]&&n.push("Dependent Parent Image"),t[1]&&n.push("Dependent Child Image"),t[2]&&n.push("Representative Image"),{value:t,description:n.join(", ")||"None"}}function te(e){var t=e>>24&7;return{value:t,description:0===t?"JPEG":"Unknown"}}function ne(e){var t=16777215&e;return{value:t,description:{196608:"Baseline MP Primary Image",65537:"Large Thumbnail (VGA equivalent)",65538:"Large Thumbnail (Full HD equivalent)",131073:"Multi-Frame Image (Panorama)",131074:"Multi-Frame Image (Disparity)",131075:"Multi-Frame Image (Multi-Angle)",0:"Undefined"}[t]||"Unknown"}}function re(e){return 0===e}function ie(e,t,n,r,i,o){var a=E.getTypeSize("SHORT"),u={},c=function(e,t,n){return t+E.getTypeSize("SHORT")<=e.byteLength?E.getShortAt(e,t,n):0}(e,r,i);r+=a;for(var f=0;f<c&&!(r+12>e.byteLength);f++){var s=oe(e,t,n,r,i,o);void 0!==s&&(u[s.name]={id:s.id,value:s.value,description:s.description}),r+=12}if(r<e.byteLength-E.getTypeSize("LONG")){var l=E.getLongAt(e,r,i);0!==l&&(u.Thumbnail=ie(e,t,n,n+l,i,1))}return u}function oe(e,t,n,r,i,o){var a,u=E.getTypeSize("SHORT"),c=u+E.getTypeSize("SHORT"),f=c+E.getTypeSize("LONG"),s=E.getShortAt(e,r,i),l=E.getShortAt(e,r+u,i),d=E.getLongAt(e,r+c,i);if(void 0!==E.typeSizes[l]&&(o||void 0!==K[t][s])){if(function(e,t){return E.typeSizes[e]*t<=E.getTypeSize("LONG")}(l,d))a=ae(e,r+f,l,d,i);else{var p=E.getLongAt(e,r+f,i);a=function(e,t,n,r,i){return t+n+E.typeSizes[r]*i<=e.byteLength}(e,n,p,l,d)?ae(e,n+p,l,d,i,33723===s):"<faulty value>"}l===E.tagTypes.ASCII&&(a=function(e){try{return e.map((function(e){return decodeURIComponent(escape(e))}))}catch(t){return e}}(a=function(e){for(var t=[],n=0,r=0;r<e.length;r++)"\0"!==e[r]?(void 0===t[n]&&(t[n]=""),t[n]+=e[r]):n++;return t}(a)));var m="undefined-".concat(s),g=a;if(void 0!==K[t][s])if(void 0!==K[t][s].name&&void 0!==K[t][s].description){m=K[t][s].name;try{g=K[t][s].description(a)}catch(e){g=ue(a)}}else l===E.tagTypes.RATIONAL||l===E.tagTypes.SRATIONAL?(m=K[t][s],g=""+a[0]/a[1]):(m=K[t][s],g=ue(a));return{id:s,name:m,value:a,description:g}}}function ae(e,t,n,r,i){var o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,a=[];o&&(r*=E.typeSizes[n],n=E.tagTypes.BYTE);for(var u=0;u<r;u++)a.push(J[n](e,t,i)),t+=E.typeSizes[n];return n===E.tagTypes.ASCII?a=E.getAsciiValue(a):1===a.length&&(a=a[0]),a}function ue(e){return e instanceof Array?e.join(", "):e}var ce=function(e,t){var n=function(e,t){return E.getShortAt(e,t)}(e,t),r=function(e,t,n){if(!(8>n)){var r=E.getByteAt(e,t+7);return{value:r,description:""+r}}}(e,t,n);return{"Bits Per Sample":fe(e,t,n),"Image Height":se(e,t,n),"Image Width":le(e,t,n),"Color Components":r,Subsampling:r&&de(e,t,r.value,n)}};function fe(e,t,n){if(!(3>n)){var r=E.getByteAt(e,t+2);return{value:r,description:""+r}}}function se(e,t,n){if(!(5>n)){var r=E.getShortAt(e,t+3);return{value:r,description:"".concat(r,"px")}}}function le(e,t,n){if(!(7>n)){var r=E.getShortAt(e,t+5);return{value:r,description:"".concat(r,"px")}}}function de(e,t,n,r){if(!(8+3*n>r)){for(var i=[],o=0;o<n;o++){var a=t+8+3*o;i.push([E.getByteAt(e,a),E.getByteAt(e,a+1),E.getByteAt(e,a+2)])}return{value:i,description:i.length>1?pe(i)+me(i):""}}}function pe(e){var t={1:"Y",2:"Cb",3:"Cr",4:"I",5:"Q"};return e.map((function(e){return t[e[0]]})).join("")}function me(e){var t={17:"4:4:4 (1 1)",18:"4:4:0 (1 2)",20:"4:4:1 (1 4)",33:"4:2:2 (2 1)",34:"4:2:0 (2 2)",36:"4:2:1 (2 4)",65:"4:1:1 (4 1)",66:"4:1:0 (4 2)"};return 0===e.length||void 0===e[0][1]||void 0===t[e[0][1]]?"":t[e[0][1]]}var ge={iptc:{256:{name:"Model Version",description:function(e){return""+((e[0]<<8)+e[1])}},261:{name:"Destination",repeatable:1},276:{name:"File Format",description:function(e){return""+((e[0]<<8)+e[1])}},278:{name:"File Format Version",description:function(e){return""+((e[0]<<8)+e[1])}},286:"Service Identifier",296:"Envelope Number",306:"Product ID",316:"Envelope Priority",326:{name:"Date Sent",description:ve},336:{name:"Time Sent",description:he},346:{name:"Coded Character Set",description:ye,encoding_name:ye},356:"UNO",376:{name:"ARM Identifier",description:function(e){return""+((e[0]<<8)+e[1])}},378:{name:"ARM Version",description:function(e){return""+((e[0]<<8)+e[1])}},512:{name:"Record Version",description:function(e){return""+((e[0]<<8)+e[1])}},515:"Object Type Reference",516:"Object Attribute Reference",517:"Object Name",519:"Edit Status",520:{name:"Editorial Update",description:function(e){return"01"===l(e)?"Additional Language":"Unknown"}},522:"Urgency",524:{name:"Subject Reference",repeatable:1,description:function(e){var t=l(e).split(":");return t[2]+(t[3]?"/"+t[3]:"")+(t[4]?"/"+t[4]:"")}},527:"Category",532:{name:"Supplemental Category",repeatable:1},534:"Fixture Identifier",537:{name:"Keywords",repeatable:1},538:{name:"Content Location Code",repeatable:1},539:{name:"Content Location Name",repeatable:1},542:"Release Date",547:"Release Time",549:"Expiration Date",550:"Expiration Time",552:"Special Instructions",554:{name:"Action Advised",description:function(e){var t=l(e);return"01"===t?"Object Kill":"02"===t?"Object Replace":"03"===t?"Object Append":"04"===t?"Object Reference":"Unknown"}},557:{name:"Reference Service",repeatable:1},559:{name:"Reference Date",repeatable:1},562:{name:"Reference Number",repeatable:1},567:{name:"Date Created",description:ve},572:{name:"Time Created",description:he},574:{name:"Digital Creation Date",description:ve},575:{name:"Digital Creation Time",description:he},577:"Originating Program",582:"Program Version",587:{name:"Object Cycle",description:function(e){var t=l(e);return"a"===t?"morning":"p"===t?"evening":"b"===t?"both":"Unknown"}},592:{name:"By-line",repeatable:1},597:{name:"By-line Title",repeatable:1},602:"City",604:"Sub-location",607:"Province/State",612:"Country/Primary Location Code",613:"Country/Primary Location Name",615:"Original Transmission Reference",617:"Headline",622:"Credit",627:"Source",628:"Copyright Notice",630:{name:"Contact",repeatable:1},632:"Caption/Abstract",634:{name:"Writer/Editor",repeatable:1},637:{name:"Rasterized Caption",description:function(e){return e}},642:"Image Type",643:{name:"Image Orientation",description:function(e){var t=l(e);return"P"===t?"Portrait":"L"===t?"Landscape":"S"===t?"Square":"Unknown"}},647:"Language Identifier",662:{name:"Audio Type",description:function(e){var t=l(e),n=t.charAt(0),r=t.charAt(1),i="";return"1"===n?i+="Mono":"2"===n&&(i+="Stereo"),"A"===r?i+=", actuality":"C"===r?i+=", question and answer session":"M"===r?i+=", music, transmitted by itself":"Q"===r?i+=", response to a question":"R"===r?i+=", raw sound":"S"===r?i+=", scener":"V"===r?i+=", voicer":"W"===r&&(i+=", wrap"),""!==i?i:t}},663:{name:"Audio Sampling Rate",description:function(e){return parseInt(l(e),10)+" Hz"}},664:{name:"Audio Sampling Resolution",description:function(e){var t=parseInt(l(e),10);return t+(1===t?" bit":" bits")}},665:{name:"Audio Duration",description:function(e){var t=l(e);return t.length>=6?t.substr(0,2)+":"+t.substr(2,2)+":"+t.substr(4,2):t}},666:"Audio Outcue",698:"Short Document ID",699:"Unique Document ID",700:"Owner ID",712:{name:function(e){return 2===e.length?"ObjectData Preview File Format":"Record 2 destination"},description:function(e){if(2===e.length){var t=(e[0]<<8)+e[1];return 0===t?"No ObjectData":1===t?"IPTC-NAA Digital Newsphoto Parameter Record":2===t?"IPTC7901 Recommended Message Format":3===t?"Tagged Image File Format (Adobe/Aldus Image data)":4===t?"Illustrator (Adobe Graphics data)":5===t?"AppleSingle (Apple Computer Inc)":6===t?"NAA 89-3 (ANPA 1312)":7===t?"MacBinary II":8===t?"IPTC Unstructured Character Oriented File Format (UCOFF)":9===t?"United Press International ANPA 1312 variant":10===t?"United Press International Down-Load Message":11===t?"JPEG File Interchange (JFIF)":12===t?"Photo-CD Image-Pac (Eastman Kodak)":13===t?"Microsoft Bit Mapped Graphics File [*.BMP]":14===t?"Digital Audio File [*.WAV] (Microsoft & Creative Labs)":15===t?"Audio plus Moving Video [*.AVI] (Microsoft)":16===t?"PC DOS/Windows Executable Files [*.COM][*.EXE]":17===t?"Compressed Binary File [*.ZIP] (PKWare Inc)":18===t?"Audio Interchange File Format AIFF (Apple Computer Inc)":19===t?"RIFF Wave (Microsoft Corporation)":20===t?"Freehand (Macromedia/Aldus)":21===t?'Hypertext Markup Language "HTML" (The Internet Society)':22===t?"MPEG 2 Audio Layer 2 (Musicom), ISO/IEC":23===t?"MPEG 2 Audio Layer 3, ISO/IEC":24===t?"Portable Document File (*.PDF) Adobe":25===t?"News Industry Text Format (NITF)":26===t?"Tape Archive (*.TAR)":27===t?"Tidningarnas Telegrambyrå NITF version (TTNITF DTD)":28===t?"Ritzaus Bureau NITF version (RBNITF DTD)":29===t?"Corel Draw [*.CDR]":"Unknown format ".concat(t)}return l(e)}},713:{name:"ObjectData Preview File Format Version",description:function(e,t){var n={"00":{"00":"1"},"01":{"01":"1","02":"2","03":"3","04":"4"},"02":{"04":"4"},"03":{"01":"5.0","02":"6.0"},"04":{"01":"1.40"},"05":{"01":"2"},"06":{"01":"1"},11:{"01":"1.02"},20:{"01":"3.1","02":"4.0","03":"5.0","04":"5.5"},21:{"02":"2.0"}},r=l(e);if(t["ObjectData Preview File Format"]){var i=l(t["ObjectData Preview File Format"].value);if(n[i]&&n[i][r])return n[i][r]}return r}},714:"ObjectData Preview Data",1802:{name:"Size Mode",description:function(e){return e[0].toString()}},1812:{name:"Max Subfile Size",description:function(e){for(var t=0,n=0;n<e.length;n++)t=(t<<8)+e[n];return t.toString()}},1882:{name:"ObjectData Size Announced",description:function(e){for(var t=0,n=0;n<e.length;n++)t=(t<<8)+e[n];return t.toString()}},1887:{name:"Maximum ObjectData Size",description:function(e){for(var t=0,n=0;n<e.length;n++)t=(t<<8)+e[n];return t.toString()}}}};function ve(e){var t=l(e);return t.length>=8?t.substr(0,4)+"-"+t.substr(4,2)+"-"+t.substr(6,2):t}function he(e){var t=l(e),n=t;return t.length>=6&&(n=t.substr(0,2)+":"+t.substr(2,2)+":"+t.substr(4,2),11===t.length&&(n+=t.substr(6,1)+t.substr(7,2)+":"+t.substr(9,2))),n}function ye(e){var t=l(e);return"%G"===t?"UTF-8":"%5"===t?"Windows-1252":"%/G"===t?"UTF-8 Level 1":"%/H"===t?"UTF-8 Level 2":"%/I"===t?"UTF-8 Level 3":"/A"===t?"ISO-8859-1":"/B"===t?"ISO-8859-2":"/C"===t?"ISO-8859-3":"/D"===t?"ISO-8859-4":"/@"===t?"ISO-8859-5":"/G"===t?"ISO-8859-6":"/F"===t?"ISO-8859-7":"/H"===t?"ISO-8859-8":"Unknown"}var Se=function(e,t){var n=function(){if("undefined"!=typeof TextDecoder)return TextDecoder}();if("undefined"!=typeof n&&void 0!==e)try{return new n(e).decode(Uint8Array.from(t))}catch(e){}return function(e){try{return decodeURIComponent(escape(e))}catch(t){return e}}(t.map((function(e){return String.fromCharCode(e)})).join(""))},be=function(e,t,n){try{if(Array.isArray(e))return Ae(new DataView(Uint8Array.from(e).buffer),{size:e.length},0,n);var r=function(e,t){for(;t+12<=e.byteLength;){var n=Ce(e,t);if(Ie(n))return{naaBlock:n,dataOffset:t+12};t+=12+n.size+Pe(n)}throw Error("No IPTC NAA resource block.")}(e,t);return Ae(e,r.naaBlock,r.dataOffset,n)}catch(e){return{}}};function Ce(e,t){if(943868237!==e.getUint32(t,0))throw Error("Not an IPTC resource block.");return{type:e.getUint16(t+4),size:e.getUint16(t+10)}}function Ie(e){return 1028===e.type}function Pe(e){return e.size%2!=0?1:0}function Ae(e,t,n,r){for(var i={},o=void 0,a=n+t.size;n<a&&n<e.byteLength;){var u=we(e,n,i,o,r),c=u.tag,f=u.tagSize;if(null===c)break;c&&("encoding"in c&&(o=c.encoding),void 0===i[c.name]||void 0===c.repeatable?i[c.name]={id:c.id,value:c.value,description:c.description}:(i[c.name]instanceof Array||(i[c.name]=[{id:i[c.name].id,value:i[c.name].value,description:i[c.name].description}]),i[c.name].push({id:c.id,value:c.value,description:c.description}))),n+=5+f}return i}function we(e,t,n,r,i){if(function(e,t){return 28!==e.getUint8(t)}(e,t))return{tag:null,tagSize:0};var o=e.getUint16(t+1),a=e.getUint16(t+3);if(!i&&!ge.iptc[o])return{tag:void 0,tagSize:a};var u=function(e,t,n){for(var r=[],i=0;i<n;i++)r.push(e.getUint8(t+i));return r}(e,t+5,a),c={id:o,name:Ue(ge.iptc[o],o,u),value:u,description:De(ge.iptc[o],u,n,r)};return function(e){return ge.iptc[e]&&ge.iptc[e].repeatable}(o)&&(c.repeatable=1),function(e){return ge.iptc[e]&&void 0!==ge.iptc[e].encoding_name}(o)&&(c.encoding=ge.iptc[o].encoding_name(u)),{tag:c,tagSize:a}}function Ue(e,t,n){return e?function(e){return"string"==typeof e}(e)?e:function(e){return"function"==typeof e.name}(e)?e.name(n):e.name:"undefined-".concat(t)}function De(e,t,n,r){if(function(e){return e&&void 0!==e.description}(e))try{return e.description(t,n)}catch(e){}return function(e,t){return e&&t instanceof Array}(e,t)?Se(r,t):t}function Te(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}var Oe={"tiff:Orientation":function(e){return"1"===e?"Horizontal (normal)":"2"===e?"Mirror horizontal":"3"===e?"Rotate 180":"4"===e?"Mirror vertical":"5"===e?"Mirror horizontal and rotate 270 CW":"6"===e?"Rotate 90 CW":"7"===e?"Mirror horizontal and rotate 90 CW":"8"===e?"Rotate 270 CW":e},"exif:GPSLatitude":Me,"exif:GPSLongitude":Me};function Me(e){var t,n=(2,function(e){if(Array.isArray(e))return e}(t=e.split(","))||function(e,t){var n=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var r,i,o=[],a=1,u=0;try{for(n=n.call(e);!(a=(r=n.next()).done)&&(o.push(r.value),2!==o.length);a=1);}catch(e){u=1,i=e}finally{try{a||null==n.return||n.return()}finally{if(u)throw i}}return o}}(t)||function(e,t){if(e){if("string"==typeof e)return Te(e,2);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Te(e,2):void 0}}(t)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()),r=n[0],i=n[1];if(void 0!==r&&void 0!==i){var o=parseFloat(r),a=parseFloat(i),u=i.charAt(i.length-1);if(!Number.isNaN(o)&&!Number.isNaN(a))return""+(o+a/60)+u}return e}function Fe(e){return Fe="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Fe(e)}var Le=function(e,t){return"string"==typeof e?ke({},e):function(e,t){if(0===t.length)return[];var n=[Re(e,t.slice(0,1))];return t.length>1&&n.push(Re(e,t.slice(1))),n}(e,t).reduce(ke,{})};function Re(e,t){for(var n=t.reduce((function(e,t){return e+t.length}),0),r=new Uint8Array(n),i=0,o=0;o<t.length;o++){var a=t[o],u=e.buffer.slice(a.dataOffset,a.dataOffset+a.length);r.set(new Uint8Array(u),i),i+=a.length}return new DataView(r.buffer)}function ke(e,t){try{var n=function(e){var t=function(){if("undefined"!=typeof DOMParser)return DOMParser;try{return require("@xmldom/xmldom").DOMParser}catch(e){return}}();if(!t)throw console.warn("Warning: DOMParser is not available. It is needed to be able to parse XMP tags."),Error();var n=new t,i="string"==typeof e?e:r(e,0,e.byteLength),o=n.parseFromString(i.replace(/^.+(<\?xpacket begin)/,"$1").replace(/(<\?xpacket end=".*"\?>).+$/,"$1"),"application/xml");if("parsererror"===o.documentElement.nodeName)throw Error(o.documentElement.textContent);return o}(t);return a(e,We(Ne(xe(n),1)))}catch(t){return e}}function xe(e){for(var t=0;t<e.childNodes.length;t++){if("x:xmpmeta"===e.childNodes[t].tagName)return xe(e.childNodes[t]);if("rdf:RDF"===e.childNodes[t].tagName)return e.childNodes[t]}throw Error()}function Ne(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=Ee(e);return Ge(n)?t?{}:Be(n[0]):je(n)}function Ee(e){for(var t=[],n=0;n<e.childNodes.length;n++)t.push(e.childNodes[n]);return t}function Ge(e){return 1===e.length&&"#text"===e[0].nodeName}function Be(e){return e.nodeValue}function je(e){var t={};return e.forEach((function(e){if(function(e){return e.nodeName&&"#text"!==e.nodeName}(e)){var n=function(e){return{attributes:ze(e),value:Ne(e)}}(e);void 0!==t[e.nodeName]?(Array.isArray(t[e.nodeName])||(t[e.nodeName]=[t[e.nodeName]]),t[e.nodeName].push(n)):t[e.nodeName]=n}})),t}function ze(e){for(var t={},n=0;n<e.attributes.length;n++)t[e.attributes[n].nodeName]=decodeURIComponent(escape(e.attributes[n].value));return t}function We(e){var t={};if("string"==typeof e)return e;for(var n in e){var r=e[n];Array.isArray(r)||(r=[r]),r.forEach((function(e){a(t,He(e.attributes)),"object"===Fe(e.value)&&a(t,$e(e.value))}))}return t}function He(e){var t={};for(var n in e)Ve(n)&&(t[qe(n)]={value:e[n],attributes:{},description:Ye(e[n],n)});return t}function Ve(e){return"rdf:parseType"!==e&&!Xe(e)}function Xe(e){return"xmlns"===e.split(":")[0]}function qe(e){return/^MicrosoftPhoto(_\d+_)?:Rating$/i.test(e)?"RatingPercent":e.split(":")[1]}function Ye(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;if(Array.isArray(e))return Ke(e);if("object"===Fe(e))return Je(e);try{return t&&"function"==typeof Oe[t]?Oe[t](e):decodeURIComponent(escape(e))}catch(t){return e}}function Ke(e){return e.map((function(e){return void 0!==e.value?Ye(e.value):Ye(e)})).join(", ")}function Je(e){var t=[];for(var n in e)t.push("".concat(_e(n),": ").concat(Ye(e[n].value)));return t.join("; ")}function _e(e){return"CiAdrCity"===e?"CreatorCity":"CiAdrCtry"===e?"CreatorCountry":"CiAdrExtadr"===e?"CreatorAddress":"CiAdrPcode"===e?"CreatorPostalCode":"CiAdrRegion"===e?"CreatorRegion":"CiEmailWork"===e?"CreatorWorkEmail":"CiTelWork"===e?"CreatorWorkPhone":"CiUrlWork"===e?"CreatorWorkUrl":e}function $e(e){var t={};for(var n in e)Xe(n)||(t[qe(n)]=Qe(e[n],n));return t}function Qe(e,t){return Ze(e)?et(e,t):nt(e)?rt(e,t):it(e)?ot(e,t):function(e){return void 0!==at(e.value)}(e)?function(e,t){var n=at(e.value).value["rdf:li"],r=tt(e),i=[];return void 0===n?n=[]:Array.isArray(n)||(n=[n]),n.forEach((function(e){i.push(function(e){return Ze(e)?et(e):nt(e)?rt(e).value:it(e)?ot(e).value:ut(e)}(e))})),{value:i,attributes:r,description:Ye(i,t)}}(e,t):ut(e,t)}function Ze(e){return"Resource"===e.attributes["rdf:parseType"]&&void 0!==e.value["rdf:value"]||void 0!==e.value["rdf:Description"]&&void 0!==e.value["rdf:Description"].value["rdf:value"]}function et(e,t){var n=tt(e);void 0!==e.value["rdf:Description"]&&(e=e.value["rdf:Description"]),a(n,tt(e),function(e){var t={};for(var n in e.value)"rdf:value"===n||Xe(n)||(t[qe(n)]=e.value[n].value);return t}(e));var r=function(e){return ct(e.value["rdf:value"])||e.value["rdf:value"].value}(e);return{value:r,attributes:n,description:Ye(r,t)}}function tt(e){var t={};for(var n in e.attributes)"rdf:parseType"===n||"rdf:resource"===n||Xe(n)||(t[qe(n)]=e.attributes[n]);return t}function nt(e){return"Resource"===e.attributes["rdf:parseType"]||void 0!==e.value["rdf:Description"]&&void 0===e.value["rdf:Description"].value["rdf:value"]}function rt(e,t){var n={value:{},attributes:{}};return void 0!==e.value["rdf:Description"]&&(a(n.value,He(e.value["rdf:Description"].attributes)),a(n.attributes,tt(e)),e=e.value["rdf:Description"]),a(n.value,$e(e.value)),n.description=Ye(n.value,t),n}function it(e){return 0===Object.keys(e.value).length&&void 0===e.attributes["xml:lang"]&&void 0===e.attributes["rdf:resource"]}function ot(e,t){var n=He(e.attributes);return{value:n,attributes:{},description:Ye(n,t)}}function at(e){return e["rdf:Bag"]||e["rdf:Seq"]||e["rdf:Alt"]}function ut(e,t){var n=ct(e)||We(e.value);return{value:n,attributes:tt(e),description:Ye(n,t)}}function ct(e){return e.attributes&&e.attributes["rdf:resource"]}var ft={desc:{name:"ICC Description"},cprt:{name:"ICC Copyright"},dmdd:{name:"ICC Device Model Description"},vued:{name:"ICC Viewing Conditions Description"},dmnd:{name:"ICC Device Manufacturer for Display"},tech:{name:"Technology"}},st={4:{name:"Preferred CMM type",value:function(e,t){return r(e,t,4)},description:function(e){return null!==e?lt(e):""}},8:{name:"Profile Version",value:function(e,t){return e.getUint8(t).toString(10)+"."+(e.getUint8(t+1)>>4).toString(10)+"."+(e.getUint8(t+1)%16).toString(10)}},12:{name:"Profile/Device class",value:function(e,t){return r(e,t,4)},description:function(e){switch(e.toLowerCase()){case"scnr":return"Input Device profile";case"mntr":return"Display Device profile";case"prtr":return"Output Device profile";case"link":return"DeviceLink profile";case"abst":return"Abstract profile";case"spac":return"ColorSpace profile";case"nmcl":return"NamedColor profile";case"cenc":return"ColorEncodingSpace profile";case"mid ":return"MultiplexIdentification profile";case"mlnk":return"MultiplexLink profile";case"mvis":return"MultiplexVisualization profile";default:return e}}},16:{name:"Color Space",value:function(e,t){return r(e,t,4)}},20:{name:"Connection Space",value:function(e,t){return r(e,t,4)}},24:{name:"ICC Profile Date",value:function(e,t){return function(e,t){var n=e.getUint16(t),r=e.getUint16(t+2)-1,i=e.getUint16(t+4),o=e.getUint16(t+6),a=e.getUint16(t+8),u=e.getUint16(t+10);return new Date(Date.UTC(n,r,i,o,a,u))}(e,t).toISOString()}},36:{name:"ICC Signature",value:function(e,t){return n=e.buffer.slice(t,t+4),String.fromCharCode.apply(null,new Uint8Array(n));var n}},40:{name:"Primary Platform",value:function(e,t){return r(e,t,4)},description:function(e){return lt(e)}},48:{name:"Device Manufacturer",value:function(e,t){return r(e,t,4)},description:function(e){return lt(e)}},52:{name:"Device Model Number",value:function(e,t){return r(e,t,4)}},64:{name:"Rendering Intent",value:function(e,t){return e.getUint32(t)},description:function(e){switch(e){case 0:return"Perceptual";case 1:return"Relative Colorimetric";case 2:return"Saturation";case 3:return"Absolute Colorimetric";default:return e}}},80:{name:"Profile Creator",value:function(e,t){return r(e,t,4)}}};function lt(e){switch(e.toLowerCase()){case"appl":return"Apple";case"adbe":return"Adobe";case"msft":return"Microsoft";case"sunw":return"Sun Microsystems";case"sgi":return"Silicon Graphics";case"tgnt":return"Taligent";default:return e}}var dt=function(e,t){try{for(var n=t.reduce((function(e,t){return e+t.length}),0),o=new Uint8Array(n),a=0,u=function(e){return Array.isArray(e)?new DataView(Uint8Array.from(e).buffer).buffer:e.buffer}(e),c=function(e){var n=t.find((function(t){return t.chunkNumber===e}));if(!n)throw Error("ICC chunk ".concat(e," not found"));var r=u.slice(n.offset,n.offset+n.length),i=new Uint8Array(r);o.set(i,a),a+=i.length},f=1;f<=t.length;f++)c(f);return function(e){var t=e.buffer,n=e.getUint32();if(e.byteLength!==n)throw Error("ICC profile length not matching");if(e.length<84)throw Error("ICC profile too short");for(var o={},a=Object.keys(st),u=0;u<a.length;u++){var c=a[u],f=st[c],s=f.value(e,parseInt(c,10)),l=s;f.description&&(l=f.description(s)),o[f.name]={value:s,description:l}}if(St(t.slice(36,40))!==pt)throw Error("ICC profile: missing signature");if(function(e){return e.length<132}(t))return o;for(var d=e.getUint32(128),p=132,m=0;m<d;m++){if(yt(t,p))return o;var g=r(e,p,4),v=e.getUint32(p+4),h=e.getUint32(p+8);if(v>t.length)return o;var y=r(e,v,4);if(y===mt){var S=e.getUint32(v+8);if(S>h)return o;bt(o,g,St(t.slice(v+12,v+S+11)))}else if(y===gt){for(var b=e.getUint32(v+8),C=e.getUint32(v+12),I=v+16,P=[],A=0;A<b;A++){var w=r(e,I+0,2),U=r(e,I+2,2),D=e.getUint32(I+4),T=e.getUint32(I+8),O=i(e,v+T,D);P.push({languageCode:w,countryCode:U,text:O}),I+=C}if(1===b)bt(o,g,P[0].text);else{for(var M={},F=0;F<P.length;F++)M["".concat(P[F].languageCode,"-").concat(P[F].countryCode)]=P[F].text;bt(o,g,M)}}else y===vt?bt(o,g,St(t.slice(v+8,v+h-7))):y===ht&&bt(o,g,St(t.slice(v+8,v+12)));p+=12}return o}(new DataView(o.buffer))}catch(e){return{}}},pt="acsp",mt="desc",gt="mluc",vt="text",ht="sig ";function yt(e,t){return e.length<t+12}function St(e){return String.fromCharCode.apply(null,new Uint8Array(e))}function bt(e,t,n){ft[t]?e[ft[t].name]={value:n,description:n}:e[t]={value:n,description:n}}var Ct=function(e,t){return{"Image Width":It(e,t),"Image Height":Pt(e,t),"Bit Depth":At(e,t),"Color Type":wt(e,t),Compression:Ut(e,t),Filter:Dt(e,t),Interlace:Tt(e,t)}};function It(e,t){if(!(t+0+4>e.byteLength)){var n=E.getLongAt(e,t);return{value:n,description:"".concat(n,"px")}}}function Pt(e,t){if(!(t+4+4>e.byteLength)){var n=E.getLongAt(e,t+4);return{value:n,description:"".concat(n,"px")}}}function At(e,t){if(!(t+8+1>e.byteLength)){var n=E.getByteAt(e,t+8);return{value:n,description:"".concat(n)}}}function wt(e,t){if(!(t+9+1>e.byteLength)){var n=E.getByteAt(e,t+9);return{value:n,description:{0:"Grayscale",2:"RGB",3:"Palette",4:"Grayscale with Alpha",6:"RGB with Alpha"}[n]||"Unknown"}}}function Ut(e,t){if(!(t+10+1>e.byteLength)){var n=E.getByteAt(e,t+10);return{value:n,description:0===n?"Deflate/Inflate":"Unknown"}}}function Dt(e,t){if(!(t+11+1>e.byteLength)){var n=E.getByteAt(e,t+11);return{value:n,description:0===n?"Adaptive":"Unknown"}}}function Tt(e,t){if(!(t+12+1>e.byteLength)){var n=E.getByteAt(e,t+12);return{value:n,description:{0:"Noninterlaced",1:"Adam7 Interlace"}[n]||"Unknown"}}}var Ot=[6,7,99],Mt=function(e,t,n){if((i=t)&&(void 0===i.Compression||Ot.includes(i.Compression.value))&&i.JPEGInterchangeFormat&&i.JPEGInterchangeFormat.value&&i.JPEGInterchangeFormatLength&&i.JPEGInterchangeFormatLength.value){t.type="image/jpeg";var r=n+t.JPEGInterchangeFormat.value;t.image=e.buffer.slice(r,r+t.JPEGInterchangeFormatLength.value),u(t,"base64",(function(){return c(this.image)}))}var i;return t};function Ft(e){this.name="MetadataMissingError",this.message=e||"No Exif data",this.stack=Error().stack}Ft.prototype=Error();var Lt={MetadataMissingError:Ft},Rt={load:xt,loadView:Et,errors:Lt},kt=Lt;function xt(e,t){return function(e){return"string"==typeof e}(e)?(n=e,"undefined"!=typeof window?fetch(n).then((function(e){return e.arrayBuffer()})):/^https?:\/\//.test(n)?(r=n,new Promise((function(e,t){var n=function(e){return/^https:\/\//.test(e)?require("https").get:require("http").get}(r);n(r,(function(n){if(n.statusCode>=200&&n.statusCode<=299){var r=[];n.on("data",(function(e){return r.push(Buffer.from(e))})),n.on("error",(function(e){return t(e)})),n.on("end",(function(){return e(Buffer.concat(r))}))}else t("Could not fetch file: ".concat(n.statusCode," ").concat(n.statusMessage)),n.resume()})).on("error",(function(e){return t(e)}))}))).then((function(e){return e})):function(e){return new Promise((function(t,n){var r=function(){try{return require("fs")}catch(e){return}}();r.open(e,(function(i,o){i?n(i):r.stat(e,(function(i,a){if(i)n(i);else{var u=Buffer.alloc(a.size);r.read(o,{buffer:u},(function(i){i?n(i):r.close(o,(function(n){n&&console.warn("Could not close file ".concat(e,":"),n),t(u)}))}))}}))}))}))}(n)).then((function(e){return Nt(e,t)})):function(e){return"undefined"!=typeof window&&"undefined"!=typeof File&&e instanceof File}(e)?(i=e,new Promise((function(e,t){var n=new FileReader;n.onload=function(t){return e(t.target.result)},n.onerror=function(){return t(n.error)},n.readAsArrayBuffer(i)}))).then((function(e){return Nt(e,t)})):Nt(e,t);var n,r,i}function Nt(e,t){return function(e){try{return Buffer.isBuffer(e)}catch(e){return 0}}(e)&&(e=new Uint8Array(e).buffer),Et(function(e){try{return new DataView(e)}catch(t){return new s(e)}}(e),t)}function Et(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{expanded:0,includeUnknown:0},n=t.expanded,r=void 0===n?0:n,i=t.includeUnknown,u=void 0===i?0:i,c=0,f={},s=k(e),l=s.fileDataOffset,d=s.tiffHeaderOffset,p=s.iptcDataOffset,m=s.xmpChunks,g=s.iccChunks,v=s.mpfDataOffset,h=s.pngHeaderOffset;if(Gt(l)){c=1;var y=ce(e,l);r?f.file=y:f=a({},f,y)}if(Bt(d)){c=1;var S=_(e,d,u);if(S.Thumbnail&&(f.Thumbnail=S.Thumbnail,delete S.Thumbnail),r?(f.exif=S,jt(f)):f=a({},f,S),S["IPTC-NAA"]&&!zt(p)){var b=be(S["IPTC-NAA"].value,0,u);r?f.iptc=b:f=a({},f,b)}if(S.ApplicationNotes&&!Wt(m)){var C=Le(o(S.ApplicationNotes.value));r?f.xmp=C:f=a({},f,C)}if(S.ICC_Profile&&!Ht(g)){var I=dt(S.ICC_Profile.value,[{offset:0,length:S.ICC_Profile.value.length,chunkNumber:1,chunksTotal:1}]);r?f.icc=I:f=a({},f,I)}}if(zt(p)){c=1;var P=be(e,p,u);r?f.iptc=P:f=a({},f,P)}if(Wt(m)){c=1;var A=Le(e,m);r?f.xmp=A:f=a({},f,A)}if(Ht(g)){c=1;var w=dt(e,g);r?f.icc=w:f=a({},f,w)}if(Vt(v)){c=1;var U=$(e,v,u);r?f.mpf=U:f=a({},f,U)}if(Xt(h)){c=1;var D=Ct(e,h);r?f.pngFile=D:f=a({},f,D)}var T=Mt(e,f.Thumbnail,d);if(T?(c=1,f.Thumbnail=T):delete f.Thumbnail,!c)throw new Lt.MetadataMissingError;return f}function Gt(e){return void 0!==e}function Bt(e){return void 0!==e}function jt(e){if(e.exif){if(e.exif.GPSLatitude&&e.exif.GPSLatitudeRef)try{e.gps=e.gps||{},e.gps.Latitude=p(e.exif.GPSLatitude.value),"S"===e.exif.GPSLatitudeRef.value.join("")&&(e.gps.Latitude=-e.gps.Latitude)}catch(e){}if(e.exif.GPSLongitude&&e.exif.GPSLongitudeRef)try{e.gps=e.gps||{},e.gps.Longitude=p(e.exif.GPSLongitude.value),"W"===e.exif.GPSLongitudeRef.value.join("")&&(e.gps.Longitude=-e.gps.Longitude)}catch(e){}if(e.exif.GPSAltitude&&e.exif.GPSAltitudeRef)try{e.gps=e.gps||{},e.gps.Altitude=e.exif.GPSAltitude.value[0]/e.exif.GPSAltitude.value[1],1===e.exif.GPSAltitudeRef.value&&(e.gps.Altitude=-e.gps.Altitude)}catch(e){}}}function zt(e){return void 0!==e}function Wt(e){return Array.isArray(e)&&e.length>0}function Ht(e){return Array.isArray(e)&&e.length>0}function Vt(e){return void 0!==e}function Xt(e){return void 0!==e}return t}()}));
//# sourceMappingURL=exif-reader.js.map
{
"name": "exifreader",
"version": "3.16.0",
"version": "4.0.0",
"description": "Library that parses Exif metadata in images.",

@@ -23,27 +23,30 @@ "author": "Mattias Wallander <mattias@wallander.eu>",

],
"types": "./exif-reader.d.ts",
"dependencies": {},
"types": "./exif-reader.d.ts",
"optionalDependencies": {
"@xmldom/xmldom": "^0.7.5"
},
"devDependencies": {
"@babel/core": "^7.9.0",
"@babel/preset-env": "^7.9.0",
"@babel/register": "^7.9.0",
"@types/node": "^13.9.0",
"babel-loader": "^8.1.0",
"@babel/core": "^7.15.8",
"@babel/preset-env": "^7.15.8",
"@babel/register": "^7.15.3",
"@types/node": "^14.14.36",
"babel-loader": "^8.2.2",
"babel-plugin-rewire": "^1.2.0",
"chai": "^4.1.2",
"cross-env": "^5.2.0",
"cypress": "^4.12.1",
"cypress-file-upload": "^4.1.1",
"eslint": "^6.8.0",
"eslint-plugin-cypress": "^2.10.3",
"husky": "^0.14.3",
"mocha": "^7.1.1",
"chai": "^4.3.4",
"cross-env": "^7.0.3",
"cypress": "^8.5.0",
"cypress-file-upload": "^5.0.8",
"eslint": "^8.0.0",
"eslint-plugin-cypress": "^2.12.1",
"husky": "^4.3.8",
"mocha": "^9.1.2",
"npm-run-all": "^4.1.5",
"nyc": "^14.1.1",
"nyc": "^15.1.0",
"rimraf": "^3.0.2",
"string-replace-loader": "^2.2.0",
"terser-webpack-plugin": "^2.3.8",
"webpack": "^4.44.1",
"webpack-cli": "^3.3.12",
"webpack-dev-server": "^3.11.2"
"string-replace-loader": "^3.0.3",
"terser-webpack-plugin": "^5.2.4",
"webpack": "^5.58.1",
"webpack-cli": "^4.9.0",
"webpack-dev-server": "^4.3.1"
},

@@ -56,4 +59,3 @@ "scripts": {

"lint": "eslint .",
"precommit": "npm-run-all lint test test:build",
"start": "webpack-dev-server",
"start": "cross-env NODE_ENV=development webpack serve",
"test": "cross-env BABEL_ENV=test mocha --require @babel/register --recursive \"test/unit/\"",

@@ -82,5 +84,18 @@ "test:build": "mocha test/build/test.js",

},
"optionalDependencies": {
"xmldom": "^0.1.31"
"browserslist": [
"> 0.5%",
"last 2 versions",
"not dead",
"Chrome >= 9",
"Firefox >= 15",
"IE >= 10",
"Edge >= 12",
"Safari >= 5.1",
"Opera >= 12.1"
],
"husky": {
"hooks": {
"pre-commit": "npm-run-all lint test test:build"
}
}
}

@@ -7,3 +7,3 @@ ExifReader

browser or from Node. Supports JPEG, TIFF, PNG, HEIC, and WebP files with Exif,
IPTC, XMP, ICC, and MPF meta data (depending on file type).
IPTC, XMP, ICC, and MPF metadata (depending on file type).

@@ -178,2 +178,15 @@ ExifReader is highly and easily configurable and the resulting bundle can be as

#### Unknown tags
Tags that are unknown, either because they have been excluded by making a custom
build or they are yet to be added into ExifReader, are by default not included
in the output. If you need to see them there is an option that can be passed in:
```javascript
const tags = ExifReader.load(fileBuffer, {includeUnknown: true});
```
If you discover an unknown tag that should be handled by ExifReader, please
reach out by filing an issue.
### GPS

@@ -219,4 +232,4 @@

If you are using Webpack and are only targeting web browsers, make sure to add
this to your Webpack config (probably the `webpack.config.js` file):
If you are using Webpack 4 or lower and are only targeting web browsers, make
sure to add this to your Webpack config (probably the `webpack.config.js` file):

@@ -231,3 +244,3 @@ ```javascript

include a `Buffer` shim for browsers. This configuration will stop Webpack from
doing that.
doing that. Webpack 5 does this automatically.

@@ -306,4 +319,9 @@ ### Configure a custom build

If you use `yarn`, simply run `yarn add exifreader` to rebuild the library.
After that the new bundle is here: `node_modules/exifreader/dist/exif-reader.js`
If you are using `vite`, you will need to [clear the dependency cache](https://vitejs.dev/guide/dep-pre-bundling.html#file-system-cache)
after a rebuild.
If you're using the include pattern config, remember to include everything you

@@ -361,10 +379,6 @@ want to use. If you want `xmp` and don't specify any file types, you will get

The library makes use of the DataView API which is supported in Chrome 9+,
Firefox 15+, Internet Explorer 10+, Edge, Safari 5.1+, Opera 12.1+. If you want
to support a browser that doesn't have DataView support, you should
probably use a polyfill like
[jDataView](https://github.com/jDataView/jDataView).
Firefox 15+, Internet Explorer 10+, Edge, Safari 5.1+, Opera 12.1+. For Node.js
at least version 10 is required if you want to parse XMP tags, otherwise earlier
versions will also work.
Node.js has had support for DataView since version 0.12 but ExifReader will also
try to polyfill it for versions before that (this is not well tested though).
Examples

@@ -385,7 +399,8 @@ --------

- In some cases it can make sense to only load the beginning of the image
file. It's unfortunately not possible to know how big the meta data will be
in an image, but if you limit yourself to regular Exif tags you can most
probably get by with only reading the first 128 kB. This may exclude IPTC
and XMP metadata though (and possibly Exif too if they come in an irregular
order) so please check if this optimization fits your use case.
file since that is where the metadata is located. It's unfortunately not
possible to know how big the metadata will be in an image, but if you limit
yourself to regular Exif tags you can most probably get by with only reading
the first 128 kB. This may exclude IPTC and XMP metadata though (and
possibly Exif too if they come in an irregular order) so please check if
this optimization fits your use case.

@@ -440,2 +455,11 @@ Testing

- **October 2021**:
- Major version update 4.0.0. A couple of small breaking changes that
shouldn't affect too many users:
- Node.js 10+ is needed to read XMP tags (requirement from
[xmldom](https://www.npmjs.com/package/@xmldom/xmldom) dependency)
- XMP arrays with complex items are now parsed correctly, e.g. `Regions`
(see [issue #129](https://github.com/mattiasw/ExifReader/issues/129)
for more details)
- [Unknown tags](#unknown-tags) are no longer included by default
- **June 2021**:

@@ -442,0 +466,0 @@ - Make it possible to directly pass in file path, URL, or File object.

@@ -14,3 +14,3 @@ /* This Source Code Form is subject to the terms of the Mozilla Public

try {
return __non_webpack_require__('xmldom').DOMParser; // eslint-disable-line no-undef
return __non_webpack_require__('@xmldom/xmldom').DOMParser; // eslint-disable-line no-undef
} catch (error) {

@@ -17,0 +17,0 @@ return undefined;

/**
* ExifReader
* http://github.com/mattiasw/exifreader
* Copyright (C) 2011-2020 Mattias Wallander <mattias@wallander.eu>
* Copyright (C) 2011-2021 Mattias Wallander <mattias@wallander.eu>
* This Source Code Form is subject to the terms of the Mozilla Public

@@ -34,3 +34,3 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this

export function load(data, options = {expanded: false}) {
export function load(data, options) {
if (isFilePathOrURL(data)) {

@@ -168,3 +168,3 @@ return loadFile(data).then((fileContents) => loadFromData(fileContents, options));

export function loadView(dataView, options = {expanded: false}) {
export function loadView(dataView, {expanded = false, includeUnknown = false} = {expanded: false, includeUnknown: false}) {
let foundMetaData = false;

@@ -186,3 +186,3 @@ let tags = {};

const readTags = FileTags.read(dataView, fileDataOffset);
if (options.expanded) {
if (expanded) {
tags.file = readTags;

@@ -196,3 +196,3 @@ } else {

foundMetaData = true;
const readTags = Tags.read(dataView, tiffHeaderOffset);
const readTags = Tags.read(dataView, tiffHeaderOffset, includeUnknown);
if (readTags.Thumbnail) {

@@ -203,3 +203,3 @@ tags.Thumbnail = readTags.Thumbnail;

if (options.expanded) {
if (expanded) {
tags.exif = readTags;

@@ -212,4 +212,4 @@ addGpsGroup(tags);

if (Constants.USE_TIFF && Constants.USE_IPTC && readTags['IPTC-NAA'] && !hasIptcData(iptcDataOffset)) {
const readIptcTags = IptcTags.read(readTags['IPTC-NAA'].value, 0);
if (options.expanded) {
const readIptcTags = IptcTags.read(readTags['IPTC-NAA'].value, 0, includeUnknown);
if (expanded) {
tags.iptc = readIptcTags;

@@ -223,3 +223,3 @@ } else {

const readXmpTags = XmpTags.read(getStringValueFromArray(readTags['ApplicationNotes'].value));
if (options.expanded) {
if (expanded) {
tags.xmp = readXmpTags;

@@ -241,3 +241,3 @@ } else {

);
if (options.expanded) {
if (expanded) {
tags.icc = readIccTags;

@@ -252,4 +252,4 @@ } else {

foundMetaData = true;
const readTags = IptcTags.read(dataView, iptcDataOffset);
if (options.expanded) {
const readTags = IptcTags.read(dataView, iptcDataOffset, includeUnknown);
if (expanded) {
tags.iptc = readTags;

@@ -264,3 +264,3 @@ } else {

const readTags = XmpTags.read(dataView, xmpChunks);
if (options.expanded) {
if (expanded) {
tags.xmp = readTags;

@@ -275,3 +275,3 @@ } else {

const readTags = IccTags.read(dataView, iccChunks);
if (options.expanded) {
if (expanded) {
tags.icc = readTags;

@@ -285,4 +285,4 @@ } else {

foundMetaData = true;
const readMpfTags = Tags.readMpf(dataView, mpfDataOffset);
if (options.expanded) {
const readMpfTags = Tags.readMpf(dataView, mpfDataOffset, includeUnknown);
if (expanded) {
tags.mpf = readMpfTags;

@@ -297,3 +297,3 @@ } else {

const readTags = PngFileTags.read(dataView, pngHeaderOffset);
if (options.expanded) {
if (expanded) {
tags.pngFile = readTags;

@@ -300,0 +300,0 @@ } else {

@@ -18,9 +18,9 @@ /* This Source Code Form is subject to the terms of the Mozilla Public

function read(dataView, dataOffset) {
function read(dataView, dataOffset, includeUnknown) {
try {
if (Array.isArray(dataView)) {
return parseTags(new DataView(Uint8Array.from(dataView).buffer), {size: dataView.length}, 0);
return parseTags(new DataView(Uint8Array.from(dataView).buffer), {size: dataView.length}, 0, includeUnknown);
}
const {naaBlock, dataOffset: newDataOffset} = getNaaResourceBlock(dataView, dataOffset);
return parseTags(dataView, naaBlock, newDataOffset);
return parseTags(dataView, naaBlock, newDataOffset, includeUnknown);
} catch (error) {

@@ -66,3 +66,3 @@ return {};

function parseTags(dataView, naaBlock, dataOffset) {
function parseTags(dataView, naaBlock, dataOffset, includeUnknown) {
const tags = {};

@@ -74,3 +74,3 @@ let encoding = undefined;

while ((dataOffset < endOfBlockOffset) && (dataOffset < dataView.byteLength)) {
const {tag, tagSize} = readTag(dataView, dataOffset, tags, encoding);
const {tag, tagSize} = readTag(dataView, dataOffset, tags, encoding, includeUnknown);

@@ -81,25 +81,27 @@ if (tag === null) {

if ('encoding' in tag) {
encoding = tag.encoding;
}
if (tag) {
if ('encoding' in tag) {
encoding = tag.encoding;
}
if ((tags[tag.name] === undefined) || (tag['repeatable'] === undefined)) {
tags[tag.name] = {
id: tag.id,
value: tag.value,
description: tag.description
};
} else {
if (!(tags[tag.name] instanceof Array)) {
tags[tag.name] = [{
id: tags[tag.name].id,
value: tags[tag.name].value,
description: tags[tag.name].description
}];
if ((tags[tag.name] === undefined) || (tag['repeatable'] === undefined)) {
tags[tag.name] = {
id: tag.id,
value: tag.value,
description: tag.description
};
} else {
if (!(tags[tag.name] instanceof Array)) {
tags[tag.name] = [{
id: tags[tag.name].id,
value: tags[tag.name].value,
description: tags[tag.name].description
}];
}
tags[tag.name].push({
id: tag.id,
value: tag.value,
description: tag.description
});
}
tags[tag.name].push({
id: tag.id,
value: tag.value,
description: tag.description
});
}

@@ -113,3 +115,3 @@

function readTag(dataView, dataOffset, tags, encoding) {
function readTag(dataView, dataOffset, tags, encoding, includeUnknown) {
const TAG_CODE_OFFSET = 1;

@@ -124,2 +126,7 @@ const TAG_SIZE_OFFSET = 3;

const tagSize = dataView.getUint16(dataOffset + TAG_SIZE_OFFSET);
if (!includeUnknown && !IptcTagNames['iptc'][tagCode]) {
return {tag: undefined, tagSize};
}
const tagValue = getTagValue(dataView, dataOffset + TAG_HEADER_SIZE, tagSize);

@@ -126,0 +133,0 @@

@@ -33,8 +33,8 @@ /* This Source Code Form is subject to the terms of the Mozilla Public

function read(dataView, tiffHeaderOffset) {
function read(dataView, tiffHeaderOffset, includeUnknown) {
const byteOrder = ByteOrder.getByteOrder(dataView, tiffHeaderOffset);
let tags = read0thIfd(dataView, tiffHeaderOffset, byteOrder);
tags = readExifIfd(tags, dataView, tiffHeaderOffset, byteOrder);
tags = readGpsIfd(tags, dataView, tiffHeaderOffset, byteOrder);
tags = readInteroperabilityIfd(tags, dataView, tiffHeaderOffset, byteOrder);
let tags = read0thIfd(dataView, tiffHeaderOffset, byteOrder, includeUnknown);
tags = readExifIfd(tags, dataView, tiffHeaderOffset, byteOrder, includeUnknown);
tags = readGpsIfd(tags, dataView, tiffHeaderOffset, byteOrder, includeUnknown);
tags = readInteroperabilityIfd(tags, dataView, tiffHeaderOffset, byteOrder, includeUnknown);

@@ -44,4 +44,4 @@ return tags;

function read0thIfd(dataView, tiffHeaderOffset, byteOrder) {
return readIfd(dataView, '0th', tiffHeaderOffset, get0thIfdOffset(dataView, tiffHeaderOffset, byteOrder), byteOrder);
function read0thIfd(dataView, tiffHeaderOffset, byteOrder, includeUnknown) {
return readIfd(dataView, '0th', tiffHeaderOffset, get0thIfdOffset(dataView, tiffHeaderOffset, byteOrder), byteOrder, includeUnknown);
}

@@ -53,5 +53,5 @@

function readExifIfd(tags, dataView, tiffHeaderOffset, byteOrder) {
function readExifIfd(tags, dataView, tiffHeaderOffset, byteOrder, includeUnknown) {
if (tags[EXIF_IFD_POINTER_KEY] !== undefined) {
return objectAssign(tags, readIfd(dataView, 'exif', tiffHeaderOffset, tiffHeaderOffset + tags[EXIF_IFD_POINTER_KEY].value, byteOrder));
return objectAssign(tags, readIfd(dataView, 'exif', tiffHeaderOffset, tiffHeaderOffset + tags[EXIF_IFD_POINTER_KEY].value, byteOrder, includeUnknown));
}

@@ -62,5 +62,5 @@

function readGpsIfd(tags, dataView, tiffHeaderOffset, byteOrder) {
function readGpsIfd(tags, dataView, tiffHeaderOffset, byteOrder, includeUnknown) {
if (tags[GPS_INFO_IFD_POINTER_KEY] !== undefined) {
return objectAssign(tags, readIfd(dataView, 'gps', tiffHeaderOffset, tiffHeaderOffset + tags[GPS_INFO_IFD_POINTER_KEY].value, byteOrder));
return objectAssign(tags, readIfd(dataView, 'gps', tiffHeaderOffset, tiffHeaderOffset + tags[GPS_INFO_IFD_POINTER_KEY].value, byteOrder, includeUnknown));
}

@@ -71,5 +71,5 @@

function readInteroperabilityIfd(tags, dataView, tiffHeaderOffset, byteOrder) {
function readInteroperabilityIfd(tags, dataView, tiffHeaderOffset, byteOrder, includeUnknown) {
if (tags[INTEROPERABILITY_IFD_POINTER_KEY] !== undefined) {
return objectAssign(tags, readIfd(dataView, 'interoperability', tiffHeaderOffset, tiffHeaderOffset + tags[INTEROPERABILITY_IFD_POINTER_KEY].value, byteOrder));
return objectAssign(tags, readIfd(dataView, 'interoperability', tiffHeaderOffset, tiffHeaderOffset + tags[INTEROPERABILITY_IFD_POINTER_KEY].value, byteOrder, includeUnknown));
}

@@ -80,5 +80,5 @@

function readMpf(dataView, dataOffset) {
function readMpf(dataView, dataOffset, includeUnknown) {
const byteOrder = ByteOrder.getByteOrder(dataView, dataOffset);
const tags = readIfd(dataView, 'mpf', dataOffset, get0thIfdOffset(dataView, dataOffset, byteOrder), byteOrder);
const tags = readIfd(dataView, 'mpf', dataOffset, get0thIfdOffset(dataView, dataOffset, byteOrder), byteOrder, includeUnknown);
return addMpfImages(dataView, dataOffset, tags, byteOrder);

@@ -211,3 +211,3 @@ }

function readIfd(dataView, ifdType, tiffHeaderOffset, offset, byteOrder) {
function readIfd(dataView, ifdType, tiffHeaderOffset, offset, byteOrder, includeUnknown) {
const FIELD_COUNT_SIZE = Types.getTypeSize('SHORT');

@@ -225,3 +225,3 @@ const FIELD_SIZE = 12;

const tag = readTag(dataView, ifdType, tiffHeaderOffset, offset, byteOrder);
const tag = readTag(dataView, ifdType, tiffHeaderOffset, offset, byteOrder, includeUnknown);
if (tag !== undefined) {

@@ -241,3 +241,3 @@ tags[tag.name] = {

if (nextIfdOffset !== 0) {
tags['Thumbnail'] = readIfd(dataView, ifdType, tiffHeaderOffset, tiffHeaderOffset + nextIfdOffset, byteOrder);
tags['Thumbnail'] = readIfd(dataView, ifdType, tiffHeaderOffset, tiffHeaderOffset + nextIfdOffset, byteOrder, true);
}

@@ -256,3 +256,3 @@ }

function readTag(dataView, ifdType, tiffHeaderOffset, offset, byteOrder) {
function readTag(dataView, ifdType, tiffHeaderOffset, offset, byteOrder, includeUnknown) {
const TAG_CODE_IPTC_NAA = 0x83bb;

@@ -268,3 +268,3 @@ const TAG_TYPE_OFFSET = Types.getTypeSize('SHORT');

if (Types.typeSizes[tagType] === undefined) {
if (Types.typeSizes[tagType] === undefined || (!includeUnknown && TagNames[ifdType][tagCode] === undefined)) {
return undefined;

@@ -271,0 +271,0 @@ }

@@ -257,3 +257,3 @@ /* This Source Code Form is subject to the terms of the Mozilla Public

for (const key in value) {
descriptions.push(`${getClearTextKey(key)}: ${value[key].value}`);
descriptions.push(`${getClearTextKey(key)}: ${getDescription(value[key].value)}`);
}

@@ -307,7 +307,10 @@

return parseNodeAsSimpleRdfDescription(node, name);
} else if (hasNestedStructureRdfDescription(node)) {
}
if (hasNestedStructureRdfDescription(node)) {
return parseNodeAsStructureRdfDescription(node, name);
} else if (isCompactStructure(node)) {
}
if (isCompactStructure(node)) {
return parseNodeAsCompactStructure(node, name);
} else if (isArray(node)) {
}
if (isArray(node)) {
return parseNodeAsArray(node, name);

@@ -395,2 +398,3 @@ }

return (Object.keys(node.value).length === 0)
&& (node.attributes['xml:lang'] === undefined)
&& (node.attributes['rdf:resource'] === undefined);

@@ -443,18 +447,12 @@ }

}
if (hasNestedArrayValue(item)) {
return parseNodeChildrenAsTags(item.value);
if (hasNestedStructureRdfDescription(item)) {
return parseNodeAsStructureRdfDescription(item).value;
}
if (isCompactStructure(item)) {
return parseNodeAsCompactStructure(item).value;
}
return {
value: item.value,
attributes: parseNodeAttributes(item),
description: getDescription(item.value)
};
return parseNodeAsSimpleValue(item);
}
function hasNestedArrayValue(node) {
return node.attributes['rdf:parseType'] === 'Resource';
}
function parseNodeAsSimpleValue(node, name) {

@@ -461,0 +459,0 @@ const value = getURIValue(node) || parseXMPObject(node.value);

@@ -26,3 +26,3 @@ /* This Source Code Form is subject to the terms of the Mozilla Public

module.exports = {
mode: 'production',
mode: process.env.NODE_ENV || 'production',
optimization: {

@@ -46,5 +46,6 @@ minimizer: [new TerserPlugin({

output: {
path: path.resolve(__dirname, 'dist'),
library: 'ExifReader',
libraryTarget: 'umd',
library: {
name: 'ExifReader',
type: 'umd'
},
globalObject: 'typeof self !== \'undefined\' ? self : this'

@@ -54,7 +55,16 @@ },

devServer: {
contentBase: [path.join(__dirname, 'examples'), path.join(__dirname, 'src')],
contentBasePublicPath: ['/', '/src'],
static: [
{
directory: path.join(__dirname, 'examples'),
publicPath: '/',
watch: !process.env.CI
},
{
directory: path.join(__dirname, 'src'),
publicPath: '/src',
watch: !process.env.CI
}
],
https: true,
open: !process.env.CI,
watchContentBase: !process.env.CI,
liveReload: !process.env.CI

@@ -84,5 +94,2 @@ },

]
},
node: {
Buffer: false
}

@@ -89,0 +96,0 @@ };

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc