local M = {}
local MIME_EXT_MAPPINGS = {
  ["123"] = "application/vnd.lotus-1-2-3",
  ["3dml"] = "text/vnd.in3d.3dml",
  ["3ds"] = "image/x-3ds",
  ["3g2"] = "video/3gpp2",
  ["3gp"] = "video/3gpp",
  ["7z"] = "application/x-7z-compressed",
  ["aab"] = "application/x-authorware-bin",
  ["aac"] = "audio/x-aac",
  ["aam"] = "application/x-authorware-map",
  ["aas"] = "application/x-authorware-seg",
  ["abw"] = "application/x-abiword",
  ["ac"] = "application/pkix-attr-cert",
  ["acc"] = "application/vnd.americandynamics.acc",
  ["ace"] = "application/x-ace-compressed",
  ["acu"] = "application/vnd.acucobol",
  ["acutc"] = "application/vnd.acucorp",
  ["adp"] = "audio/adpcm",
  ["aep"] = "application/vnd.audiograph",
  ["afm"] = "application/x-font-type1",
  ["afp"] = "application/vnd.ibm.modcap",
  ["ahead"] = "application/vnd.ahead.space",
  ["ai"] = "application/postscript",
  ["aif"] = "audio/x-aiff",
  ["aifc"] = "audio/x-aiff",
  ["aiff"] = "audio/x-aiff",
  ["air"] = "application/vnd.adobe.air-application-installer-package+zip",
  ["ait"] = "application/vnd.dvb.ait",
  ["ami"] = "application/vnd.amiga.ami",
  ["apk"] = "application/vnd.android.package-archive",
  ["appcache"] = "text/cache-manifest",
  ["application"] = "application/x-ms-application",
  ["apr"] = "application/vnd.lotus-approach",
  ["arc"] = "application/x-freearc",
  ["asc"] = "application/pgp-signature",
  ["asf"] = "video/x-ms-asf",
  ["asm"] = "text/x-asm",
  ["aso"] = "application/vnd.accpac.simply.aso",
  ["asx"] = "video/x-ms-asf",
  ["atc"] = "application/vnd.acucorp",
  ["atom"] = "application/atom+xml",
  ["atomcat"] = "application/atomcat+xml",
  ["atomsvc"] = "application/atomsvc+xml",
  ["atx"] = "application/vnd.antix.game-component",
  ["au"] = "audio/basic",
  ["avif"] = "image/avif",
  ["avi"] = "video/x-msvideo",
  ["aw"] = "application/applixware",
  ["azf"] = "application/vnd.airzip.filesecure.azf",
  ["azs"] = "application/vnd.airzip.filesecure.azs",
  ["azw"] = "application/vnd.amazon.ebook",
  ["bat"] = "application/x-msdownload",
  ["bcpio"] = "application/x-bcpio",
  ["bdf"] = "application/x-font-bdf",
  ["bdm"] = "application/vnd.syncml.dm+wbxml",
  ["bed"] = "application/vnd.realvnc.bed",
  ["bh2"] = "application/vnd.fujitsu.oasysprs",
  ["bin"] = "application/octet-stream",
  ["blb"] = "application/x-blorb",
  ["blorb"] = "application/x-blorb",
  ["bmi"] = "application/vnd.bmi",
  ["bmp"] = "image/bmp",
  ["book"] = "application/vnd.framemaker",
  ["box"] = "application/vnd.previewsystems.box",
  ["boz"] = "application/x-bzip2",
  ["bpk"] = "application/octet-stream",
  ["btif"] = "image/prs.btif",
  ["bz2"] = "application/x-bzip2",
  ["bz"] = "application/x-bzip",
  ["c11amc"] = "application/vnd.cluetrust.cartomobile-config",
  ["c11amz"] = "application/vnd.cluetrust.cartomobile-config-pkg",
  ["c4d"] = "application/vnd.clonk.c4group",
  ["c4f"] = "application/vnd.clonk.c4group",
  ["c4g"] = "application/vnd.clonk.c4group",
  ["c4p"] = "application/vnd.clonk.c4group",
  ["c4u"] = "application/vnd.clonk.c4group",
  ["cab"] = "application/vnd.ms-cab-compressed",
  ["caf"] = "audio/x-caf",
  ["cap"] = "application/vnd.tcpdump.pcap",
  ["car"] = "application/vnd.curl.car",
  ["cat"] = "application/vnd.ms-pki.seccat",
  ["cb7"] = "application/x-cbr",
  ["cba"] = "application/x-cbr",
  ["cbr"] = "application/x-cbr",
  ["cbt"] = "application/x-cbr",
  ["cbz"] = "application/x-cbr",
  ["cct"] = "application/x-director",
  ["cc"] = "text/x-c",
  ["ccxml"] = "application/ccxml+xml",
  ["cdbcmsg"] = "application/vnd.contact.cmsg",
  ["cdf"] = "application/x-netcdf",
  ["cdkey"] = "application/vnd.mediastation.cdkey",
  ["cdmia"] = "application/cdmi-capability",
  ["cdmic"] = "application/cdmi-container",
  ["cdmid"] = "application/cdmi-domain",
  ["cdmio"] = "application/cdmi-object",
  ["cdmiq"] = "application/cdmi-queue",
  ["cdx"] = "chemical/x-cdx",
  ["cdxml"] = "application/vnd.chemdraw+xml",
  ["cdy"] = "application/vnd.cinderella",
  ["cer"] = "application/pkix-cert",
  ["cfs"] = "application/x-cfs-compressed",
  ["cgm"] = "image/cgm",
  ["chat"] = "application/x-chat",
  ["chm"] = "application/vnd.ms-htmlhelp",
  ["chrt"] = "application/vnd.kde.kchart",
  ["cif"] = "chemical/x-cif",
  ["cii"] = "application/vnd.anser-web-certificate-issue-initiation",
  ["cil"] = "application/vnd.ms-artgalry",
  ["cla"] = "application/vnd.claymore",
  ["class"] = "application/java-vm",
  ["clkk"] = "application/vnd.crick.clicker.keyboard",
  ["clkp"] = "application/vnd.crick.clicker.palette",
  ["clkt"] = "application/vnd.crick.clicker.template",
  ["clkw"] = "application/vnd.crick.clicker.wordbank",
  ["clkx"] = "application/vnd.crick.clicker",
  ["clp"] = "application/x-msclip",
  ["cmc"] = "application/vnd.cosmocaller",
  ["cmdf"] = "chemical/x-cmdf",
  ["cml"] = "chemical/x-cml",
  ["cmp"] = "application/vnd.yellowriver-custom-menu",
  ["cmx"] = "image/x-cmx",
  ["cod"] = "application/vnd.rim.cod",
  ["com"] = "application/x-msdownload",
  ["conf"] = "text/plain",
  ["cpio"] = "application/x-cpio",
  ["cpp"] = "text/x-c",
  ["cpt"] = "application/mac-compactpro",
  ["crd"] = "application/x-mscardfile",
  ["crl"] = "application/pkix-crl",
  ["crt"] = "application/x-x509-ca-cert",
  ["cryptonote"] = "application/vnd.rig.cryptonote",
  ["csh"] = "application/x-csh",
  ["csml"] = "chemical/x-csml",
  ["csp"] = "application/vnd.commonspace",
  ["css"] = "text/css",
  ["cst"] = "application/x-director",
  ["csv"] = "text/csv",
  ["c"] = "text/x-c",
  ["cu"] = "application/cu-seeme",
  ["curl"] = "text/vnd.curl",
  ["cww"] = "application/prs.cww",
  ["cxt"] = "application/x-director",
  ["cxx"] = "text/x-c",
  ["dae"] = "model/vnd.collada+xml",
  ["daf"] = "application/vnd.mobius.daf",
  ["dart"] = "application/vnd.dart",
  ["dataless"] = "application/vnd.fdsn.seed",
  ["davmount"] = "application/davmount+xml",
  ["dbk"] = "application/docbook+xml",
  ["dcr"] = "application/x-director",
  ["dcurl"] = "text/vnd.curl.dcurl",
  ["dd2"] = "application/vnd.oma.dd2+xml",
  ["ddd"] = "application/vnd.fujixerox.ddd",
  ["deb"] = "application/x-debian-package",
  ["def"] = "text/plain",
  ["deploy"] = "application/octet-stream",
  ["der"] = "application/x-x509-ca-cert",
  ["dfac"] = "application/vnd.dreamfactory",
  ["dgc"] = "application/x-dgc-compressed",
  ["dic"] = "text/x-c",
  ["dir"] = "application/x-director",
  ["dis"] = "application/vnd.mobius.dis",
  ["dist"] = "application/octet-stream",
  ["distz"] = "application/octet-stream",
  ["djv"] = "image/vnd.djvu",
  ["djvu"] = "image/vnd.djvu",
  ["dll"] = "application/x-msdownload",
  ["dmg"] = "application/x-apple-diskimage",
  ["dmp"] = "application/vnd.tcpdump.pcap",
  ["dms"] = "application/octet-stream",
  ["dna"] = "application/vnd.dna",
  ["doc"] = "application/msword",
  ["docm"] = "application/vnd.ms-word.document.macroenabled.12",
  ["docx"] = "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
  ["dot"] = "application/msword",
  ["dotm"] = "application/vnd.ms-word.template.macroenabled.12",
  ["dotx"] = "application/vnd.openxmlformats-officedocument.wordprocessingml.template",
  ["dp"] = "application/vnd.osgi.dp",
  ["dpg"] = "application/vnd.dpgraph",
  ["dra"] = "audio/vnd.dra",
  ["dsc"] = "text/prs.lines.tag",
  ["dssc"] = "application/dssc+der",
  ["dtb"] = "application/x-dtbook+xml",
  ["dtd"] = "application/xml-dtd",
  ["dts"] = "audio/vnd.dts",
  ["dtshd"] = "audio/vnd.dts.hd",
  ["dump"] = "application/octet-stream",
  ["dvb"] = "video/vnd.dvb.file",
  ["dvi"] = "application/x-dvi",
  ["dwf"] = "model/vnd.dwf",
  ["dwg"] = "image/vnd.dwg",
  ["dxf"] = "image/vnd.dxf",
  ["dxp"] = "application/vnd.spotfire.dxp",
  ["dxr"] = "application/x-director",
  ["ecelp4800"] = "audio/vnd.nuera.ecelp4800",
  ["ecelp7470"] = "audio/vnd.nuera.ecelp7470",
  ["ecelp9600"] = "audio/vnd.nuera.ecelp9600",
  ["ecma"] = "application/ecmascript",
  ["edm"] = "application/vnd.novadigm.edm",
  ["edx"] = "application/vnd.novadigm.edx",
  ["efif"] = "application/vnd.picsel",
  ["ei6"] = "application/vnd.pg.osasli",
  ["elc"] = "application/octet-stream",
  ["emf"] = "application/x-msmetafile",
  ["eml"] = "message/rfc822",
  ["emma"] = "application/emma+xml",
  ["emz"] = "application/x-msmetafile",
  ["eol"] = "audio/vnd.digital-winds",
  ["eot"] = "application/vnd.ms-fontobject",
  ["eps"] = "application/postscript",
  ["epub"] = "application/epub+zip",
  ["es3"] = "application/vnd.eszigno3+xml",
  ["esa"] = "application/vnd.osgi.subsystem",
  ["esf"] = "application/vnd.epson.esf",
  ["et3"] = "application/vnd.eszigno3+xml",
  ["etx"] = "text/x-setext",
  ["eva"] = "application/x-eva",
  ["evy"] = "application/x-envoy",
  ["exe"] = "application/x-msdownload",
  ["exi"] = "application/exi",
  ["ext"] = "application/vnd.novadigm.ext",
  ["ez2"] = "application/vnd.ezpix-album",
  ["ez3"] = "application/vnd.ezpix-package",
  ["ez"] = "application/andrew-inset",
  ["f4v"] = "video/x-f4v",
  ["f77"] = "text/x-fortran",
  ["f90"] = "text/x-fortran",
  ["fbs"] = "image/vnd.fastbidsheet",
  ["fcdt"] = "application/vnd.adobe.formscentral.fcdt",
  ["fcs"] = "application/vnd.isac.fcs",
  ["fdf"] = "application/vnd.fdf",
  ["fe_launch"] = "application/vnd.denovo.fcselayout-link",
  ["fg5"] = "application/vnd.fujitsu.oasysgp",
  ["fgd"] = "application/x-director",
  ["fh4"] = "image/x-freehand",
  ["fh5"] = "image/x-freehand",
  ["fh7"] = "image/x-freehand",
  ["fhc"] = "image/x-freehand",
  ["fh"] = "image/x-freehand",
  ["fig"] = "application/x-xfig",
  ["flac"] = "audio/x-flac",
  ["fli"] = "video/x-fli",
  ["flo"] = "application/vnd.micrografx.flo",
  ["flv"] = "video/x-flv",
  ["flw"] = "application/vnd.kde.kivio",
  ["flx"] = "text/vnd.fmi.flexstor",
  ["fly"] = "text/vnd.fly",
  ["fm"] = "application/vnd.framemaker",
  ["fnc"] = "application/vnd.frogans.fnc",
  ["for"] = "text/x-fortran",
  ["fpx"] = "image/vnd.fpx",
  ["frame"] = "application/vnd.framemaker",
  ["fsc"] = "application/vnd.fsc.weblaunch",
  ["fst"] = "image/vnd.fst",
  ["ftc"] = "application/vnd.fluxtime.clip",
  ["f"] = "text/x-fortran",
  ["fti"] = "application/vnd.anser-web-funds-transfer-initiation",
  ["fvt"] = "video/vnd.fvt",
  ["fxp"] = "application/vnd.adobe.fxp",
  ["fxpl"] = "application/vnd.adobe.fxp",
  ["fzs"] = "application/vnd.fuzzysheet",
  ["g2w"] = "application/vnd.geoplan",
  ["g3"] = "image/g3fax",
  ["g3w"] = "application/vnd.geospace",
  ["gac"] = "application/vnd.groove-account",
  ["gam"] = "application/x-tads",
  ["gbr"] = "application/rpki-ghostbusters",
  ["gca"] = "application/x-gca-compressed",
  ["gdl"] = "model/vnd.gdl",
  ["geo"] = "application/vnd.dynageo",
  ["gex"] = "application/vnd.geometry-explorer",
  ["ggb"] = "application/vnd.geogebra.file",
  ["ggs"] = "application/vnd.geogebra.slides",
  ["ggt"] = "application/vnd.geogebra.tool",
  ["ghf"] = "application/vnd.groove-help",
  ["gif"] = "image/gif",
  ["gim"] = "application/vnd.groove-identity-message",
  ["gml"] = "application/gml+xml",
  ["gmx"] = "application/vnd.gmx",
  ["gnumeric"] = "application/x-gnumeric",
  ["gph"] = "application/vnd.flographit",
  ["gpx"] = "application/gpx+xml",
  ["gqf"] = "application/vnd.grafeq",
  ["gqs"] = "application/vnd.grafeq",
  ["gram"] = "application/srgs",
  ["gramps"] = "application/x-gramps-xml",
  ["gre"] = "application/vnd.geometry-explorer",
  ["grv"] = "application/vnd.groove-injector",
  ["grxml"] = "application/srgs+xml",
  ["gsf"] = "application/x-font-ghostscript",
  ["gtar"] = "application/x-gtar",
  ["gtm"] = "application/vnd.groove-tool-message",
  ["gtw"] = "model/vnd.gtw",
  ["gv"] = "text/vnd.graphviz",
  ["gxf"] = "application/gxf",
  ["gxt"] = "application/vnd.geonext",
  ["h261"] = "video/h261",
  ["h263"] = "video/h263",
  ["h264"] = "video/h264",
  ["hal"] = "application/vnd.hal+xml",
  ["hbci"] = "application/vnd.hbci",
  ["hdf"] = "application/x-hdf",
  ["hh"] = "text/x-c",
  ["hlp"] = "application/winhlp",
  ["hpgl"] = "application/vnd.hp-hpgl",
  ["hpid"] = "application/vnd.hp-hpid",
  ["hps"] = "application/vnd.hp-hps",
  ["hqx"] = "application/mac-binhex40",
  ["h"] = "text/x-c",
  ["htke"] = "application/vnd.kenameaapp",
  ["html"] = "text/html",
  ["htm"] = "text/html",
  ["hvd"] = "application/vnd.yamaha.hv-dic",
  ["hvp"] = "application/vnd.yamaha.hv-voice",
  ["hvs"] = "application/vnd.yamaha.hv-script",
  ["i2g"] = "application/vnd.intergeo",
  ["icc"] = "application/vnd.iccprofile",
  ["ice"] = "x-conference/x-cooltalk",
  ["icm"] = "application/vnd.iccprofile",
  ["ico"] = "image/x-icon",
  ["ics"] = "text/calendar",
  ["ief"] = "image/ief",
  ["ifb"] = "text/calendar",
  ["ifm"] = "application/vnd.shana.informed.formdata",
  ["iges"] = "model/iges",
  ["igl"] = "application/vnd.igloader",
  ["igm"] = "application/vnd.insors.igm",
  ["igs"] = "model/iges",
  ["igx"] = "application/vnd.micrografx.igx",
  ["iif"] = "application/vnd.shana.informed.interchange",
  ["imp"] = "application/vnd.accpac.simply.imp",
  ["ims"] = "application/vnd.ms-ims",
  ["ink"] = "application/inkml+xml",
  ["inkml"] = "application/inkml+xml",
  ["install"] = "application/x-install-instructions",
  ["in"] = "text/plain",
  ["iota"] = "application/vnd.astraea-software.iota",
  ["ipfix"] = "application/ipfix",
  ["ipk"] = "application/vnd.shana.informed.package",
  ["irm"] = "application/vnd.ibm.rights-management",
  ["irp"] = "application/vnd.irepository.package+xml",
  ["iso"] = "application/x-iso9660-image",
  ["itp"] = "application/vnd.shana.informed.formtemplate",
  ["ivp"] = "application/vnd.immervision-ivp",
  ["ivu"] = "application/vnd.immervision-ivu",
  ["jad"] = "text/vnd.sun.j2me.app-descriptor",
  ["jam"] = "application/vnd.jam",
  ["jar"] = "application/java-archive",
  ["java"] = "text/x-java-source",
  ["jisp"] = "application/vnd.jisp",
  ["jlt"] = "application/vnd.hp-jlyt",
  ["jnlp"] = "application/x-java-jnlp-file",
  ["joda"] = "application/vnd.joost.joda-archive",
  ["jpeg"] = "image/jpeg",
  ["jpe"] = "image/jpeg",
  ["jpg"] = "image/jpeg",
  ["jpgm"] = "video/jpm",
  ["jpgv"] = "video/jpeg",
  ["jpm"] = "video/jpm",
  ["json"] = "application/json",
  ["jsonml"] = "application/jsonml+json",
  ["js"] = "text/javascript",
  ["kar"] = "audio/midi",
  ["karbon"] = "application/vnd.kde.karbon",
  ["kfo"] = "application/vnd.kde.kformula",
  ["kia"] = "application/vnd.kidspiration",
  ["kml"] = "application/vnd.google-earth.kml+xml",
  ["kmz"] = "application/vnd.google-earth.kmz",
  ["kne"] = "application/vnd.kinar",
  ["knp"] = "application/vnd.kinar",
  ["kon"] = "application/vnd.kde.kontour",
  ["kpr"] = "application/vnd.kde.kpresenter",
  ["kpt"] = "application/vnd.kde.kpresenter",
  ["kpxx"] = "application/vnd.ds-keypoint",
  ["ksp"] = "application/vnd.kde.kspread",
  ["ktr"] = "application/vnd.kahootz",
  ["ktx"] = "image/ktx",
  ["ktz"] = "application/vnd.kahootz",
  ["kwd"] = "application/vnd.kde.kword",
  ["kwt"] = "application/vnd.kde.kword",
  ["lasxml"] = "application/vnd.las.las+xml",
  ["latex"] = "application/x-latex",
  ["lbd"] = "application/vnd.llamagraphics.life-balance.desktop",
  ["lbe"] = "application/vnd.llamagraphics.life-balance.exchange+xml",
  ["les"] = "application/vnd.hhe.lesson-player",
  ["lha"] = "application/x-lzh-compressed",
  ["link66"] = "application/vnd.route66.link66+xml",
  ["list3820"] = "application/vnd.ibm.modcap",
  ["listafp"] = "application/vnd.ibm.modcap",
  ["list"] = "text/plain",
  ["lnk"] = "application/x-ms-shortcut",
  ["log"] = "text/plain",
  ["lostxml"] = "application/lost+xml",
  ["lrf"] = "application/octet-stream",
  ["lrm"] = "application/vnd.ms-lrm",
  ["ltf"] = "application/vnd.frogans.ltf",
  ["lvp"] = "audio/vnd.lucent.voice",
  ["lwp"] = "application/vnd.lotus-wordpro",
  ["lzh"] = "application/x-lzh-compressed",
  ["m13"] = "application/x-msmediaview",
  ["m14"] = "application/x-msmediaview",
  ["m1v"] = "video/mpeg",
  ["m21"] = "application/mp21",
  ["m2a"] = "audio/mpeg",
  ["m2ts"] = "video/mp2t",
  ["m2t"] = "video/mp2t",
  ["m2v"] = "video/mpeg",
  ["m3a"] = "audio/mpeg",
  ["m3u8"] = "application/vnd.apple.mpegurl",
  ["m3u"] = "audio/x-mpegurl",
  ["m4a"] = "audio/mp4",
  ["m4u"] = "video/vnd.mpegurl",
  ["m4v"] = "video/x-m4v",
  ["ma"] = "application/mathematica",
  ["mads"] = "application/mads+xml",
  ["mag"] = "application/vnd.ecowin.chart",
  ["maker"] = "application/vnd.framemaker",
  ["man"] = "text/troff",
  ["mar"] = "application/octet-stream",
  ["mathml"] = "application/mathml+xml",
  ["mb"] = "application/mathematica",
  ["mbk"] = "application/vnd.mobius.mbk",
  ["mbox"] = "application/mbox",
  ["mc1"] = "application/vnd.medcalcdata",
  ["mcd"] = "application/vnd.mcd",
  ["mcurl"] = "text/vnd.curl.mcurl",
  ["mdb"] = "application/x-msaccess",
  ["mdi"] = "image/vnd.ms-modi",
  ["mesh"] = "model/mesh",
  ["meta4"] = "application/metalink4+xml",
  ["metalink"] = "application/metalink+xml",
  ["me"] = "text/troff",
  ["mets"] = "application/mets+xml",
  ["mfm"] = "application/vnd.mfmp",
  ["mft"] = "application/rpki-manifest",
  ["mgp"] = "application/vnd.osgeo.mapguide.package",
  ["mgz"] = "application/vnd.proteus.magazine",
  ["mid"] = "audio/midi",
  ["midi"] = "audio/midi",
  ["mie"] = "application/x-mie",
  ["mif"] = "application/vnd.mif",
  ["mime"] = "message/rfc822",
  ["mj2"] = "video/mj2",
  ["mjp2"] = "video/mj2",
  ["mjs"] = "text/javascript",
  ["mk3d"] = "video/x-matroska",
  ["mka"] = "audio/x-matroska",
  ["mks"] = "video/x-matroska",
  ["mkv"] = "video/x-matroska",
  ["mlp"] = "application/vnd.dolby.mlp",
  ["mmd"] = "application/vnd.chipnuts.karaoke-mmd",
  ["mmf"] = "application/vnd.smaf",
  ["mmr"] = "image/vnd.fujixerox.edmics-mmr",
  ["mng"] = "video/x-mng",
  ["mny"] = "application/x-msmoney",
  ["mobi"] = "application/x-mobipocket-ebook",
  ["mods"] = "application/mods+xml",
  ["movie"] = "video/x-sgi-movie",
  ["mov"] = "video/quicktime",
  ["mp21"] = "application/mp21",
  ["mp2a"] = "audio/mpeg",
  ["mp2"] = "audio/mpeg",
  ["mp3"] = "audio/mpeg",
  ["mp4a"] = "audio/mp4",
  ["mp4s"] = "application/mp4",
  ["mp4"] = "video/mp4",
  ["mp4v"] = "video/mp4",
  ["mpc"] = "application/vnd.mophun.certificate",
  ["mpeg"] = "video/mpeg",
  ["mpe"] = "video/mpeg",
  ["mpg4"] = "video/mp4",
  ["mpga"] = "audio/mpeg",
  ["mpg"] = "video/mpeg",
  ["mpkg"] = "application/vnd.apple.installer+xml",
  ["mpm"] = "application/vnd.blueice.multipass",
  ["mpn"] = "application/vnd.mophun.application",
  ["mpp"] = "application/vnd.ms-project",
  ["mpt"] = "application/vnd.ms-project",
  ["mpy"] = "application/vnd.ibm.minipay",
  ["mqy"] = "application/vnd.mobius.mqy",
  ["mrc"] = "application/marc",
  ["mrcx"] = "application/marcxml+xml",
  ["mscml"] = "application/mediaservercontrol+xml",
  ["mseed"] = "application/vnd.fdsn.mseed",
  ["mseq"] = "application/vnd.mseq",
  ["msf"] = "application/vnd.epson.msf",
  ["msh"] = "model/mesh",
  ["msi"] = "application/x-msdownload",
  ["msl"] = "application/vnd.mobius.msl",
  ["ms"] = "text/troff",
  ["msty"] = "application/vnd.muvee.style",
  ["mts"] = "video/mp2t",
  ["mus"] = "application/vnd.musician",
  ["musicxml"] = "application/vnd.recordare.musicxml+xml",
  ["mvb"] = "application/x-msmediaview",
  ["mwf"] = "application/vnd.mfer",
  ["mxf"] = "application/mxf",
  ["mxl"] = "application/vnd.recordare.musicxml",
  ["mxml"] = "application/xv+xml",
  ["mxs"] = "application/vnd.triscape.mxs",
  ["mxu"] = "video/vnd.mpegurl",
  ["n3"] = "text/n3",
  ["nb"] = "application/mathematica",
  ["nbp"] = "application/vnd.wolfram.player",
  ["nc"] = "application/x-netcdf",
  ["ncx"] = "application/x-dtbncx+xml",
  ["nfo"] = "text/x-nfo",
  ["n-gage"] = "application/vnd.nokia.n-gage.symbian.install",
  ["ngdat"] = "application/vnd.nokia.n-gage.data",
  ["nitf"] = "application/vnd.nitf",
  ["nlu"] = "application/vnd.neurolanguage.nlu",
  ["nml"] = "application/vnd.enliven",
  ["nnd"] = "application/vnd.noblenet-directory",
  ["nns"] = "application/vnd.noblenet-sealer",
  ["nnw"] = "application/vnd.noblenet-web",
  ["npx"] = "image/vnd.net-fpx",
  ["nsc"] = "application/x-conference",
  ["nsf"] = "application/vnd.lotus-notes",
  ["ntf"] = "application/vnd.nitf",
  ["nzb"] = "application/x-nzb",
  ["oa2"] = "application/vnd.fujitsu.oasys2",
  ["oa3"] = "application/vnd.fujitsu.oasys3",
  ["oas"] = "application/vnd.fujitsu.oasys",
  ["obd"] = "application/x-msbinder",
  ["obj"] = "application/x-tgif",
  ["oda"] = "application/oda",
  ["odb"] = "application/vnd.oasis.opendocument.database",
  ["odc"] = "application/vnd.oasis.opendocument.chart",
  ["odf"] = "application/vnd.oasis.opendocument.formula",
  ["odft"] = "application/vnd.oasis.opendocument.formula-template",
  ["odg"] = "application/vnd.oasis.opendocument.graphics",
  ["odi"] = "application/vnd.oasis.opendocument.image",
  ["odm"] = "application/vnd.oasis.opendocument.text-master",
  ["odp"] = "application/vnd.oasis.opendocument.presentation",
  ["ods"] = "application/vnd.oasis.opendocument.spreadsheet",
  ["odt"] = "application/vnd.oasis.opendocument.text",
  ["oga"] = "audio/ogg",
  ["ogg"] = "audio/ogg",
  ["ogv"] = "video/ogg",
  ["ogx"] = "application/ogg",
  ["omdoc"] = "application/omdoc+xml",
  ["onepkg"] = "application/onenote",
  ["onetmp"] = "application/onenote",
  ["onetoc2"] = "application/onenote",
  ["onetoc"] = "application/onenote",
  ["opf"] = "application/oebps-package+xml",
  ["opml"] = "text/x-opml",
  ["oprc"] = "application/vnd.palm",
  ["opus"] = "audio/ogg",
  ["org"] = "application/vnd.lotus-organizer",
  ["osf"] = "application/vnd.yamaha.openscoreformat",
  ["osfpvg"] = "application/vnd.yamaha.openscoreformat.osfpvg+xml",
  ["otc"] = "application/vnd.oasis.opendocument.chart-template",
  ["otf"] = "font/otf",
  ["otg"] = "application/vnd.oasis.opendocument.graphics-template",
  ["oth"] = "application/vnd.oasis.opendocument.text-web",
  ["oti"] = "application/vnd.oasis.opendocument.image-template",
  ["otp"] = "application/vnd.oasis.opendocument.presentation-template",
  ["ots"] = "application/vnd.oasis.opendocument.spreadsheet-template",
  ["ott"] = "application/vnd.oasis.opendocument.text-template",
  ["oxps"] = "application/oxps",
  ["oxt"] = "application/vnd.openofficeorg.extension",
  ["p10"] = "application/pkcs10",
  ["p12"] = "application/x-pkcs12",
  ["p7b"] = "application/x-pkcs7-certificates",
  ["p7c"] = "application/pkcs7-mime",
  ["p7m"] = "application/pkcs7-mime",
  ["p7r"] = "application/x-pkcs7-certreqresp",
  ["p7s"] = "application/pkcs7-signature",
  ["p8"] = "application/pkcs8",
  ["pas"] = "text/x-pascal",
  ["paw"] = "application/vnd.pawaafile",
  ["pbd"] = "application/vnd.powerbuilder6",
  ["pbm"] = "image/x-portable-bitmap",
  ["pcap"] = "application/vnd.tcpdump.pcap",
  ["pcf"] = "application/x-font-pcf",
  ["pcl"] = "application/vnd.hp-pcl",
  ["pclxl"] = "application/vnd.hp-pclxl",
  ["pct"] = "image/x-pict",
  ["pcurl"] = "application/vnd.curl.pcurl",
  ["pcx"] = "image/x-pcx",
  ["pdb"] = "application/vnd.palm",
  ["pdf"] = "application/pdf",
  ["pfa"] = "application/x-font-type1",
  ["pfb"] = "application/x-font-type1",
  ["pfm"] = "application/x-font-type1",
  ["pfr"] = "application/font-tdpfr",
  ["pfx"] = "application/x-pkcs12",
  ["pgm"] = "image/x-portable-graymap",
  ["pgn"] = "application/x-chess-pgn",
  ["pgp"] = "application/pgp-encrypted",
  ["pic"] = "image/x-pict",
  ["pkg"] = "application/octet-stream",
  ["pki"] = "application/pkixcmp",
  ["pkipath"] = "application/pkix-pkipath",
  ["plb"] = "application/vnd.3gpp.pic-bw-large",
  ["plc"] = "application/vnd.mobius.plc",
  ["plf"] = "application/vnd.pocketlearn",
  ["pls"] = "application/pls+xml",
  ["pml"] = "application/vnd.ctc-posml",
  ["png"] = "image/png",
  ["pnm"] = "image/x-portable-anymap",
  ["portpkg"] = "application/vnd.macports.portpkg",
  ["pot"] = "application/vnd.ms-powerpoint",
  ["potm"] = "application/vnd.ms-powerpoint.template.macroenabled.12",
  ["potx"] = "application/vnd.openxmlformats-officedocument.presentationml.template",
  ["ppam"] = "application/vnd.ms-powerpoint.addin.macroenabled.12",
  ["ppd"] = "application/vnd.cups-ppd",
  ["ppm"] = "image/x-portable-pixmap",
  ["pps"] = "application/vnd.ms-powerpoint",
  ["ppsm"] = "application/vnd.ms-powerpoint.slideshow.macroenabled.12",
  ["ppsx"] = "application/vnd.openxmlformats-officedocument.presentationml.slideshow",
  ["ppt"] = "application/vnd.ms-powerpoint",
  ["pptm"] = "application/vnd.ms-powerpoint.presentation.macroenabled.12",
  ["pptx"] = "application/vnd.openxmlformats-officedocument.presentationml.presentation",
  ["pqa"] = "application/vnd.palm",
  ["prc"] = "application/x-mobipocket-ebook",
  ["pre"] = "application/vnd.lotus-freelance",
  ["prf"] = "application/pics-rules",
  ["ps"] = "application/postscript",
  ["psb"] = "application/vnd.3gpp.pic-bw-small",
  ["psd"] = "image/vnd.adobe.photoshop",
  ["psf"] = "application/x-font-linux-psf",
  ["pskcxml"] = "application/pskc+xml",
  ["p"] = "text/x-pascal",
  ["ptid"] = "application/vnd.pvi.ptid1",
  ["pub"] = "application/x-mspublisher",
  ["pvb"] = "application/vnd.3gpp.pic-bw-var",
  ["pwn"] = "application/vnd.3m.post-it-notes",
  ["pya"] = "audio/vnd.ms-playready.media.pya",
  ["pyv"] = "video/vnd.ms-playready.media.pyv",
  ["qam"] = "application/vnd.epson.quickanime",
  ["qbo"] = "application/vnd.intu.qbo",
  ["qfx"] = "application/vnd.intu.qfx",
  ["qps"] = "application/vnd.publishare-delta-tree",
  ["qt"] = "video/quicktime",
  ["qwd"] = "application/vnd.quark.quarkxpress",
  ["qwt"] = "application/vnd.quark.quarkxpress",
  ["qxb"] = "application/vnd.quark.quarkxpress",
  ["qxd"] = "application/vnd.quark.quarkxpress",
  ["qxl"] = "application/vnd.quark.quarkxpress",
  ["qxt"] = "application/vnd.quark.quarkxpress",
  ["ra"] = "audio/x-pn-realaudio",
  ["ram"] = "audio/x-pn-realaudio",
  ["rar"] = "application/x-rar-compressed",
  ["ras"] = "image/x-cmu-raster",
  ["rcprofile"] = "application/vnd.ipunplugged.rcprofile",
  ["rdf"] = "application/rdf+xml",
  ["rdz"] = "application/vnd.data-vision.rdz",
  ["rep"] = "application/vnd.businessobjects",
  ["res"] = "application/x-dtbresource+xml",
  ["rgb"] = "image/x-rgb",
  ["rif"] = "application/reginfo+xml",
  ["rip"] = "audio/vnd.rip",
  ["ris"] = "application/x-research-info-systems",
  ["rl"] = "application/resource-lists+xml",
  ["rlc"] = "image/vnd.fujixerox.edmics-rlc",
  ["rld"] = "application/resource-lists-diff+xml",
  ["rm"] = "application/vnd.rn-realmedia",
  ["rmi"] = "audio/midi",
  ["rmp"] = "audio/x-pn-realaudio-plugin",
  ["rms"] = "application/vnd.jcp.javame.midlet-rms",
  ["rmvb"] = "application/vnd.rn-realmedia-vbr",
  ["rnc"] = "application/relax-ng-compact-syntax",
  ["roa"] = "application/rpki-roa",
  ["roff"] = "text/troff",
  ["rp9"] = "application/vnd.cloanto.rp9",
  ["rpss"] = "application/vnd.nokia.radio-presets",
  ["rpst"] = "application/vnd.nokia.radio-preset",
  ["rq"] = "application/sparql-query",
  ["rs"] = "application/rls-services+xml",
  ["rsd"] = "application/rsd+xml",
  ["rss"] = "application/rss+xml",
  ["rtf"] = "application/rtf",
  ["rtx"] = "text/richtext",
  ["s3m"] = "audio/s3m",
  ["saf"] = "application/vnd.yamaha.smaf-audio",
  ["sbml"] = "application/sbml+xml",
  ["sc"] = "application/vnd.ibm.secure-container",
  ["scd"] = "application/x-msschedule",
  ["scm"] = "application/vnd.lotus-screencam",
  ["scq"] = "application/scvp-cv-request",
  ["scs"] = "application/scvp-cv-response",
  ["scurl"] = "text/vnd.curl.scurl",
  ["sda"] = "application/vnd.stardivision.draw",
  ["sdc"] = "application/vnd.stardivision.calc",
  ["sdd"] = "application/vnd.stardivision.impress",
  ["sdkd"] = "application/vnd.solent.sdkm+xml",
  ["sdkm"] = "application/vnd.solent.sdkm+xml",
  ["sdp"] = "application/sdp",
  ["sdw"] = "application/vnd.stardivision.writer",
  ["see"] = "application/vnd.seemail",
  ["seed"] = "application/vnd.fdsn.seed",
  ["sema"] = "application/vnd.sema",
  ["semd"] = "application/vnd.semd",
  ["semf"] = "application/vnd.semf",
  ["ser"] = "application/java-serialized-object",
  ["setpay"] = "application/set-payment-initiation",
  ["setreg"] = "application/set-registration-initiation",
  ["sfd-hdstx"] = "application/vnd.hydrostatix.sof-data",
  ["sfs"] = "application/vnd.spotfire.sfs",
  ["sfv"] = "text/x-sfv",
  ["sgi"] = "image/sgi",
  ["sgl"] = "application/vnd.stardivision.writer-global",
  ["sgml"] = "text/sgml",
  ["sgm"] = "text/sgml",
  ["sh"] = "application/x-sh",
  ["shar"] = "application/x-shar",
  ["shf"] = "application/shf+xml",
  ["sid"] = "image/x-mrsid-image",
  ["sig"] = "application/pgp-signature",
  ["sil"] = "audio/silk",
  ["silo"] = "model/mesh",
  ["sis"] = "application/vnd.symbian.install",
  ["sisx"] = "application/vnd.symbian.install",
  ["sit"] = "application/x-stuffit",
  ["sitx"] = "application/x-stuffitx",
  ["skd"] = "application/vnd.koan",
  ["skm"] = "application/vnd.koan",
  ["skp"] = "application/vnd.koan",
  ["skt"] = "application/vnd.koan",
  ["sldm"] = "application/vnd.ms-powerpoint.slide.macroenabled.12",
  ["sldx"] = "application/vnd.openxmlformats-officedocument.presentationml.slide",
  ["slt"] = "application/vnd.epson.salt",
  ["sm"] = "application/vnd.stepmania.stepchart",
  ["smf"] = "application/vnd.stardivision.math",
  ["smi"] = "application/smil+xml",
  ["smil"] = "application/smil+xml",
  ["smv"] = "video/x-smv",
  ["smzip"] = "application/vnd.stepmania.package",
  ["snd"] = "audio/basic",
  ["snf"] = "application/x-font-snf",
  ["so"] = "application/octet-stream",
  ["spc"] = "application/x-pkcs7-certificates",
  ["spf"] = "application/vnd.yamaha.smaf-phrase",
  ["spl"] = "application/x-futuresplash",
  ["spot"] = "text/vnd.in3d.spot",
  ["spp"] = "application/scvp-vp-response",
  ["spq"] = "application/scvp-vp-request",
  ["spx"] = "audio/ogg",
  ["sql"] = "application/x-sql",
  ["src"] = "application/x-wais-source",
  ["srt"] = "application/x-subrip",
  ["sru"] = "application/sru+xml",
  ["srx"] = "application/sparql-results+xml",
  ["ssdl"] = "application/ssdl+xml",
  ["sse"] = "application/vnd.kodak-descriptor",
  ["ssf"] = "application/vnd.epson.ssf",
  ["ssml"] = "application/ssml+xml",
  ["st"] = "application/vnd.sailingtracker.track",
  ["stc"] = "application/vnd.sun.xml.calc.template",
  ["std"] = "application/vnd.sun.xml.draw.template",
  ["s"] = "text/x-asm",
  ["stf"] = "application/vnd.wt.stf",
  ["sti"] = "application/vnd.sun.xml.impress.template",
  ["stk"] = "application/hyperstudio",
  ["stl"] = "application/vnd.ms-pki.stl",
  ["str"] = "application/vnd.pg.format",
  ["stw"] = "application/vnd.sun.xml.writer.template",
  ["sub"] = "image/vnd.dvb.subtitle",
  ["sus"] = "application/vnd.sus-calendar",
  ["susp"] = "application/vnd.sus-calendar",
  ["sv4cpio"] = "application/x-sv4cpio",
  ["sv4crc"] = "application/x-sv4crc",
  ["svc"] = "application/vnd.dvb.service",
  ["svd"] = "application/vnd.svd",
  ["svg"] = "image/svg+xml",
  ["svgz"] = "image/svg+xml",
  ["swa"] = "application/x-director",
  ["swf"] = "application/x-shockwave-flash",
  ["swi"] = "application/vnd.aristanetworks.swi",
  ["sxc"] = "application/vnd.sun.xml.calc",
  ["sxd"] = "application/vnd.sun.xml.draw",
  ["sxg"] = "application/vnd.sun.xml.writer.global",
  ["sxi"] = "application/vnd.sun.xml.impress",
  ["sxm"] = "application/vnd.sun.xml.math",
  ["sxw"] = "application/vnd.sun.xml.writer",
  ["t3"] = "application/x-t3vm-image",
  ["taglet"] = "application/vnd.mynfc",
  ["tao"] = "application/vnd.tao.intent-module-archive",
  ["tar"] = "application/x-tar",
  ["tcap"] = "application/vnd.3gpp2.tcap",
  ["tcl"] = "application/x-tcl",
  ["teacher"] = "application/vnd.smart.teacher",
  ["tei"] = "application/tei+xml",
  ["teicorpus"] = "application/tei+xml",
  ["tex"] = "application/x-tex",
  ["texi"] = "application/x-texinfo",
  ["texinfo"] = "application/x-texinfo",
  ["text"] = "text/plain",
  ["tfi"] = "application/thraud+xml",
  ["tfm"] = "application/x-tex-tfm",
  ["tga"] = "image/x-tga",
  ["thmx"] = "application/vnd.ms-officetheme",
  ["tiff"] = "image/tiff",
  ["tif"] = "image/tiff",
  ["tmo"] = "application/vnd.tmobile-livetv",
  ["torrent"] = "application/x-bittorrent",
  ["tpl"] = "application/vnd.groove-tool-template",
  ["tpt"] = "application/vnd.trid.tpt",
  ["tra"] = "application/vnd.trueapp",
  ["trm"] = "application/x-msterminal",
  ["tr"] = "text/troff",
  ["tsd"] = "application/timestamped-data",
  ["ts"] = "video/mp2t",
  ["tsv"] = "text/tab-separated-values",
  ["ttc"] = "font/collection",
  ["t"] = "text/troff",
  ["ttf"] = "font/ttf",
  ["ttl"] = "text/turtle",
  ["twd"] = "application/vnd.simtech-mindmapper",
  ["twds"] = "application/vnd.simtech-mindmapper",
  ["txd"] = "application/vnd.genomatix.tuxedo",
  ["txf"] = "application/vnd.mobius.txf",
  ["txt"] = "text/plain",
  ["u32"] = "application/x-authorware-bin",
  ["udeb"] = "application/x-debian-package",
  ["ufd"] = "application/vnd.ufdl",
  ["ufdl"] = "application/vnd.ufdl",
  ["ulx"] = "application/x-glulx",
  ["umj"] = "application/vnd.umajin",
  ["unityweb"] = "application/vnd.unity",
  ["uoml"] = "application/vnd.uoml+xml",
  ["uris"] = "text/uri-list",
  ["uri"] = "text/uri-list",
  ["urls"] = "text/uri-list",
  ["ustar"] = "application/x-ustar",
  ["utz"] = "application/vnd.uiq.theme",
  ["uu"] = "text/x-uuencode",
  ["uva"] = "audio/vnd.dece.audio",
  ["uvd"] = "application/vnd.dece.data",
  ["uvf"] = "application/vnd.dece.data",
  ["uvg"] = "image/vnd.dece.graphic",
  ["uvh"] = "video/vnd.dece.hd",
  ["uvi"] = "image/vnd.dece.graphic",
  ["uvm"] = "video/vnd.dece.mobile",
  ["uvp"] = "video/vnd.dece.pd",
  ["uvs"] = "video/vnd.dece.sd",
  ["uvt"] = "application/vnd.dece.ttml+xml",
  ["uvu"] = "video/vnd.uvvu.mp4",
  ["uvva"] = "audio/vnd.dece.audio",
  ["uvvd"] = "application/vnd.dece.data",
  ["uvvf"] = "application/vnd.dece.data",
  ["uvvg"] = "image/vnd.dece.graphic",
  ["uvvh"] = "video/vnd.dece.hd",
  ["uvvi"] = "image/vnd.dece.graphic",
  ["uvvm"] = "video/vnd.dece.mobile",
  ["uvvp"] = "video/vnd.dece.pd",
  ["uvvs"] = "video/vnd.dece.sd",
  ["uvvt"] = "application/vnd.dece.ttml+xml",
  ["uvvu"] = "video/vnd.uvvu.mp4",
  ["uvv"] = "video/vnd.dece.video",
  ["uvvv"] = "video/vnd.dece.video",
  ["uvvx"] = "application/vnd.dece.unspecified",
  ["uvvz"] = "application/vnd.dece.zip",
  ["uvx"] = "application/vnd.dece.unspecified",
  ["uvz"] = "application/vnd.dece.zip",
  ["vcard"] = "text/vcard",
  ["vcd"] = "application/x-cdlink",
  ["vcf"] = "text/x-vcard",
  ["vcg"] = "application/vnd.groove-vcard",
  ["vcs"] = "text/x-vcalendar",
  ["vcx"] = "application/vnd.vcx",
  ["vis"] = "application/vnd.visionary",
  ["viv"] = "video/vnd.vivo",
  ["vob"] = "video/x-ms-vob",
  ["vor"] = "application/vnd.stardivision.writer",
  ["vox"] = "application/x-authorware-bin",
  ["vrml"] = "model/vrml",
  ["vsd"] = "application/vnd.visio",
  ["vsf"] = "application/vnd.vsf",
  ["vss"] = "application/vnd.visio",
  ["vst"] = "application/vnd.visio",
  ["vsw"] = "application/vnd.visio",
  ["vtu"] = "model/vnd.vtu",
  ["vxml"] = "application/voicexml+xml",
  ["w3d"] = "application/x-director",
  ["wad"] = "application/x-doom",
  ["wasm"] = "application/wasm",
  ["wav"] = "audio/x-wav",
  ["wax"] = "audio/x-ms-wax",
  ["wbmp"] = "image/vnd.wap.wbmp",
  ["wbs"] = "application/vnd.criticaltools.wbs+xml",
  ["wbxml"] = "application/vnd.wap.wbxml",
  ["wcm"] = "application/vnd.ms-works",
  ["wdb"] = "application/vnd.ms-works",
  ["wdp"] = "image/vnd.ms-photo",
  ["weba"] = "audio/webm",
  ["webm"] = "video/webm",
  ["webp"] = "image/webp",
  ["wg"] = "application/vnd.pmi.widget",
  ["wgt"] = "application/widget",
  ["wks"] = "application/vnd.ms-works",
  ["wma"] = "audio/x-ms-wma",
  ["wmd"] = "application/x-ms-wmd",
  ["wmf"] = "application/x-msmetafile",
  ["wmlc"] = "application/vnd.wap.wmlc",
  ["wmlsc"] = "application/vnd.wap.wmlscriptc",
  ["wmls"] = "text/vnd.wap.wmlscript",
  ["wml"] = "text/vnd.wap.wml",
  ["wm"] = "video/x-ms-wm",
  ["wmv"] = "video/x-ms-wmv",
  ["wmx"] = "video/x-ms-wmx",
  ["wmz"] = "application/x-ms-wmz",
  ["woff2"] = "font/woff2",
  ["woff"] = "font/woff",
  ["wpd"] = "application/vnd.wordperfect",
  ["wpl"] = "application/vnd.ms-wpl",
  ["wps"] = "application/vnd.ms-works",
  ["wqd"] = "application/vnd.wqd",
  ["wri"] = "application/x-mswrite",
  ["wrl"] = "model/vrml",
  ["wsdl"] = "application/wsdl+xml",
  ["wspolicy"] = "application/wspolicy+xml",
  ["wtb"] = "application/vnd.webturbo",
  ["wvx"] = "video/x-ms-wvx",
  ["x32"] = "application/x-authorware-bin",
  ["x3db"] = "model/x3d+binary",
  ["x3dbz"] = "model/x3d+binary",
  ["x3d"] = "model/x3d+xml",
  ["x3dv"] = "model/x3d+vrml",
  ["x3dvz"] = "model/x3d+vrml",
  ["x3dz"] = "model/x3d+xml",
  ["xaml"] = "application/xaml+xml",
  ["xap"] = "application/x-silverlight-app",
  ["xar"] = "application/vnd.xara",
  ["xbap"] = "application/x-ms-xbap",
  ["xbd"] = "application/vnd.fujixerox.docuworks.binder",
  ["xbm"] = "image/x-xbitmap",
  ["xdf"] = "application/xcap-diff+xml",
  ["xdm"] = "application/vnd.syncml.dm+xml",
  ["xdp"] = "application/vnd.adobe.xdp+xml",
  ["xdssc"] = "application/dssc+xml",
  ["xdw"] = "application/vnd.fujixerox.docuworks",
  ["xenc"] = "application/xenc+xml",
  ["xer"] = "application/patch-ops-error+xml",
  ["xfdf"] = "application/vnd.adobe.xfdf",
  ["xfdl"] = "application/vnd.xfdl",
  ["xht"] = "application/xhtml+xml",
  ["xhtml"] = "application/xhtml+xml",
  ["xhvml"] = "application/xv+xml",
  ["xif"] = "image/vnd.xiff",
  ["xla"] = "application/vnd.ms-excel",
  ["xlam"] = "application/vnd.ms-excel.addin.macroenabled.12",
  ["xlc"] = "application/vnd.ms-excel",
  ["xlf"] = "application/x-xliff+xml",
  ["xlm"] = "application/vnd.ms-excel",
  ["xls"] = "application/vnd.ms-excel",
  ["xlsb"] = "application/vnd.ms-excel.sheet.binary.macroenabled.12",
  ["xlsm"] = "application/vnd.ms-excel.sheet.macroenabled.12",
  ["xlsx"] = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
  ["xlt"] = "application/vnd.ms-excel",
  ["xltm"] = "application/vnd.ms-excel.template.macroenabled.12",
  ["xltx"] = "application/vnd.openxmlformats-officedocument.spreadsheetml.template",
  ["xlw"] = "application/vnd.ms-excel",
  ["xm"] = "audio/xm",
  ["xml"] = "application/xml",
  ["xo"] = "application/vnd.olpc-sugar",
  ["xop"] = "application/xop+xml",
  ["xpi"] = "application/x-xpinstall",
  ["xpl"] = "application/xproc+xml",
  ["xpm"] = "image/x-xpixmap",
  ["xpr"] = "application/vnd.is-xpr",
  ["xps"] = "application/vnd.ms-xpsdocument",
  ["xpw"] = "application/vnd.intercon.formnet",
  ["xpx"] = "application/vnd.intercon.formnet",
  ["xsl"] = "application/xml",
  ["xslt"] = "application/xslt+xml",
  ["xsm"] = "application/vnd.syncml+xml",
  ["xspf"] = "application/xspf+xml",
  ["xul"] = "application/vnd.mozilla.xul+xml",
  ["xvm"] = "application/xv+xml",
  ["xvml"] = "application/xv+xml",
  ["xwd"] = "image/x-xwindowdump",
  ["xyz"] = "chemical/x-xyz",
  ["xz"] = "application/x-xz",
  ["yang"] = "application/yang",
  ["yin"] = "application/yin+xml",
  ["z1"] = "application/x-zmachine",
  ["z2"] = "application/x-zmachine",
  ["z3"] = "application/x-zmachine",
  ["z4"] = "application/x-zmachine",
  ["z5"] = "application/x-zmachine",
  ["z6"] = "application/x-zmachine",
  ["z7"] = "application/x-zmachine",
  ["z8"] = "application/x-zmachine",
  ["zaz"] = "application/vnd.zzazz.deck+xml",
  ["zip"] = "application/zip",
  ["zir"] = "application/vnd.zul",
  ["zirz"] = "application/vnd.zul",
  ["zmm"] = "application/vnd.handheld-entertainment+xml",
}

--- Returns the MIME type for a given file extension.
--- @param ext string The file extension.
--- @param fallback string? The MIME type to return if the extension is not found.
--- @return string mime The MIME type.
function M.from_extension(ext, fallback)
  if fallback == nil then
    fallback = "application/octet-stream"
  end

  return MIME_EXT_MAPPINGS[ext] or fallback
end

return M

-- vim:ts=2:sts=2:sw=2:et:ai:si:sta:
