mimemagic 0.3.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of mimemagic might be problematic. Click here for more details.

checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 56a9dc363660e54db6b041560cf2ffb2cf2ff79f
4
+ data.tar.gz: 2f56e7da7760f7976476e004704a5e1b8a6fbd71
5
+ SHA512:
6
+ metadata.gz: 6f95d284e2b8fd475eadbc5abbf3dd44d8f9855e9c655f6c60608b785edb63d99792fb0bc2310f5bb21aeaa40b39030b2a6a48f46054c2aaf971b8d591273a83
7
+ data.tar.gz: b789c582cabb2ab78db5912fef9fba85ffa4f7c8a40d3d0b36e944d2248028fa3da480f38d025dadcd714c9a04f87fb664c8ce1cc652839be84ba80dbe769041
data/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ *.swp
2
+ *.gem
3
+ Gemfile.lock
4
+ .bundle
5
+ .yardoc
data/.travis.yml ADDED
@@ -0,0 +1,11 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
4
+ - 2.0.0
5
+ - 2.1.0
6
+ - ruby-head
7
+ - jruby-19mode
8
+ - rbx
9
+ matrix:
10
+ allow_failures:
11
+ - rvm: ruby-head
data/.yardopts ADDED
@@ -0,0 +1,2 @@
1
+ --no-private
2
+ - README.md
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org/'
2
+ gemspec
3
+
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License
2
+
3
+ Copyright (c) 2011 Daniel Mendler
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,46 @@
1
+ MimeMagic is a library to detect the mime type of a file by extension or by content. It uses the mime database
2
+ provided by freedesktop.org (see http://freedesktop.org/wiki/Software/shared-mime-info/).
3
+
4
+ [![Build Status](https://secure.travis-ci.org/minad/mimemagic.png?branch=master)](http://travis-ci.org/minad/mimemagic) [![Code Climate](https://codeclimate.com/github/minad/mimemagic.png)](https://codeclimate.com/github/minad/mimemagic)
5
+ [![Gittip donate button](http://img.shields.io/gittip/bevry.png)](https://www.gittip.com/min4d/ "Donate weekly to this project using Gittip")
6
+ [![Flattr this git repo](http://api.flattr.com/button/flattr-badge-large.png)](https://flattr.com/submit/auto?user_id=min4d&url=https://github.com/minad/mimemagic&title=MimeMagic&language=&tags=github&category=software)
7
+
8
+ Usage
9
+ =====
10
+
11
+ require 'mimemagic'
12
+ MimeMagic.by_extension('html').text?
13
+ MimeMagic.by_extension('.html').child_of? 'text/plain'
14
+ MimeMagic.by_path('filename.txt')
15
+ MimeMagic.by_magic(File.open('test.html'))
16
+ # etc...
17
+
18
+ Extra magic overlay
19
+ =====
20
+
21
+ Microsoft Office 2007+ formats (xlsx, docx, and pptx) are not supported by the mime database at freedesktop.org. These files are all zipped collections of xml files and will be detected as "application/zip". Mimemagic comes with extra magic you can overlay on top of the defaults to correctly detect these file types. Enable it like this:
22
+
23
+ require 'mimemagic'
24
+ require 'mimemagic/overlay'
25
+ MimeMagic.by_magic(File.open('test.xlsx'))
26
+
27
+ You can add your own magic with `MimeMagic.add`. See `lib/mimemagic/overlay.rb`.
28
+
29
+ API
30
+ ===
31
+
32
+ http://rdoc.info/github/minad/mimemagic/frames/file/README.md
33
+
34
+ Tests
35
+ =====
36
+
37
+ ```
38
+ bundle install
39
+
40
+ rake test
41
+ ```
42
+
43
+ Authors
44
+ =======
45
+
46
+ Daniel Mendler
data/Rakefile ADDED
@@ -0,0 +1,13 @@
1
+ task :default => %w(test)
2
+
3
+ desc 'Run tests with bacon'
4
+ task :test => FileList['test/*_test.rb'] do |t|
5
+ sh "bacon -q -Ilib:test #{t.prerequisites.join(' ')}"
6
+ end
7
+
8
+ desc 'Generate mime tables'
9
+ task :tables => 'lib/mimemagic/tables.rb'
10
+ file 'lib/mimemagic/tables.rb' => FileList['script/freedesktop.org.xml'] do |f|
11
+ sh "script/generate-mime.rb #{f.prerequisites.join(' ')} > #{f.name}"
12
+ end
13
+
data/lib/mimemagic.rb ADDED
@@ -0,0 +1,141 @@
1
+ require 'mimemagic/tables'
2
+ require 'mimemagic/version'
3
+
4
+ # Mime type detection
5
+ class MimeMagic
6
+ attr_reader :type, :mediatype, :subtype
7
+
8
+ # Mime type by type string
9
+ def initialize(type)
10
+ @type = type
11
+ @mediatype, @subtype = type.split('/', 2)
12
+ end
13
+
14
+ # Add custom mime type. Arguments:
15
+ # * <i>type</i>: Mime type
16
+ # * <i>options</i>: Options hash
17
+ #
18
+ # Option keys:
19
+ # * <i>:extensions</i>: String list or single string of file extensions
20
+ # * <i>:parents</i>: String list or single string of parent mime types
21
+ # * <i>:magic</i>: Mime magic specification
22
+ # * <i>:comment</i>: Comment string
23
+ def self.add(type, options)
24
+ extensions = [options[:extensions]].flatten.compact
25
+ TYPES[type] = [extensions,
26
+ [options[:parents]].flatten.compact,
27
+ options[:comment]]
28
+ extensions.each {|ext| EXTENSIONS[ext] = type }
29
+ MAGIC.unshift [type, options[:magic]] if options[:magic]
30
+ end
31
+
32
+ # Removes a mime type from the dictionary. You might want to do this if
33
+ # you're seeing impossible conflicts (for instance, application/x-gmc-link).
34
+ # * <i>type</i>: The mime type to remove. All associated extensions and magic are removed too.
35
+ def self.remove(type)
36
+ EXTENSIONS.delete_if {|ext, t| t == type }
37
+ MAGIC.delete_if {|t, m| t == type }
38
+ TYPES.delete(type)
39
+ end
40
+
41
+ # Returns true if type is a text format
42
+ def text?; mediatype == 'text' || child_of?('text/plain'); end
43
+
44
+ # Mediatype shortcuts
45
+ def image?; mediatype == 'image'; end
46
+ def audio?; mediatype == 'audio'; end
47
+ def video?; mediatype == 'video'; end
48
+
49
+ # Returns true if type is child of parent type
50
+ def child_of?(parent)
51
+ MimeMagic.child?(type, parent)
52
+ end
53
+
54
+ # Get string list of file extensions
55
+ def extensions
56
+ TYPES.key?(type) ? TYPES[type][0] : []
57
+ end
58
+
59
+ # Get mime comment
60
+ def comment
61
+ (TYPES.key?(type) ? TYPES[type][2] : nil).to_s
62
+ end
63
+
64
+ # Lookup mime type by file extension
65
+ def self.by_extension(ext)
66
+ ext = ext.to_s.downcase
67
+ mime = ext[0..0] == '.' ? EXTENSIONS[ext[1..-1]] : EXTENSIONS[ext]
68
+ mime && new(mime)
69
+ end
70
+
71
+ # Lookup mime type by filename
72
+ def self.by_path(path)
73
+ by_extension(File.extname(path))
74
+ end
75
+
76
+ # Lookup mime type by magic content analysis.
77
+ # This is a slow operation.
78
+ def self.by_magic(io)
79
+ mime =
80
+ unless io.respond_to?(:seek) && io.respond_to?(:read)
81
+ str = io.respond_to?(:read) ? io.read : io.to_s
82
+ str = str.force_encoding(Encoding::BINARY) if str.respond_to? :force_encoding
83
+ MAGIC.find {|type, matches| magic_match_str(str, matches) }
84
+ else
85
+ io.binmode
86
+ io.set_encoding(Encoding::BINARY) if io.respond_to?(:set_encoding)
87
+ MAGIC.find {|type, matches| magic_match_io(io, matches) }
88
+ end
89
+ mime && new(mime[0])
90
+ end
91
+
92
+ # Return type as string
93
+ def to_s
94
+ type
95
+ end
96
+
97
+ # Allow comparison with string
98
+ def eql?(other)
99
+ type == other.to_s
100
+ end
101
+
102
+ def hash
103
+ type.hash
104
+ end
105
+
106
+ alias == eql?
107
+
108
+ def self.child?(child, parent)
109
+ child == parent || TYPES.key?(child) && TYPES[child][1].any? {|p| child?(p, parent) }
110
+ end
111
+
112
+ def self.magic_match_io(io, matches)
113
+ matches.any? do |offset, value, children|
114
+ match =
115
+ if Range === offset
116
+ io.seek(offset.begin)
117
+ x = io.read(offset.end - offset.begin + value.bytesize)
118
+ x && x.include?(value)
119
+ else
120
+ io.seek(offset)
121
+ io.read(value.bytesize) == value
122
+ end
123
+ match && (!children || magic_match_io(io, children))
124
+ end
125
+ end
126
+
127
+ def self.magic_match_str(str, matches)
128
+ matches.any? do |offset, value, children|
129
+ match =
130
+ if Range === offset
131
+ x = str[offset.begin, offset.end - offset.begin + value.bytesize]
132
+ x && x.include?(value)
133
+ else
134
+ str[offset, value.bytesize] == value
135
+ end
136
+ match && (!children || magic_match_str(str, children))
137
+ end
138
+ end
139
+
140
+ private_class_method :magic_match_io, :magic_match_str
141
+ end
@@ -0,0 +1,7 @@
1
+ # Extra magic
2
+
3
+ [['application/vnd.openxmlformats-officedocument.presentationml.presentation', [[0..2000, 'ppt/']]],
4
+ ['application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', [[0..2000, 'xl/']]],
5
+ ['application/vnd.openxmlformats-officedocument.wordprocessingml.document', [[0..2000, 'word/']]]].each do |magic|
6
+ MimeMagic.add(magic[0], magic: magic[1])
7
+ end
@@ -0,0 +1,1825 @@
1
+ # -*- coding: binary -*-
2
+ # Generated from freedesktop.org.xml
3
+ class MimeMagic
4
+ # @private
5
+ # :nodoc:
6
+ EXTENSIONS = {
7
+ '123' => 'application/vnd.lotus-1-2-3',
8
+ '3ds' => 'image/x-3ds',
9
+ '3g2' => 'video/3gpp2',
10
+ '3ga' => 'video/3gpp',
11
+ '3gp' => 'video/3gpp',
12
+ '3gp2' => 'video/3gpp2',
13
+ '3gpp' => 'video/3gpp',
14
+ '3gpp2' => 'video/3gpp2',
15
+ '602' => 'application/x-t602',
16
+ '669' => 'audio/x-mod',
17
+ '7z' => 'application/x-7z-compressed',
18
+ 'a' => 'application/x-archive',
19
+ 'aac' => 'audio/aac',
20
+ 'abw' => 'application/x-abiword',
21
+ 'abw.crashed' => 'application/x-abiword',
22
+ 'abw.gz' => 'application/x-abiword',
23
+ 'ac3' => 'audio/ac3',
24
+ 'ace' => 'application/x-ace',
25
+ 'adb' => 'text/x-adasrc',
26
+ 'ads' => 'text/x-adasrc',
27
+ 'afm' => 'application/x-font-afm',
28
+ 'ag' => 'image/x-applix-graphics',
29
+ 'ai' => 'application/illustrator',
30
+ 'aif' => 'audio/x-aiff',
31
+ 'aifc' => 'audio/x-aifc',
32
+ 'aiff' => 'audio/x-aiff',
33
+ 'aiffc' => 'audio/x-aifc',
34
+ 'al' => 'application/x-perl',
35
+ 'alz' => 'application/x-alz',
36
+ 'amr' => 'audio/AMR',
37
+ 'amz' => 'audio/x-amzxml',
38
+ 'ani' => 'application/x-navi-animation',
39
+ 'anx' => 'application/annodex',
40
+ 'ape' => 'audio/x-ape',
41
+ 'apk' => 'application/vnd.android.package-archive',
42
+ 'ar' => 'application/x-archive',
43
+ 'arj' => 'application/x-arj',
44
+ 'arw' => 'image/x-sony-arw',
45
+ 'as' => 'application/x-applix-spreadsheet',
46
+ 'asc' => 'application/pgp-encrypted',
47
+ 'asf' => 'application/vnd.ms-asf',
48
+ 'asp' => 'application/x-asp',
49
+ 'ass' => 'text/x-ssa',
50
+ 'asx' => 'audio/x-ms-asx',
51
+ 'atom' => 'application/atom+xml',
52
+ 'au' => 'audio/basic',
53
+ 'avf' => 'video/x-msvideo',
54
+ 'avi' => 'video/x-msvideo',
55
+ 'aw' => 'application/x-applix-word',
56
+ 'awb' => 'audio/AMR-WB',
57
+ 'awk' => 'application/x-awk',
58
+ 'axa' => 'audio/annodex',
59
+ 'axv' => 'video/annodex',
60
+ 'bak' => 'application/x-trash',
61
+ 'bcpio' => 'application/x-bcpio',
62
+ 'bdf' => 'application/x-font-bdf',
63
+ 'bdm' => 'video/mp2t',
64
+ 'bdmv' => 'video/mp2t',
65
+ 'bib' => 'text/x-bibtex',
66
+ 'bin' => 'application/octet-stream',
67
+ 'blend' => 'application/x-blender',
68
+ 'blender' => 'application/x-blender',
69
+ 'bmp' => 'image/bmp',
70
+ 'bz' => 'application/x-bzip',
71
+ 'bz2' => 'application/x-bzip',
72
+ 'c' => 'text/x-c++src',
73
+ 'c++' => 'text/x-c++src',
74
+ 'cab' => 'application/vnd.ms-cab-compressed',
75
+ 'cap' => 'application/vnd.tcpdump.pcap',
76
+ 'cb7' => 'application/x-cb7',
77
+ 'cbl' => 'text/x-cobol',
78
+ 'cbr' => 'application/x-cbr',
79
+ 'cbt' => 'application/x-cbt',
80
+ 'cbz' => 'application/x-cbz',
81
+ 'cc' => 'text/x-c++src',
82
+ 'ccmx' => 'application/x-ccmx',
83
+ 'cdf' => 'application/x-netcdf',
84
+ 'cdr' => 'application/vnd.corel-draw',
85
+ 'cer' => 'application/pkix-cert',
86
+ 'cert' => 'application/x-x509-ca-cert',
87
+ 'cgm' => 'image/cgm',
88
+ 'chm' => 'application/vnd.ms-htmlhelp',
89
+ 'chrt' => 'application/x-kchart',
90
+ 'class' => 'application/x-java',
91
+ 'clpi' => 'video/mp2t',
92
+ 'cls' => 'text/x-tex',
93
+ 'cmake' => 'text/x-cmake',
94
+ 'cob' => 'text/x-cobol',
95
+ 'cpi' => 'video/mp2t',
96
+ 'cpio' => 'application/x-cpio',
97
+ 'cpio.gz' => 'application/x-cpio-compressed',
98
+ 'cpp' => 'text/x-c++src',
99
+ 'cr2' => 'image/x-canon-cr2',
100
+ 'crdownload' => 'application/x-partial-download',
101
+ 'crl' => 'application/pkix-crl',
102
+ 'crt' => 'application/x-x509-ca-cert',
103
+ 'crw' => 'image/x-canon-crw',
104
+ 'cs' => 'text/x-csharp',
105
+ 'csh' => 'application/x-csh',
106
+ 'css' => 'text/css',
107
+ 'csv' => 'text/csv',
108
+ 'cue' => 'application/x-cue',
109
+ 'cur' => 'image/x-win-bitmap',
110
+ 'cxx' => 'text/x-c++src',
111
+ 'd' => 'text/x-dsrc',
112
+ 'dar' => 'application/x-dar',
113
+ 'dbf' => 'application/x-dbf',
114
+ 'dbk' => 'application/x-docbook+xml',
115
+ 'dc' => 'application/x-dc-rom',
116
+ 'dcl' => 'text/x-dcl',
117
+ 'dcm' => 'application/dicom',
118
+ 'dcr' => 'image/x-kodak-dcr',
119
+ 'dds' => 'image/x-dds',
120
+ 'deb' => 'application/vnd.debian.binary-package',
121
+ 'der' => 'application/x-x509-ca-cert',
122
+ 'desktop' => 'application/x-desktop',
123
+ 'di' => 'text/x-dsrc',
124
+ 'dia' => 'application/x-dia-diagram',
125
+ 'diff' => 'text/x-patch',
126
+ 'divx' => 'video/x-msvideo',
127
+ 'djv' => 'image/vnd.djvu',
128
+ 'djvu' => 'image/vnd.djvu',
129
+ 'dmg' => 'application/x-apple-diskimage',
130
+ 'dmp' => 'application/vnd.tcpdump.pcap',
131
+ 'dng' => 'image/x-adobe-dng',
132
+ 'doc' => 'application/msword',
133
+ 'docbook' => 'application/x-docbook+xml',
134
+ 'docm' => 'application/vnd.ms-word.document.macroEnabled.12',
135
+ 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',
136
+ 'dot' => 'application/msword-template',
137
+ 'dotm' => 'application/vnd.ms-word.template.macroEnabled.12',
138
+ 'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template',
139
+ 'dsl' => 'text/x-dsl',
140
+ 'dtd' => 'application/xml-dtd',
141
+ 'dts' => 'audio/vnd.dts',
142
+ 'dtshd' => 'audio/vnd.dts.hd',
143
+ 'dtx' => 'text/x-tex',
144
+ 'dv' => 'video/dv',
145
+ 'dvi' => 'application/x-dvi',
146
+ 'dvi.bz2' => 'application/x-bzdvi',
147
+ 'dvi.gz' => 'application/x-gzdvi',
148
+ 'dwg' => 'image/vnd.dwg',
149
+ 'dxf' => 'image/vnd.dxf',
150
+ 'e' => 'text/x-eiffel',
151
+ 'egon' => 'application/x-egon',
152
+ 'eif' => 'text/x-eiffel',
153
+ 'el' => 'text/x-emacs-lisp',
154
+ 'emf' => 'image/x-emf',
155
+ 'eml' => 'message/rfc822',
156
+ 'emp' => 'application/vnd.emusic-emusic_package',
157
+ 'ent' => 'application/xml-external-parsed-entity',
158
+ 'eps' => 'image/x-eps',
159
+ 'eps.bz2' => 'image/x-bzeps',
160
+ 'eps.gz' => 'image/x-gzeps',
161
+ 'epsf' => 'image/x-eps',
162
+ 'epsf.bz2' => 'image/x-bzeps',
163
+ 'epsf.gz' => 'image/x-gzeps',
164
+ 'epsi' => 'image/x-eps',
165
+ 'epsi.bz2' => 'image/x-bzeps',
166
+ 'epsi.gz' => 'image/x-gzeps',
167
+ 'epub' => 'application/epub+zip',
168
+ 'erl' => 'text/x-erlang',
169
+ 'es' => 'application/ecmascript',
170
+ 'etheme' => 'application/x-e-theme',
171
+ 'etx' => 'text/x-setext',
172
+ 'exe' => 'application/x-ms-dos-executable',
173
+ 'exr' => 'image/x-exr',
174
+ 'ez' => 'application/andrew-inset',
175
+ 'f' => 'text/x-fortran',
176
+ 'f4a' => 'audio/mp4',
177
+ 'f4b' => 'audio/x-m4b',
178
+ 'f4v' => 'video/mp4',
179
+ 'f90' => 'text/x-fortran',
180
+ 'f95' => 'text/x-fortran',
181
+ 'fb2' => 'application/x-fictionbook+xml',
182
+ 'fb2.zip' => 'application/x-zip-compressed-fb2',
183
+ 'fig' => 'image/x-xfig',
184
+ 'fits' => 'image/fits',
185
+ 'fl' => 'application/x-fluid',
186
+ 'flac' => 'audio/flac',
187
+ 'flc' => 'video/x-flic',
188
+ 'fli' => 'video/x-flic',
189
+ 'flv' => 'video/x-flv',
190
+ 'flw' => 'application/x-kivio',
191
+ 'fo' => 'text/x-xslfo',
192
+ 'fodg' => 'application/vnd.oasis.opendocument.graphics-flat-xml',
193
+ 'fodp' => 'application/vnd.oasis.opendocument.presentation-flat-xml',
194
+ 'fods' => 'application/vnd.oasis.opendocument.spreadsheet-flat-xml',
195
+ 'fodt' => 'application/vnd.oasis.opendocument.text-flat-xml',
196
+ 'for' => 'text/x-fortran',
197
+ 'fxm' => 'video/x-javafx',
198
+ 'g3' => 'image/fax-g3',
199
+ 'gb' => 'application/x-gameboy-rom',
200
+ 'gba' => 'application/x-gba-rom',
201
+ 'gcrd' => 'text/vcard',
202
+ 'ged' => 'application/x-gedcom',
203
+ 'gedcom' => 'application/x-gedcom',
204
+ 'gem' => 'application/x-tar',
205
+ 'gen' => 'application/x-genesis-rom',
206
+ 'gf' => 'application/x-tex-gf',
207
+ 'gg' => 'application/x-sms-rom',
208
+ 'gif' => 'image/gif',
209
+ 'glade' => 'application/x-glade',
210
+ 'gml' => 'application/gml+xml',
211
+ 'gmo' => 'application/x-gettext-translation',
212
+ 'gnc' => 'application/x-gnucash',
213
+ 'gnd' => 'application/gnunet-directory',
214
+ 'gnucash' => 'application/x-gnucash',
215
+ 'gnumeric' => 'application/x-gnumeric',
216
+ 'gnuplot' => 'application/x-gnuplot',
217
+ 'go' => 'text/x-go',
218
+ 'gp' => 'application/x-gnuplot',
219
+ 'gpg' => 'application/pgp-encrypted',
220
+ 'gplt' => 'application/x-gnuplot',
221
+ 'gra' => 'application/x-graphite',
222
+ 'gs' => 'text/x-genie',
223
+ 'gsf' => 'application/x-font-type1',
224
+ 'gsm' => 'audio/x-gsm',
225
+ 'gtar' => 'application/x-tar',
226
+ 'gv' => 'text/vnd.graphviz',
227
+ 'gvp' => 'text/x-google-video-pointer',
228
+ 'gz' => 'application/gzip',
229
+ 'h' => 'text/x-chdr',
230
+ 'h++' => 'text/x-c++hdr',
231
+ 'h4' => 'application/x-hdf',
232
+ 'h5' => 'application/x-hdf',
233
+ 'hdf' => 'application/x-hdf',
234
+ 'hdf4' => 'application/x-hdf',
235
+ 'hdf5' => 'application/x-hdf',
236
+ 'hh' => 'text/x-c++hdr',
237
+ 'hlp' => 'application/winhlp',
238
+ 'hp' => 'text/x-c++hdr',
239
+ 'hpgl' => 'application/vnd.hp-hpgl',
240
+ 'hpp' => 'text/x-c++hdr',
241
+ 'hs' => 'text/x-haskell',
242
+ 'htm' => 'text/html',
243
+ 'html' => 'text/html',
244
+ 'hwp' => 'application/x-hwp',
245
+ 'hwt' => 'application/x-hwt',
246
+ 'hxx' => 'text/x-c++hdr',
247
+ 'ica' => 'application/x-ica',
248
+ 'icb' => 'image/x-tga',
249
+ 'icc' => 'application/vnd.iccprofile',
250
+ 'icm' => 'application/vnd.iccprofile',
251
+ 'icns' => 'image/x-icns',
252
+ 'ico' => 'image/vnd.microsoft.icon',
253
+ 'ics' => 'text/calendar',
254
+ 'idl' => 'text/x-idl',
255
+ 'ief' => 'image/ief',
256
+ 'iff' => 'image/x-ilbm',
257
+ 'ilbm' => 'image/x-ilbm',
258
+ 'ime' => 'text/x-iMelody',
259
+ 'img' => 'application/x-raw-disk-image',
260
+ 'img.xz' => 'application/x-raw-disk-image-xz-compressed',
261
+ 'imy' => 'text/x-iMelody',
262
+ 'ins' => 'text/x-tex',
263
+ 'iptables' => 'text/x-iptables',
264
+ 'iso' => 'application/x-cd-image',
265
+ 'iso9660' => 'application/x-cd-image',
266
+ 'it' => 'audio/x-it',
267
+ 'it87' => 'application/x-it87',
268
+ 'jad' => 'text/vnd.sun.j2me.app-descriptor',
269
+ 'jar' => 'application/x-java-archive',
270
+ 'java' => 'text/x-java',
271
+ 'jceks' => 'application/x-java-jce-keystore',
272
+ 'jks' => 'application/x-java-keystore',
273
+ 'jng' => 'image/x-jng',
274
+ 'jnlp' => 'application/x-java-jnlp-file',
275
+ 'jp2' => 'image/jp2',
276
+ 'jpe' => 'image/jpeg',
277
+ 'jpeg' => 'image/jpeg',
278
+ 'jpf' => 'image/jp2',
279
+ 'jpg' => 'image/jpeg',
280
+ 'jpr' => 'application/x-jbuilder-project',
281
+ 'jpx' => 'application/x-jbuilder-project',
282
+ 'js' => 'application/javascript',
283
+ 'jsm' => 'application/javascript',
284
+ 'json' => 'application/json',
285
+ 'k25' => 'image/x-kodak-k25',
286
+ 'kar' => 'audio/midi',
287
+ 'karbon' => 'application/x-karbon',
288
+ 'kdc' => 'image/x-kodak-kdc',
289
+ 'kdelnk' => 'application/x-desktop',
290
+ 'kexi' => 'application/x-kexiproject-sqlite2',
291
+ 'kexic' => 'application/x-kexi-connectiondata',
292
+ 'kexis' => 'application/x-kexiproject-shortcut',
293
+ 'key' => 'application/x-iwork-keynote-sffkey',
294
+ 'kfo' => 'application/x-kformula',
295
+ 'kil' => 'application/x-killustrator',
296
+ 'kino' => 'application/smil+xml',
297
+ 'kml' => 'application/vnd.google-earth.kml+xml',
298
+ 'kmz' => 'application/vnd.google-earth.kmz',
299
+ 'kon' => 'application/x-kontour',
300
+ 'kpm' => 'application/x-kpovmodeler',
301
+ 'kpr' => 'application/x-kpresenter',
302
+ 'kpt' => 'application/x-kpresenter',
303
+ 'kra' => 'application/x-krita',
304
+ 'ks' => 'application/x-java-keystore',
305
+ 'ksp' => 'application/x-kspread',
306
+ 'kud' => 'application/x-kugar',
307
+ 'kwd' => 'application/x-kword',
308
+ 'kwt' => 'application/x-kword',
309
+ 'la' => 'application/x-shared-library-la',
310
+ 'latex' => 'text/x-tex',
311
+ 'lbm' => 'image/x-ilbm',
312
+ 'ldif' => 'text/x-ldif',
313
+ 'lha' => 'application/x-lha',
314
+ 'lhs' => 'text/x-literate-haskell',
315
+ 'lhz' => 'application/x-lhz',
316
+ 'log' => 'text/x-log',
317
+ 'lrv' => 'video/mp4',
318
+ 'lrz' => 'application/x-lrzip',
319
+ 'ltx' => 'text/x-tex',
320
+ 'lua' => 'text/x-lua',
321
+ 'lwo' => 'image/x-lwo',
322
+ 'lwob' => 'image/x-lwo',
323
+ 'lwp' => 'application/vnd.lotus-wordpro',
324
+ 'lws' => 'image/x-lws',
325
+ 'ly' => 'text/x-lilypond',
326
+ 'lyx' => 'application/x-lyx',
327
+ 'lz' => 'application/x-lzip',
328
+ 'lz4' => 'application/x-lz4',
329
+ 'lzh' => 'application/x-lha',
330
+ 'lzma' => 'application/x-lzma',
331
+ 'lzo' => 'application/x-lzop',
332
+ 'm' => 'text/x-objcsrc',
333
+ 'm15' => 'audio/x-mod',
334
+ 'm1u' => 'video/vnd.mpegurl',
335
+ 'm2t' => 'video/mp2t',
336
+ 'm2ts' => 'video/mp2t',
337
+ 'm3u' => 'audio/x-mpegurl',
338
+ 'm3u8' => 'audio/x-mpegurl',
339
+ 'm4' => 'application/x-m4',
340
+ 'm4a' => 'audio/mp4',
341
+ 'm4b' => 'audio/x-m4b',
342
+ 'm4u' => 'video/vnd.mpegurl',
343
+ 'm4v' => 'video/mp4',
344
+ 'mab' => 'application/x-markaby',
345
+ 'mak' => 'text/x-makefile',
346
+ 'man' => 'application/x-troff-man',
347
+ 'manifest' => 'text/cache-manifest',
348
+ 'markdown' => 'text/markdown',
349
+ 'mbox' => 'application/mbox',
350
+ 'md' => 'text/markdown',
351
+ 'mdb' => 'application/vnd.ms-access',
352
+ 'mdi' => 'image/vnd.ms-modi',
353
+ 'me' => 'text/x-troff-me',
354
+ 'med' => 'audio/x-mod',
355
+ 'meta4' => 'application/metalink4+xml',
356
+ 'metalink' => 'application/metalink+xml',
357
+ 'mgp' => 'application/x-magicpoint',
358
+ 'mht' => 'application/x-mimearchive',
359
+ 'mhtml' => 'application/x-mimearchive',
360
+ 'mid' => 'audio/midi',
361
+ 'midi' => 'audio/midi',
362
+ 'mif' => 'application/x-mif',
363
+ 'minipsf' => 'audio/x-minipsf',
364
+ 'mk' => 'text/x-makefile',
365
+ 'mk3d' => 'video/x-matroska-3d',
366
+ 'mka' => 'audio/x-matroska',
367
+ 'mkd' => 'text/markdown',
368
+ 'mkv' => 'video/x-matroska',
369
+ 'ml' => 'text/x-ocaml',
370
+ 'mli' => 'text/x-ocaml',
371
+ 'mm' => 'text/x-troff-mm',
372
+ 'mmf' => 'application/x-smaf',
373
+ 'mml' => 'application/mathml+xml',
374
+ 'mng' => 'video/x-mng',
375
+ 'mo' => 'application/x-gettext-translation',
376
+ 'mo3' => 'audio/x-mo3',
377
+ 'mobi' => 'application/x-mobipocket-ebook',
378
+ 'moc' => 'text/x-moc',
379
+ 'mod' => 'audio/x-mod',
380
+ 'mof' => 'text/x-mof',
381
+ 'moov' => 'video/quicktime',
382
+ 'mov' => 'video/quicktime',
383
+ 'movie' => 'video/x-sgi-movie',
384
+ 'mp+' => 'audio/x-musepack',
385
+ 'mp2' => 'audio/mp2',
386
+ 'mp3' => 'audio/mpeg',
387
+ 'mp4' => 'video/mp4',
388
+ 'mpc' => 'audio/x-musepack',
389
+ 'mpe' => 'video/mpeg',
390
+ 'mpeg' => 'video/mpeg',
391
+ 'mpg' => 'video/mpeg',
392
+ 'mpga' => 'audio/mpeg',
393
+ 'mpl' => 'video/mp2t',
394
+ 'mpls' => 'video/mp2t',
395
+ 'mpp' => 'audio/x-musepack',
396
+ 'mrl' => 'text/x-mrml',
397
+ 'mrml' => 'text/x-mrml',
398
+ 'mrw' => 'image/x-minolta-mrw',
399
+ 'ms' => 'text/x-troff-ms',
400
+ 'msi' => 'application/x-msi',
401
+ 'msod' => 'image/x-msod',
402
+ 'msx' => 'application/x-msx-rom',
403
+ 'mtm' => 'audio/x-mod',
404
+ 'mts' => 'video/mp2t',
405
+ 'mup' => 'text/x-mup',
406
+ 'mxf' => 'application/mxf',
407
+ 'mxu' => 'video/vnd.mpegurl',
408
+ 'n64' => 'application/x-n64-rom',
409
+ 'nb' => 'application/mathematica',
410
+ 'nc' => 'application/x-netcdf',
411
+ 'nds' => 'application/x-nintendo-ds-rom',
412
+ 'nef' => 'image/x-nikon-nef',
413
+ 'nes' => 'application/x-nes-rom',
414
+ 'nfo' => 'text/x-nfo',
415
+ 'not' => 'text/x-mup',
416
+ 'nsc' => 'application/x-netshow-channel',
417
+ 'nsv' => 'video/x-nsv',
418
+ 'nzb' => 'application/x-nzb',
419
+ 'o' => 'application/x-object',
420
+ 'obj' => 'application/x-tgif',
421
+ 'ocl' => 'text/x-ocl',
422
+ 'oda' => 'application/oda',
423
+ 'odb' => 'application/vnd.oasis.opendocument.database',
424
+ 'odc' => 'application/vnd.oasis.opendocument.chart',
425
+ 'odf' => 'application/vnd.oasis.opendocument.formula',
426
+ 'odg' => 'application/vnd.oasis.opendocument.graphics',
427
+ 'odi' => 'application/vnd.oasis.opendocument.image',
428
+ 'odm' => 'application/vnd.oasis.opendocument.text-master',
429
+ 'odp' => 'application/vnd.oasis.opendocument.presentation',
430
+ 'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
431
+ 'odt' => 'application/vnd.oasis.opendocument.text',
432
+ 'oga' => 'audio/ogg',
433
+ 'ogg' => 'audio/ogg',
434
+ 'ogm' => 'video/x-ogm+ogg',
435
+ 'ogv' => 'video/ogg',
436
+ 'ogx' => 'application/ogg',
437
+ 'old' => 'application/x-trash',
438
+ 'oleo' => 'application/x-oleo',
439
+ 'ooc' => 'text/x-ooc',
440
+ 'opml' => 'text/x-opml+xml',
441
+ 'oprc' => 'application/vnd.palm',
442
+ 'opus' => 'audio/ogg',
443
+ 'ora' => 'image/openraster',
444
+ 'orf' => 'image/x-olympus-orf',
445
+ 'otc' => 'application/vnd.oasis.opendocument.chart-template',
446
+ 'otf' => 'application/vnd.oasis.opendocument.formula-template',
447
+ 'otg' => 'application/vnd.oasis.opendocument.graphics-template',
448
+ 'oth' => 'application/vnd.oasis.opendocument.text-web',
449
+ 'otp' => 'application/vnd.oasis.opendocument.presentation-template',
450
+ 'ots' => 'application/vnd.oasis.opendocument.spreadsheet-template',
451
+ 'ott' => 'application/vnd.oasis.opendocument.text-template',
452
+ 'owl' => 'application/rdf+xml',
453
+ 'oxps' => 'application/oxps',
454
+ 'oxt' => 'application/vnd.openofficeorg.extension',
455
+ 'p' => 'text/x-pascal',
456
+ 'p10' => 'application/pkcs10',
457
+ 'p12' => 'application/x-pkcs12',
458
+ 'p65' => 'application/x-pagemaker',
459
+ 'p7b' => 'application/x-pkcs7-certificates',
460
+ 'p7c' => 'application/pkcs7-mime',
461
+ 'p7m' => 'application/pkcs7-mime',
462
+ 'p7s' => 'application/pkcs7-signature',
463
+ 'p8' => 'application/pkcs8',
464
+ 'pack' => 'application/x-java-pack200',
465
+ 'pak' => 'application/x-pak',
466
+ 'par2' => 'application/x-par2',
467
+ 'part' => 'application/x-partial-download',
468
+ 'pas' => 'text/x-pascal',
469
+ 'patch' => 'text/x-patch',
470
+ 'pbm' => 'image/x-portable-bitmap',
471
+ 'pcap' => 'application/vnd.tcpdump.pcap',
472
+ 'pcd' => 'image/x-photo-cd',
473
+ 'pce' => 'application/x-pc-engine-rom',
474
+ 'pcf' => 'application/x-font-pcf',
475
+ 'pcf.gz' => 'application/x-font-pcf',
476
+ 'pcf.z' => 'application/x-font-pcf',
477
+ 'pcl' => 'application/vnd.hp-pcl',
478
+ 'pct' => 'image/x-pict',
479
+ 'pcx' => 'image/x-pcx',
480
+ 'pdb' => 'application/x-aportisdoc',
481
+ 'pdc' => 'application/x-aportisdoc',
482
+ 'pdf' => 'application/pdf',
483
+ 'pdf.bz2' => 'application/x-bzpdf',
484
+ 'pdf.gz' => 'application/x-gzpdf',
485
+ 'pdf.xz' => 'application/x-xzpdf',
486
+ 'pef' => 'image/x-pentax-pef',
487
+ 'pem' => 'application/x-x509-ca-cert',
488
+ 'perl' => 'application/x-perl',
489
+ 'pfa' => 'application/x-font-type1',
490
+ 'pfb' => 'application/x-font-type1',
491
+ 'pfx' => 'application/x-pkcs12',
492
+ 'pgm' => 'image/x-portable-graymap',
493
+ 'pgn' => 'application/x-chess-pgn',
494
+ 'pgp' => 'application/pgp-encrypted',
495
+ 'php' => 'application/x-php',
496
+ 'php3' => 'application/x-php',
497
+ 'php4' => 'application/x-php',
498
+ 'php5' => 'application/x-php',
499
+ 'phps' => 'application/x-php',
500
+ 'pict' => 'image/x-pict',
501
+ 'pict1' => 'image/x-pict',
502
+ 'pict2' => 'image/x-pict',
503
+ 'pk' => 'application/x-tex-pk',
504
+ 'pkipath' => 'application/pkix-pkipath',
505
+ 'pkr' => 'application/pgp-keys',
506
+ 'pl' => 'application/x-perl',
507
+ 'pla' => 'audio/x-iriver-pla',
508
+ 'pln' => 'application/x-planperfect',
509
+ 'pls' => 'audio/x-scpls',
510
+ 'pm' => 'application/x-perl',
511
+ 'pm6' => 'application/x-pagemaker',
512
+ 'pmd' => 'application/x-pagemaker',
513
+ 'png' => 'image/png',
514
+ 'pnm' => 'image/x-portable-anymap',
515
+ 'pntg' => 'image/x-macpaint',
516
+ 'po' => 'text/x-gettext-translation',
517
+ 'pod' => 'application/x-perl',
518
+ 'por' => 'application/x-spss-por',
519
+ 'pot' => 'application/vnd.ms-powerpoint',
520
+ 'potm' => 'application/vnd.ms-powerpoint.template.macroEnabled.12',
521
+ 'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template',
522
+ 'ppam' => 'application/vnd.ms-powerpoint.addin.macroEnabled.12',
523
+ 'ppm' => 'image/x-portable-pixmap',
524
+ 'pps' => 'application/vnd.ms-powerpoint',
525
+ 'ppsm' => 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12',
526
+ 'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow',
527
+ 'ppt' => 'application/vnd.ms-powerpoint',
528
+ 'pptm' => 'application/vnd.ms-powerpoint.presentation.macroEnabled.12',
529
+ 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation',
530
+ 'ppz' => 'application/vnd.ms-powerpoint',
531
+ 'pqa' => 'application/vnd.palm',
532
+ 'prc' => 'application/x-mobipocket-ebook',
533
+ 'ps' => 'application/postscript',
534
+ 'ps.bz2' => 'application/x-bzpostscript',
535
+ 'ps.gz' => 'application/x-gzpostscript',
536
+ 'psd' => 'image/vnd.adobe.photoshop',
537
+ 'psf' => 'application/x-font-linux-psf',
538
+ 'psf.gz' => 'application/x-gz-font-linux-psf',
539
+ 'psflib' => 'audio/x-psflib',
540
+ 'psid' => 'audio/prs.sid',
541
+ 'psw' => 'application/x-pocket-word',
542
+ 'pub' => 'application/vnd.ms-publisher',
543
+ 'pw' => 'application/x-pw',
544
+ 'py' => 'text/x-python',
545
+ 'pyc' => 'application/x-python-bytecode',
546
+ 'pyo' => 'application/x-python-bytecode',
547
+ 'pyx' => 'text/x-python',
548
+ 'qif' => 'application/x-qw',
549
+ 'qml' => 'text/x-qml',
550
+ 'qmlproject' => 'text/x-qml',
551
+ 'qmltypes' => 'text/x-qml',
552
+ 'qp' => 'application/x-qpress',
553
+ 'qt' => 'video/quicktime',
554
+ 'qti' => 'application/x-qtiplot',
555
+ 'qti.gz' => 'application/x-qtiplot',
556
+ 'qtif' => 'image/x-quicktime',
557
+ 'qtl' => 'application/x-quicktime-media-link',
558
+ 'qtvr' => 'video/quicktime',
559
+ 'ra' => 'audio/vnd.rn-realaudio',
560
+ 'raf' => 'image/x-fuji-raf',
561
+ 'ram' => 'application/ram',
562
+ 'rar' => 'application/x-rar',
563
+ 'ras' => 'image/x-cmu-raster',
564
+ 'raw' => 'image/x-panasonic-raw',
565
+ 'raw-disk-image' => 'application/x-raw-disk-image',
566
+ 'raw-disk-image.xz' => 'application/x-raw-disk-image-xz-compressed',
567
+ 'rax' => 'audio/vnd.rn-realaudio',
568
+ 'rb' => 'application/x-ruby',
569
+ 'rdf' => 'application/rdf+xml',
570
+ 'rdfs' => 'application/rdf+xml',
571
+ 'reg' => 'text/x-ms-regedit',
572
+ 'rej' => 'text/x-reject',
573
+ 'rgb' => 'image/x-rgb',
574
+ 'rle' => 'image/rle',
575
+ 'rm' => 'application/vnd.rn-realmedia',
576
+ 'rmj' => 'application/vnd.rn-realmedia',
577
+ 'rmm' => 'application/vnd.rn-realmedia',
578
+ 'rms' => 'application/vnd.rn-realmedia',
579
+ 'rmvb' => 'application/vnd.rn-realmedia',
580
+ 'rmx' => 'application/vnd.rn-realmedia',
581
+ 'rnc' => 'application/relax-ng-compact-syntax',
582
+ 'rng' => 'application/xml',
583
+ 'roff' => 'text/troff',
584
+ 'rp' => 'image/vnd.rn-realpix',
585
+ 'rpm' => 'application/x-rpm',
586
+ 'rss' => 'application/rss+xml',
587
+ 'rt' => 'text/vnd.rn-realtext',
588
+ 'rtf' => 'application/rtf',
589
+ 'rtx' => 'text/richtext',
590
+ 'rv' => 'video/vnd.rn-realvideo',
591
+ 'rvx' => 'video/vnd.rn-realvideo',
592
+ 'rw2' => 'image/x-panasonic-raw2',
593
+ 's3m' => 'audio/x-s3m',
594
+ 'sam' => 'application/x-amipro',
595
+ 'sami' => 'application/x-sami',
596
+ 'sav' => 'application/x-spss-sav',
597
+ 'scala' => 'text/x-scala',
598
+ 'scm' => 'text/x-scheme',
599
+ 'sda' => 'application/vnd.stardivision.draw',
600
+ 'sdc' => 'application/vnd.stardivision.calc',
601
+ 'sdd' => 'application/vnd.stardivision.impress',
602
+ 'sdp' => 'application/vnd.stardivision.impress',
603
+ 'sds' => 'application/vnd.stardivision.chart',
604
+ 'sdw' => 'application/vnd.stardivision.writer',
605
+ 'sfc' => 'application/vnd.nintendo.snes.rom',
606
+ 'sgf' => 'application/x-go-sgf',
607
+ 'sgi' => 'image/x-sgi',
608
+ 'sgl' => 'application/vnd.stardivision.writer',
609
+ 'sgm' => 'text/sgml',
610
+ 'sgml' => 'text/sgml',
611
+ 'sh' => 'application/x-shellscript',
612
+ 'shape' => 'application/x-dia-shape',
613
+ 'shar' => 'application/x-shar',
614
+ 'shn' => 'application/x-shorten',
615
+ 'siag' => 'application/x-siag',
616
+ 'sid' => 'audio/prs.sid',
617
+ 'sig' => 'application/pgp-signature',
618
+ 'sik' => 'application/x-trash',
619
+ 'sis' => 'application/vnd.symbian.install',
620
+ 'sisx' => 'x-epoc/x-sisx-app',
621
+ 'sit' => 'application/x-stuffit',
622
+ 'siv' => 'application/sieve',
623
+ 'sk' => 'image/x-skencil',
624
+ 'sk1' => 'image/x-skencil',
625
+ 'skr' => 'application/pgp-keys',
626
+ 'sldm' => 'application/vnd.ms-powerpoint.slide.macroEnabled.12',
627
+ 'sldx' => 'application/vnd.openxmlformats-officedocument.presentationml.slide',
628
+ 'slk' => 'text/spreadsheet',
629
+ 'smaf' => 'application/x-smaf',
630
+ 'smc' => 'application/vnd.nintendo.snes.rom',
631
+ 'smd' => 'application/vnd.stardivision.mail',
632
+ 'smf' => 'application/vnd.stardivision.math',
633
+ 'smi' => 'application/smil+xml',
634
+ 'smil' => 'application/smil+xml',
635
+ 'sml' => 'application/smil+xml',
636
+ 'sms' => 'application/x-sms-rom',
637
+ 'snd' => 'audio/basic',
638
+ 'so' => 'application/x-sharedlib',
639
+ 'spc' => 'application/x-pkcs7-certificates',
640
+ 'spd' => 'application/x-font-speedo',
641
+ 'spec' => 'text/x-rpm-spec',
642
+ 'spl' => 'application/vnd.adobe.flash.movie',
643
+ 'spm' => 'application/x-source-rpm',
644
+ 'spx' => 'audio/x-speex',
645
+ 'sql' => 'application/sql',
646
+ 'sr2' => 'image/x-sony-sr2',
647
+ 'src' => 'application/x-wais-source',
648
+ 'src.rpm' => 'application/x-source-rpm',
649
+ 'srf' => 'image/x-sony-srf',
650
+ 'srt' => 'application/x-subrip',
651
+ 'ss' => 'text/x-scheme',
652
+ 'ssa' => 'text/x-ssa',
653
+ 'stc' => 'application/vnd.sun.xml.calc.template',
654
+ 'std' => 'application/vnd.sun.xml.draw.template',
655
+ 'sti' => 'application/vnd.sun.xml.impress.template',
656
+ 'stm' => 'audio/x-stm',
657
+ 'stw' => 'application/vnd.sun.xml.writer.template',
658
+ 'sty' => 'text/x-tex',
659
+ 'sub' => 'text/x-microdvd',
660
+ 'sun' => 'image/x-sun-raster',
661
+ 'sv' => 'text/x-svsrc',
662
+ 'sv4cpio' => 'application/x-sv4cpio',
663
+ 'sv4crc' => 'application/x-sv4crc',
664
+ 'svg' => 'image/svg+xml',
665
+ 'svgz' => 'image/svg+xml-compressed',
666
+ 'svh' => 'text/x-svhdr',
667
+ 'swf' => 'application/vnd.adobe.flash.movie',
668
+ 'swm' => 'application/x-ms-wim',
669
+ 'sxc' => 'application/vnd.sun.xml.calc',
670
+ 'sxd' => 'application/vnd.sun.xml.draw',
671
+ 'sxg' => 'application/vnd.sun.xml.writer.global',
672
+ 'sxi' => 'application/vnd.sun.xml.impress',
673
+ 'sxm' => 'application/vnd.sun.xml.math',
674
+ 'sxw' => 'application/vnd.sun.xml.writer',
675
+ 'sylk' => 'text/spreadsheet',
676
+ 't' => 'application/x-perl',
677
+ 't2t' => 'text/x-txt2tags',
678
+ 'tar' => 'application/x-tar',
679
+ 'tar.bz' => 'application/x-bzip-compressed-tar',
680
+ 'tar.bz2' => 'application/x-bzip-compressed-tar',
681
+ 'tar.gz' => 'application/x-compressed-tar',
682
+ 'tar.lrz' => 'application/x-lrzip-compressed-tar',
683
+ 'tar.lzma' => 'application/x-lzma-compressed-tar',
684
+ 'tar.lzo' => 'application/x-tzo',
685
+ 'tar.xz' => 'application/x-xz-compressed-tar',
686
+ 'tar.z' => 'application/x-tarz',
687
+ 'taz' => 'application/x-tarz',
688
+ 'tb2' => 'application/x-bzip-compressed-tar',
689
+ 'tbz' => 'application/x-bzip-compressed-tar',
690
+ 'tbz2' => 'application/x-bzip-compressed-tar',
691
+ 'tcl' => 'text/x-tcl',
692
+ 'tex' => 'text/x-tex',
693
+ 'texi' => 'text/x-texinfo',
694
+ 'texinfo' => 'text/x-texinfo',
695
+ 'tga' => 'image/x-tga',
696
+ 'tgz' => 'application/x-compressed-tar',
697
+ 'theme' => 'application/x-theme',
698
+ 'themepack' => 'application/x-windows-themepack',
699
+ 'tif' => 'image/tiff',
700
+ 'tiff' => 'image/tiff',
701
+ 'tk' => 'text/x-tcl',
702
+ 'tlrz' => 'application/x-lrzip-compressed-tar',
703
+ 'tlz' => 'application/x-lzma-compressed-tar',
704
+ 'tnef' => 'application/vnd.ms-tnef',
705
+ 'tnf' => 'application/vnd.ms-tnef',
706
+ 'toc' => 'application/x-cdrdao-toc',
707
+ 'torrent' => 'application/x-bittorrent',
708
+ 'tpic' => 'image/x-tga',
709
+ 'tr' => 'text/troff',
710
+ 'trig' => 'application/x-trig',
711
+ 'ts' => 'text/vnd.trolltech.linguist',
712
+ 'tsv' => 'text/tab-separated-values',
713
+ 'tta' => 'audio/x-tta',
714
+ 'ttc' => 'application/x-font-ttf',
715
+ 'ttf' => 'application/x-font-ttf',
716
+ 'ttx' => 'application/x-font-ttx',
717
+ 'txt' => 'text/plain',
718
+ 'txz' => 'application/x-xz-compressed-tar',
719
+ 'tzo' => 'application/x-tzo',
720
+ 'udeb' => 'application/vnd.debian.binary-package',
721
+ 'ufraw' => 'application/x-ufraw',
722
+ 'ui' => 'application/x-designer',
723
+ 'uil' => 'text/x-uil',
724
+ 'ult' => 'audio/x-mod',
725
+ 'uni' => 'audio/x-mod',
726
+ 'url' => 'application/x-mswinurl',
727
+ 'ustar' => 'application/x-ustar',
728
+ 'uue' => 'text/x-uuencode',
729
+ 'v' => 'text/x-verilog',
730
+ 'v64' => 'application/x-n64-rom',
731
+ 'vala' => 'text/x-vala',
732
+ 'vapi' => 'text/x-vala',
733
+ 'vcard' => 'text/vcard',
734
+ 'vcf' => 'text/vcard',
735
+ 'vcs' => 'text/calendar',
736
+ 'vct' => 'text/vcard',
737
+ 'vda' => 'image/x-tga',
738
+ 'vhd' => 'text/x-vhdl',
739
+ 'vhdl' => 'text/x-vhdl',
740
+ 'viv' => 'video/vnd.vivo',
741
+ 'vivo' => 'video/vnd.vivo',
742
+ 'vlc' => 'audio/x-mpegurl',
743
+ 'vob' => 'video/mpeg',
744
+ 'voc' => 'audio/x-voc',
745
+ 'vor' => 'application/vnd.stardivision.writer',
746
+ 'vrm' => 'model/vrml',
747
+ 'vrml' => 'model/vrml',
748
+ 'vsd' => 'application/vnd.visio',
749
+ 'vss' => 'application/vnd.visio',
750
+ 'vst' => 'application/vnd.visio',
751
+ 'vsw' => 'application/vnd.visio',
752
+ 'vtt' => 'text/vtt',
753
+ 'wav' => 'audio/x-wav',
754
+ 'wax' => 'audio/x-ms-asx',
755
+ 'wb1' => 'application/x-quattropro',
756
+ 'wb2' => 'application/x-quattropro',
757
+ 'wb3' => 'application/x-quattropro',
758
+ 'wbmp' => 'image/vnd.wap.wbmp',
759
+ 'wcm' => 'application/vnd.ms-works',
760
+ 'wdb' => 'application/vnd.ms-works',
761
+ 'webm' => 'video/webm',
762
+ 'webp' => 'image/webp',
763
+ 'wim' => 'application/x-ms-wim',
764
+ 'wk1' => 'application/vnd.lotus-1-2-3',
765
+ 'wk3' => 'application/vnd.lotus-1-2-3',
766
+ 'wk4' => 'application/vnd.lotus-1-2-3',
767
+ 'wkdownload' => 'application/x-partial-download',
768
+ 'wks' => 'application/vnd.lotus-1-2-3',
769
+ 'wma' => 'audio/x-ms-wma',
770
+ 'wmf' => 'image/x-wmf',
771
+ 'wml' => 'text/vnd.wap.wml',
772
+ 'wmls' => 'text/vnd.wap.wmlscript',
773
+ 'wmv' => 'video/x-ms-wmv',
774
+ 'wmx' => 'audio/x-ms-asx',
775
+ 'woff' => 'application/font-woff',
776
+ 'wp' => 'application/vnd.wordperfect',
777
+ 'wp4' => 'application/vnd.wordperfect',
778
+ 'wp5' => 'application/vnd.wordperfect',
779
+ 'wp6' => 'application/vnd.wordperfect',
780
+ 'wpd' => 'application/vnd.wordperfect',
781
+ 'wpg' => 'application/x-wpg',
782
+ 'wpl' => 'application/vnd.ms-wpl',
783
+ 'wpp' => 'application/vnd.wordperfect',
784
+ 'wps' => 'application/vnd.ms-works',
785
+ 'wri' => 'application/x-mswrite',
786
+ 'wrl' => 'model/vrml',
787
+ 'wsgi' => 'text/x-python',
788
+ 'wv' => 'audio/x-wavpack',
789
+ 'wvc' => 'audio/x-wavpack-correction',
790
+ 'wvp' => 'audio/x-wavpack',
791
+ 'wvx' => 'audio/x-ms-asx',
792
+ 'wwf' => 'application/x-wwf',
793
+ 'x3f' => 'image/x-sigma-x3f',
794
+ 'xac' => 'application/x-gnucash',
795
+ 'xbel' => 'application/x-xbel',
796
+ 'xbl' => 'application/xml',
797
+ 'xbm' => 'image/x-xbitmap',
798
+ 'xcf' => 'image/x-xcf',
799
+ 'xcf.bz2' => 'image/x-compressed-xcf',
800
+ 'xcf.gz' => 'image/x-compressed-xcf',
801
+ 'xhtml' => 'application/xhtml+xml',
802
+ 'xi' => 'audio/x-xi',
803
+ 'xla' => 'application/vnd.ms-excel',
804
+ 'xlam' => 'application/vnd.ms-excel.addin.macroEnabled.12',
805
+ 'xlc' => 'application/vnd.ms-excel',
806
+ 'xld' => 'application/vnd.ms-excel',
807
+ 'xlf' => 'application/x-xliff',
808
+ 'xliff' => 'application/x-xliff',
809
+ 'xll' => 'application/vnd.ms-excel',
810
+ 'xlm' => 'application/vnd.ms-excel',
811
+ 'xlr' => 'application/vnd.ms-works',
812
+ 'xls' => 'application/vnd.ms-excel',
813
+ 'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroEnabled.12',
814
+ 'xlsm' => 'application/vnd.ms-excel.sheet.macroEnabled.12',
815
+ 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
816
+ 'xlt' => 'application/vnd.ms-excel',
817
+ 'xltm' => 'application/vnd.ms-excel.template.macroEnabled.12',
818
+ 'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template',
819
+ 'xlw' => 'application/vnd.ms-excel',
820
+ 'xm' => 'audio/x-xm',
821
+ 'xmf' => 'audio/x-xmf',
822
+ 'xmi' => 'text/x-xmi',
823
+ 'xml' => 'application/xml',
824
+ 'xpi' => 'application/x-xpinstall',
825
+ 'xpm' => 'image/x-xpixmap',
826
+ 'xps' => 'application/oxps',
827
+ 'xsd' => 'application/xml',
828
+ 'xsl' => 'application/xslt+xml',
829
+ 'xslfo' => 'text/x-xslfo',
830
+ 'xslt' => 'application/xslt+xml',
831
+ 'xspf' => 'application/xspf+xml',
832
+ 'xul' => 'application/vnd.mozilla.xul+xml',
833
+ 'xwd' => 'image/x-xwindowdump',
834
+ 'xz' => 'application/x-xz',
835
+ 'yaml' => 'application/x-yaml',
836
+ 'yml' => 'application/x-yaml',
837
+ 'z' => 'application/x-compress',
838
+ 'z64' => 'application/x-n64-rom',
839
+ 'zabw' => 'application/x-abiword',
840
+ 'zip' => 'application/zip',
841
+ 'zoo' => 'application/x-zoo',
842
+ 'zsav' => 'application/x-spss-sav',
843
+ 'zz' => 'application/zlib',
844
+ }
845
+ # @private
846
+ # :nodoc:
847
+ TYPES = {
848
+ 'application/andrew-inset' => [%w(ez), %w(), 'ATK inset'],
849
+ 'application/annodex' => [%w(anx), %w(), 'Annodex exchange format'],
850
+ 'application/atom+xml' => [%w(atom), %w(application/xml), 'Atom syndication feed'],
851
+ 'application/dicom' => [%w(dcm), %w(), 'DICOM image'],
852
+ 'application/ecmascript' => [%w(es), %w(text/plain), 'ECMAScript program'],
853
+ 'application/epub+zip' => [%w(epub), %w(application/zip), 'electronic book document'],
854
+ 'application/font-woff' => [%w(woff), %w(), 'WOFF font'],
855
+ 'application/gml+xml' => [%w(gml), %w(application/xml), 'GML document'],
856
+ 'application/gnunet-directory' => [%w(gnd), %w(), 'GNUnet search file'],
857
+ 'application/gzip' => [%w(gz), %w(), 'Gzip archive'],
858
+ 'application/illustrator' => [%w(ai), %w(), 'Adobe Illustrator document'],
859
+ 'application/javascript' => [%w(js jsm), %w(application/ecmascript), 'JavaScript program'],
860
+ 'application/json' => [%w(json), %w(application/javascript), 'JSON document'],
861
+ 'application/mathematica' => [%w(nb), %w(text/plain), 'Mathematica Notebook'],
862
+ 'application/mathml+xml' => [%w(mml), %w(application/xml), 'MathML document'],
863
+ 'application/mbox' => [%w(mbox), %w(text/plain), 'mailbox file'],
864
+ 'application/metalink+xml' => [%w(metalink), %w(application/xml), 'Metalink file'],
865
+ 'application/metalink4+xml' => [%w(meta4), %w(application/xml), 'Metalink file'],
866
+ 'application/msword' => [%w(doc), %w(application/x-ole-storage), 'Word document'],
867
+ 'application/msword-template' => [%w(dot), %w(application/msword), 'Word template'],
868
+ 'application/mxf' => [%w(mxf), %w(), 'MXF video'],
869
+ 'application/octet-stream' => [%w(bin), %w(), 'unknown'],
870
+ 'application/oda' => [%w(oda), %w(), 'ODA document'],
871
+ 'application/ogg' => [%w(ogx), %w(), 'Ogg multimedia file'],
872
+ 'application/oxps' => [%w(oxps xps), %w(application/zip), 'XPS document'],
873
+ 'application/pdf' => [%w(pdf), %w(), 'PDF document'],
874
+ 'application/pgp-encrypted' => [%w(asc gpg pgp), %w(text/plain), 'PGP/MIME-encrypted message header'],
875
+ 'application/pgp-keys' => [%w(asc gpg pgp pkr skr), %w(text/plain), 'PGP keys'],
876
+ 'application/pgp-signature' => [%w(asc gpg pgp sig), %w(text/plain), 'detached OpenPGP signature'],
877
+ 'application/pkcs10' => [%w(p10), %w(), 'PKCS#10 certification request'],
878
+ 'application/pkcs7-mime' => [%w(p7c p7m), %w(), 'PKCS#7 Message or Certificate'],
879
+ 'application/pkcs7-signature' => [%w(p7s), %w(text/plain), 'detached S/MIME signature'],
880
+ 'application/pkcs8' => [%w(p8), %w(), 'PKCS#8 private key'],
881
+ 'application/pkix-cert' => [%w(cer), %w(), 'X.509 certificate'],
882
+ 'application/pkix-crl' => [%w(crl), %w(), 'Certificate revocation list'],
883
+ 'application/pkix-pkipath' => [%w(pkipath), %w(), 'PkiPath certification path'],
884
+ 'application/postscript' => [%w(ps), %w(text/plain), 'PS document'],
885
+ 'application/ram' => [%w(ram), %w(), 'RealMedia Metafile'],
886
+ 'application/rdf+xml' => [%w(owl rdf rdfs), %w(application/xml), 'RDF file'],
887
+ 'application/relax-ng-compact-syntax' => [%w(rnc), %w(text/plain), 'RELAX NG XML schema'],
888
+ 'application/rss+xml' => [%w(rss), %w(application/xml), 'RSS summary'],
889
+ 'application/rtf' => [%w(rtf), %w(text/plain), 'RTF document'],
890
+ 'application/sdp' => [%w(sdp), %w(), 'SDP multicast stream file'],
891
+ 'application/sieve' => [%w(siv), %w(application/xml), 'Sieve mail filter script'],
892
+ 'application/smil+xml' => [%w(kino smi smil sml), %w(application/xml), 'SMIL document'],
893
+ 'application/sql' => [%w(sql), %w(text/plain), 'SQL code'],
894
+ 'application/vnd.adobe.flash.movie' => [%w(spl swf), %w(), 'Shockwave Flash file'],
895
+ 'application/vnd.android.package-archive' => [%w(apk), %w(application/x-java-archive), 'Android package'],
896
+ 'application/vnd.apple.mpegurl' => [%w(m3u m3u8), %w(), 'HTTP Live Streaming playlist'],
897
+ 'application/vnd.corel-draw' => [%w(cdr), %w(), 'Corel Draw drawing'],
898
+ 'application/vnd.debian.binary-package' => [%w(deb udeb), %w(), 'Debian package'],
899
+ 'application/vnd.emusic-emusic_package' => [%w(emp), %w(), 'eMusic download package'],
900
+ 'application/vnd.google-earth.kml+xml' => [%w(kml), %w(application/xml), 'KML geographic data'],
901
+ 'application/vnd.google-earth.kmz' => [%w(kmz), %w(application/zip), 'KML geographic compressed data'],
902
+ 'application/vnd.hp-hpgl' => [%w(hpgl), %w(), 'HPGL file'],
903
+ 'application/vnd.hp-pcl' => [%w(pcl), %w(), 'PCL file'],
904
+ 'application/vnd.iccprofile' => [%w(icc icm), %w(), 'ICC profile'],
905
+ 'application/vnd.lotus-1-2-3' => [%w(123 wk1 wk3 wk4 wks), %w(), 'Lotus 1-2-3 spreadsheet'],
906
+ 'application/vnd.lotus-wordpro' => [%w(lwp), %w(), 'Lotus Word Pro'],
907
+ 'application/vnd.mozilla.xul+xml' => [%w(xul), %w(application/xml), 'XUL interface document'],
908
+ 'application/vnd.ms-access' => [%w(mdb), %w(), 'JET database'],
909
+ 'application/vnd.ms-asf' => [%w(asf), %w(), 'ASF video'],
910
+ 'application/vnd.ms-cab-compressed' => [%w(cab), %w(), 'Microsoft Cabinet archive'],
911
+ 'application/vnd.ms-excel' => [%w(xla xlc xld xll xlm xls xlt xlw), %w(), 'Excel spreadsheet'],
912
+ 'application/vnd.ms-excel.addin.macroEnabled.12' => [%w(xlam), %w(application/vnd.openxmlformats-officedocument.spreadsheetml.sheet), 'Excel add-in'],
913
+ 'application/vnd.ms-excel.sheet.binary.macroEnabled.12' => [%w(xlsb), %w(application/vnd.openxmlformats-officedocument.spreadsheetml.sheet), 'Excel 2007 binary spreadsheet'],
914
+ 'application/vnd.ms-excel.sheet.macroEnabled.12' => [%w(xlsm), %w(application/vnd.openxmlformats-officedocument.spreadsheetml.sheet), 'Excel macro-enabled spreadsheet'],
915
+ 'application/vnd.ms-excel.template.macroEnabled.12' => [%w(xltm), %w(application/vnd.openxmlformats-officedocument.spreadsheetml.template), 'Excel macro-enabled spreadsheet template'],
916
+ 'application/vnd.ms-htmlhelp' => [%w(chm), %w(), 'CHM document'],
917
+ 'application/vnd.ms-powerpoint' => [%w(pot pps ppt ppz), %w(), 'PowerPoint presentation'],
918
+ 'application/vnd.ms-powerpoint.addin.macroEnabled.12' => [%w(ppam), %w(), 'PowerPoint add-in'],
919
+ 'application/vnd.ms-powerpoint.presentation.macroEnabled.12' => [%w(pptm), %w(application/vnd.openxmlformats-officedocument.presentationml.presentation), 'PowerPoint macro-enabled presentation'],
920
+ 'application/vnd.ms-powerpoint.slide.macroEnabled.12' => [%w(sldm), %w(application/vnd.openxmlformats-officedocument.presentationml.slide), 'PowerPoint macro-enabled slide'],
921
+ 'application/vnd.ms-powerpoint.slideshow.macroEnabled.12' => [%w(ppsm), %w(application/vnd.openxmlformats-officedocument.presentationml.slideshow), 'PowerPoint macro-enabled presentation'],
922
+ 'application/vnd.ms-powerpoint.template.macroEnabled.12' => [%w(potm), %w(application/vnd.openxmlformats-officedocument.presentationml.template), 'PowerPoint macro-enabled presentation template'],
923
+ 'application/vnd.ms-publisher' => [%w(pub), %w(application/x-ole-storage), 'Microsoft Publisher document'],
924
+ 'application/vnd.ms-tnef' => [%w(tnef tnf), %w(), 'TNEF message'],
925
+ 'application/vnd.ms-word.document.macroEnabled.12' => [%w(docm), %w(application/vnd.openxmlformats-officedocument.wordprocessingml.document), 'Word macro-enabled document'],
926
+ 'application/vnd.ms-word.template.macroEnabled.12' => [%w(dotm), %w(application/vnd.openxmlformats-officedocument.wordprocessingml.template), 'Word macro-enabled document template'],
927
+ 'application/vnd.ms-works' => [%w(wcm wdb wks wps xlr), %w(application/x-ole-storage), 'Microsoft Works document'],
928
+ 'application/vnd.ms-wpl' => [%w(wpl), %w(), 'WPL playlist'],
929
+ 'application/vnd.nintendo.snes.rom' => [%w(sfc smc), %w(), 'Super NES ROM'],
930
+ 'application/vnd.oasis.opendocument.chart' => [%w(odc), %w(application/zip), 'ODC chart'],
931
+ 'application/vnd.oasis.opendocument.chart-template' => [%w(otc), %w(application/zip), 'ODC template'],
932
+ 'application/vnd.oasis.opendocument.database' => [%w(odb), %w(application/zip), 'ODB database'],
933
+ 'application/vnd.oasis.opendocument.formula' => [%w(odf), %w(application/zip), 'ODF formula'],
934
+ 'application/vnd.oasis.opendocument.formula-template' => [%w(otf), %w(application/zip), 'ODF template'],
935
+ 'application/vnd.oasis.opendocument.graphics' => [%w(odg), %w(application/zip), 'ODG drawing'],
936
+ 'application/vnd.oasis.opendocument.graphics-flat-xml' => [%w(fodg), %w(application/xml), 'ODG drawing (Flat XML)'],
937
+ 'application/vnd.oasis.opendocument.graphics-template' => [%w(otg), %w(application/zip), 'ODG template'],
938
+ 'application/vnd.oasis.opendocument.image' => [%w(odi), %w(application/zip), 'ODI image'],
939
+ 'application/vnd.oasis.opendocument.presentation' => [%w(odp), %w(application/zip), 'ODP presentation'],
940
+ 'application/vnd.oasis.opendocument.presentation-flat-xml' => [%w(fodp), %w(application/xml), 'ODP presentation (Flat XML)'],
941
+ 'application/vnd.oasis.opendocument.presentation-template' => [%w(otp), %w(application/zip), 'ODP template'],
942
+ 'application/vnd.oasis.opendocument.spreadsheet' => [%w(ods), %w(application/zip), 'ODS spreadsheet'],
943
+ 'application/vnd.oasis.opendocument.spreadsheet-flat-xml' => [%w(fods), %w(application/xml), 'ODS spreadsheet (Flat XML)'],
944
+ 'application/vnd.oasis.opendocument.spreadsheet-template' => [%w(ots), %w(application/zip), 'ODS template'],
945
+ 'application/vnd.oasis.opendocument.text' => [%w(odt), %w(application/zip), 'ODT document'],
946
+ 'application/vnd.oasis.opendocument.text-flat-xml' => [%w(fodt), %w(application/xml), 'ODT document (Flat XML)'],
947
+ 'application/vnd.oasis.opendocument.text-master' => [%w(odm), %w(application/zip), 'ODM document'],
948
+ 'application/vnd.oasis.opendocument.text-template' => [%w(ott), %w(application/zip), 'ODT template'],
949
+ 'application/vnd.oasis.opendocument.text-web' => [%w(oth), %w(application/zip), 'OTH template'],
950
+ 'application/vnd.openofficeorg.extension' => [%w(oxt), %w(application/zip), 'OpenOffice.org extension'],
951
+ 'application/vnd.openxmlformats-officedocument.presentationml.presentation' => [%w(pptx), %w(application/zip), 'PowerPoint 2007 presentation'],
952
+ 'application/vnd.openxmlformats-officedocument.presentationml.slide' => [%w(sldx), %w(application/zip), 'PowerPoint 2007 slide'],
953
+ 'application/vnd.openxmlformats-officedocument.presentationml.slideshow' => [%w(ppsx), %w(application/zip), 'PowerPoint 2007 show'],
954
+ 'application/vnd.openxmlformats-officedocument.presentationml.template' => [%w(potx), %w(application/zip), 'PowerPoint 2007 presentation template'],
955
+ 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' => [%w(xlsx), %w(application/zip), 'Excel 2007 spreadsheet'],
956
+ 'application/vnd.openxmlformats-officedocument.spreadsheetml.template' => [%w(xltx), %w(application/zip), 'Excel 2007 spreadsheet template'],
957
+ 'application/vnd.openxmlformats-officedocument.wordprocessingml.document' => [%w(docx), %w(application/zip), 'Word 2007 document'],
958
+ 'application/vnd.openxmlformats-officedocument.wordprocessingml.template' => [%w(dotx), %w(application/zip), 'Word 2007 document template'],
959
+ 'application/vnd.palm' => [%w(oprc pdb pqa prc), %w(), 'Palm OS database'],
960
+ 'application/vnd.rn-realmedia' => [%w(rm rmj rmm rms rmvb rmx), %w(), 'RealMedia document'],
961
+ 'application/vnd.stardivision.calc' => [%w(sdc), %w(), 'StarCalc spreadsheet'],
962
+ 'application/vnd.stardivision.chart' => [%w(sds), %w(), 'StarChart chart'],
963
+ 'application/vnd.stardivision.draw' => [%w(sda), %w(), 'StarDraw drawing'],
964
+ 'application/vnd.stardivision.impress' => [%w(sdd sdp), %w(), 'StarImpress presentation'],
965
+ 'application/vnd.stardivision.mail' => [%w(smd), %w(), 'StarMail email'],
966
+ 'application/vnd.stardivision.math' => [%w(smf), %w(), 'StarMath formula'],
967
+ 'application/vnd.stardivision.writer' => [%w(sdw sgl vor), %w(), 'StarWriter document'],
968
+ 'application/vnd.sun.xml.calc' => [%w(sxc), %w(application/zip), 'OpenOffice Calc spreadsheet'],
969
+ 'application/vnd.sun.xml.calc.template' => [%w(stc), %w(application/zip), 'OpenOffice Calc template'],
970
+ 'application/vnd.sun.xml.draw' => [%w(sxd), %w(application/zip), 'OpenOffice Draw drawing'],
971
+ 'application/vnd.sun.xml.draw.template' => [%w(std), %w(application/zip), 'OpenOffice Draw template'],
972
+ 'application/vnd.sun.xml.impress' => [%w(sxi), %w(application/zip), 'OpenOffice Impress presentation'],
973
+ 'application/vnd.sun.xml.impress.template' => [%w(sti), %w(application/zip), 'OpenOffice Impress template'],
974
+ 'application/vnd.sun.xml.math' => [%w(sxm), %w(application/zip), 'OpenOffice Math formula'],
975
+ 'application/vnd.sun.xml.writer' => [%w(sxw), %w(application/zip), 'OpenOffice Writer document'],
976
+ 'application/vnd.sun.xml.writer.global' => [%w(sxg), %w(application/zip), 'OpenOffice Writer global document'],
977
+ 'application/vnd.sun.xml.writer.template' => [%w(stw), %w(application/zip), 'OpenOffice Writer template'],
978
+ 'application/vnd.symbian.install' => [%w(sis), %w(), 'SIS package'],
979
+ 'application/vnd.tcpdump.pcap' => [%w(cap dmp pcap), %w(), 'Network Packet Capture'],
980
+ 'application/vnd.visio' => [%w(vsd vss vst vsw), %w(application/x-ole-storage), 'Microsoft Visio document'],
981
+ 'application/vnd.wordperfect' => [%w(wp wp4 wp5 wp6 wpd wpp), %w(), 'WordPerfect document'],
982
+ 'application/winhlp' => [%w(hlp), %w(), 'WinHelp help file'],
983
+ 'application/x-7z-compressed' => [%w(7z), %w(), '7-zip archive'],
984
+ 'application/x-abiword' => [%w(abw abw.crashed abw.gz zabw), %w(application/xml), 'AbiWord document'],
985
+ 'application/x-ace' => [%w(ace), %w(), 'ACE archive'],
986
+ 'application/x-alz' => [%w(alz), %w(), 'Alzip archive'],
987
+ 'application/x-amipro' => [%w(sam), %w(), 'Lotus AmiPro document'],
988
+ 'application/x-aportisdoc' => [%w(pdb pdc), %w(application/x-palm-database), 'AportisDoc document'],
989
+ 'application/x-apple-diskimage' => [%w(dmg), %w(), 'Apple disk image'],
990
+ 'application/x-applix-spreadsheet' => [%w(as), %w(), 'Applix Spreadsheets spreadsheet'],
991
+ 'application/x-applix-word' => [%w(aw), %w(), 'Applix Words document'],
992
+ 'application/x-archive' => [%w(a ar), %w(), 'AR archive'],
993
+ 'application/x-arj' => [%w(arj), %w(), 'ARJ archive'],
994
+ 'application/x-asp' => [%w(asp), %w(text/plain), 'ASP page'],
995
+ 'application/x-awk' => [%w(awk), %w(application/x-executable text/plain), 'AWK script'],
996
+ 'application/x-bcpio' => [%w(bcpio), %w(), 'BCPIO document'],
997
+ 'application/x-bittorrent' => [%w(torrent), %w(), 'BitTorrent seed file'],
998
+ 'application/x-blender' => [%w(blend blend blender), %w(), 'Blender scene'],
999
+ 'application/x-bzdvi' => [%w(dvi.bz2), %w(application/x-bzip), 'TeX DVI document (bzip-compressed)'],
1000
+ 'application/x-bzip' => [%w(bz bz2), %w(), 'Bzip archive'],
1001
+ 'application/x-bzip-compressed-tar' => [%w(tar.bz tar.bz2 tb2 tbz tbz2), %w(application/x-bzip), 'Tar archive (bzip-compressed)'],
1002
+ 'application/x-bzpdf' => [%w(pdf.bz2), %w(application/x-bzip), 'PDF document (bzip-compressed)'],
1003
+ 'application/x-bzpostscript' => [%w(ps.bz2), %w(application/x-bzip), 'PostScript document (bzip-compressed)'],
1004
+ 'application/x-cb7' => [%w(cb7), %w(application/x-7z-compressed), 'comic book archive'],
1005
+ 'application/x-cbr' => [%w(cbr), %w(application/x-rar), 'comic book archive'],
1006
+ 'application/x-cbt' => [%w(cbt), %w(application/x-tar), 'comic book archive'],
1007
+ 'application/x-cbz' => [%w(cbz), %w(application/zip), 'comic book archive'],
1008
+ 'application/x-ccmx' => [%w(ccmx), %w(text/plain), 'CCMX color correction file'],
1009
+ 'application/x-cd-image' => [%w(iso iso9660), %w(application/x-raw-disk-image), 'raw CD image'],
1010
+ 'application/x-cdrdao-toc' => [%w(toc), %w(text/plain), 'CD Table Of Contents'],
1011
+ 'application/x-chess-pgn' => [%w(pgn), %w(text/plain), 'PGN chess game notation'],
1012
+ 'application/x-cisco-vpn-settings' => [%w(pcf), %w(), 'Cisco VPN Settings'],
1013
+ 'application/x-compress' => [%w(z), %w(), 'UNIX-compressed file'],
1014
+ 'application/x-compressed-tar' => [%w(tar.gz tgz), %w(application/gzip), 'Tar archive (gzip-compressed)'],
1015
+ 'application/x-cpio' => [%w(cpio), %w(), 'CPIO archive'],
1016
+ 'application/x-cpio-compressed' => [%w(cpio.gz), %w(application/gzip), 'CPIO archive (gzip-compressed)'],
1017
+ 'application/x-csh' => [%w(csh), %w(application/x-shellscript text/plain), 'C shell script'],
1018
+ 'application/x-cue' => [%w(cue), %w(text/plain), 'CD image cuesheet'],
1019
+ 'application/x-dar' => [%w(dar), %w(), 'DAR archive'],
1020
+ 'application/x-dbf' => [%w(dbf), %w(), 'Xbase document'],
1021
+ 'application/x-dc-rom' => [%w(dc), %w(), 'Dreamcast ROM'],
1022
+ 'application/x-designer' => [%w(ui), %w(application/xml), 'Qt Designer file'],
1023
+ 'application/x-desktop' => [%w(desktop kdelnk), %w(text/plain), 'desktop configuration file'],
1024
+ 'application/x-dia-diagram' => [%w(dia), %w(application/xml), 'Dia diagram'],
1025
+ 'application/x-dia-shape' => [%w(shape), %w(application/xml), 'Dia shape'],
1026
+ 'application/x-docbook+xml' => [%w(dbk docbook), %w(application/xml), 'DocBook document'],
1027
+ 'application/x-dvi' => [%w(dvi), %w(), 'TeX DVI document'],
1028
+ 'application/x-e-theme' => [%w(etheme), %w(), 'Enlightenment theme'],
1029
+ 'application/x-egon' => [%w(egon), %w(), 'Egon Animator animation'],
1030
+ 'application/x-fictionbook+xml' => [%w(fb2), %w(application/xml), 'FictionBook document'],
1031
+ 'application/x-fluid' => [%w(fl), %w(text/plain), 'FLTK Fluid file'],
1032
+ 'application/x-font-afm' => [%w(afm), %w(), 'Adobe font metrics'],
1033
+ 'application/x-font-bdf' => [%w(bdf), %w(), 'BDF font'],
1034
+ 'application/x-font-linux-psf' => [%w(psf), %w(), 'Linux PSF console font'],
1035
+ 'application/x-font-otf' => [%w(otf), %w(application/x-font-ttf), 'OpenType font'],
1036
+ 'application/x-font-pcf' => [%w(pcf pcf.gz pcf.z), %w(), 'PCF font'],
1037
+ 'application/x-font-speedo' => [%w(spd), %w(), 'Speedo font'],
1038
+ 'application/x-font-ttf' => [%w(ttc ttf), %w(), 'TrueType font'],
1039
+ 'application/x-font-ttx' => [%w(ttx), %w(text/xml), 'TrueType XML font'],
1040
+ 'application/x-font-type1' => [%w(gsf pfa pfb), %w(application/postscript), 'Postscript type-1 font'],
1041
+ 'application/x-gameboy-rom' => [%w(gb), %w(), 'Game Boy ROM'],
1042
+ 'application/x-gamecube-rom' => [%w(iso), %w(), 'GameCube disc image'],
1043
+ 'application/x-gba-rom' => [%w(gba), %w(), 'Game Boy Advance ROM'],
1044
+ 'application/x-gedcom' => [%w(ged gedcom), %w(), 'GEDCOM family history'],
1045
+ 'application/x-genesis-rom' => [%w(gen), %w(), 'Genesis ROM'],
1046
+ 'application/x-gettext-translation' => [%w(gmo mo), %w(), 'translated messages (machine-readable)'],
1047
+ 'application/x-glade' => [%w(glade), %w(application/xml), 'Glade project'],
1048
+ 'application/x-gnucash' => [%w(gnc gnucash xac), %w(), 'GnuCash financial data'],
1049
+ 'application/x-gnumeric' => [%w(gnumeric), %w(), 'Gnumeric spreadsheet'],
1050
+ 'application/x-gnuplot' => [%w(gnuplot gp gplt), %w(text/plain), 'Gnuplot document'],
1051
+ 'application/x-go-sgf' => [%w(sgf), %w(text/plain), 'SGF record'],
1052
+ 'application/x-graphite' => [%w(gra), %w(), 'Graphite scientific graph'],
1053
+ 'application/x-gtk-builder' => [%w(ui), %w(application/xml), 'GTK+ Builder'],
1054
+ 'application/x-gz-font-linux-psf' => [%w(psf.gz), %w(application/gzip), 'Linux PSF console font (gzip-compressed)'],
1055
+ 'application/x-gzdvi' => [%w(dvi.gz), %w(application/gzip), 'TeX DVI document (gzip-compressed)'],
1056
+ 'application/x-gzpdf' => [%w(pdf.gz), %w(application/gzip), 'PDF document (gzip-compressed)'],
1057
+ 'application/x-gzpostscript' => [%w(ps.gz), %w(application/gzip), 'PostScript document (gzip-compressed)'],
1058
+ 'application/x-hdf' => [%w(h4 h5 hdf hdf4 hdf5), %w(), 'HDF document'],
1059
+ 'application/x-hwp' => [%w(hwp), %w(), 'Haansoft Hangul document'],
1060
+ 'application/x-hwt' => [%w(hwt), %w(), 'Haansoft Hangul document template'],
1061
+ 'application/x-ica' => [%w(ica), %w(text/plain), 'Citrix ICA settings file'],
1062
+ 'application/x-it87' => [%w(it87), %w(text/plain), 'IT 8.7 color calibration file'],
1063
+ 'application/x-iwork-keynote-sffkey' => [%w(key), %w(application/zip), 'Apple Keynote 5 presentation'],
1064
+ 'application/x-java' => [%w(class), %w(), 'Java class'],
1065
+ 'application/x-java-archive' => [%w(jar), %w(application/zip), 'Java archive'],
1066
+ 'application/x-java-jce-keystore' => [%w(jceks), %w(), 'Java JCE keystore'],
1067
+ 'application/x-java-jnlp-file' => [%w(jnlp), %w(application/xml), 'JNLP file'],
1068
+ 'application/x-java-keystore' => [%w(jks ks), %w(), 'Java keystore'],
1069
+ 'application/x-java-pack200' => [%w(pack), %w(), 'Pack200 Java archive'],
1070
+ 'application/x-jbuilder-project' => [%w(jpr jpx), %w(), 'JBuilder project'],
1071
+ 'application/x-karbon' => [%w(karbon), %w(), 'Karbon14 drawing'],
1072
+ 'application/x-kchart' => [%w(chrt), %w(), 'KChart chart'],
1073
+ 'application/x-kexi-connectiondata' => [%w(kexic), %w(), 'Kexi settings for database server connection'],
1074
+ 'application/x-kexiproject-shortcut' => [%w(kexis), %w(), 'shortcut to Kexi project on database server'],
1075
+ 'application/x-kexiproject-sqlite2' => [%w(kexi), %w(application/x-sqlite2), 'Kexi database file-based project'],
1076
+ 'application/x-kexiproject-sqlite3' => [%w(kexi), %w(application/x-sqlite3), 'Kexi database file-based project'],
1077
+ 'application/x-kformula' => [%w(kfo), %w(), 'KFormula formula'],
1078
+ 'application/x-killustrator' => [%w(kil), %w(), 'KIllustrator drawing'],
1079
+ 'application/x-kivio' => [%w(flw), %w(), 'Kivio flowchart'],
1080
+ 'application/x-kontour' => [%w(kon), %w(), 'Kontour drawing'],
1081
+ 'application/x-kpovmodeler' => [%w(kpm), %w(), 'KPovModeler scene'],
1082
+ 'application/x-kpresenter' => [%w(kpr kpt), %w(), 'KPresenter presentation'],
1083
+ 'application/x-krita' => [%w(kra), %w(), 'Krita document'],
1084
+ 'application/x-kspread' => [%w(ksp), %w(), 'KSpread spreadsheet'],
1085
+ 'application/x-kugar' => [%w(kud), %w(), 'Kugar document'],
1086
+ 'application/x-kword' => [%w(kwd kwt), %w(), 'KWord document'],
1087
+ 'application/x-lha' => [%w(lha lzh), %w(), 'LHA archive'],
1088
+ 'application/x-lhz' => [%w(lhz), %w(), 'LHZ archive'],
1089
+ 'application/x-lrzip' => [%w(lrz), %w(), 'Lrzip archive'],
1090
+ 'application/x-lrzip-compressed-tar' => [%w(tar.lrz tlrz), %w(application/x-lrzip), 'Tar archive (lrzip-compressed)'],
1091
+ 'application/x-lyx' => [%w(lyx), %w(text/plain), 'LyX document'],
1092
+ 'application/x-lz4' => [%w(lz4), %w(), 'LZ4 archive'],
1093
+ 'application/x-lzip' => [%w(lz), %w(), 'Lzip archive'],
1094
+ 'application/x-lzma' => [%w(lzma), %w(), 'LZMA archive'],
1095
+ 'application/x-lzma-compressed-tar' => [%w(tar.lzma tlz), %w(application/x-lzma), 'Tar archive (LZMA-compressed)'],
1096
+ 'application/x-lzop' => [%w(lzo), %w(), 'LZO archive'],
1097
+ 'application/x-m4' => [%w(m4), %w(text/plain), 'M4 macro'],
1098
+ 'application/x-magicpoint' => [%w(mgp), %w(text/plain), 'MagicPoint presentation'],
1099
+ 'application/x-markaby' => [%w(mab), %w(application/x-ruby), 'Markaby script'],
1100
+ 'application/x-mif' => [%w(mif), %w(), 'Adobe FrameMaker MIF document'],
1101
+ 'application/x-mimearchive' => [%w(mht mhtml), %w(multipart/related), 'MHTML web archive'],
1102
+ 'application/x-mobipocket-ebook' => [%w(mobi prc), %w(application/x-palm-database), 'Mobipocket e-book'],
1103
+ 'application/x-ms-dos-executable' => [%w(exe), %w(), 'DOS/Windows executable'],
1104
+ 'application/x-ms-wim' => [%w(swm wim), %w(), 'Windows Imaging Format Disk Image'],
1105
+ 'application/x-msi' => [%w(msi), %w(application/x-ole-storage), 'Windows Installer package'],
1106
+ 'application/x-mswinurl' => [%w(url), %w(), 'Internet shortcut'],
1107
+ 'application/x-mswrite' => [%w(wri), %w(), 'WRI document'],
1108
+ 'application/x-msx-rom' => [%w(msx), %w(), 'MSX ROM'],
1109
+ 'application/x-n64-rom' => [%w(n64 v64 z64), %w(), 'Nintendo64 ROM'],
1110
+ 'application/x-navi-animation' => [%w(ani), %w(), 'Windows animated cursor'],
1111
+ 'application/x-nes-rom' => [%w(nes), %w(), 'NES ROM'],
1112
+ 'application/x-netcdf' => [%w(cdf nc), %w(), 'Unidata NetCDF document'],
1113
+ 'application/x-netshow-channel' => [%w(nsc), %w(application/vnd.ms-asf), 'Windows Media Station file'],
1114
+ 'application/x-nintendo-ds-rom' => [%w(nds), %w(), 'Nintendo DS ROM'],
1115
+ 'application/x-nzb' => [%w(nzb), %w(application/xml), 'NewzBin usenet index'],
1116
+ 'application/x-object' => [%w(o), %w(), 'object code'],
1117
+ 'application/x-oleo' => [%w(oleo), %w(), 'GNU Oleo spreadsheet'],
1118
+ 'application/x-pagemaker' => [%w(p65 pm pm6 pmd), %w(application/x-ole-storage), 'Adobe PageMaker'],
1119
+ 'application/x-pak' => [%w(pak), %w(), 'PAK archive'],
1120
+ 'application/x-par2' => [%w(par2 par2), %w(), 'Parchive archive'],
1121
+ 'application/x-partial-download' => [%w(crdownload part wkdownload), %w(), 'Partially downloaded file'],
1122
+ 'application/x-pc-engine-rom' => [%w(pce), %w(), 'PC Engine ROM'],
1123
+ 'application/x-perl' => [%w(al perl pl pl pm pod t), %w(application/x-executable text/plain), 'Perl script'],
1124
+ 'application/x-php' => [%w(php php3 php4 php5 phps), %w(text/plain), 'PHP script'],
1125
+ 'application/x-pkcs12' => [%w(p12 pfx), %w(), 'PKCS#12 certificate bundle'],
1126
+ 'application/x-pkcs7-certificates' => [%w(p7b spc), %w(), 'PKCS#7 certificate bundle'],
1127
+ 'application/x-planperfect' => [%w(pln), %w(), 'PlanPerfect spreadsheet'],
1128
+ 'application/x-pocket-word' => [%w(psw), %w(), 'Pocket Word document'],
1129
+ 'application/x-pw' => [%w(pw), %w(), 'Pathetic Writer document'],
1130
+ 'application/x-python-bytecode' => [%w(pyc pyo), %w(), 'Python bytecode'],
1131
+ 'application/x-qpress' => [%w(qp), %w(), 'Qpress archive'],
1132
+ 'application/x-qtiplot' => [%w(qti qti.gz), %w(text/plain), 'QtiPlot document'],
1133
+ 'application/x-quattropro' => [%w(wb1 wb2 wb3), %w(), 'Quattro Pro spreadsheet'],
1134
+ 'application/x-quicktime-media-link' => [%w(qtl), %w(video/quicktime), 'QuickTime metalink playlist'],
1135
+ 'application/x-qw' => [%w(qif), %w(), 'Quicken document'],
1136
+ 'application/x-rar' => [%w(rar), %w(), 'RAR archive'],
1137
+ 'application/x-raw-disk-image' => [%w(img raw-disk-image), %w(), 'Raw disk image'],
1138
+ 'application/x-raw-disk-image-xz-compressed' => [%w(img.xz raw-disk-image.xz), %w(application/x-xz), 'Raw disk image (XZ-compressed)'],
1139
+ 'application/x-rpm' => [%w(rpm), %w(), 'RPM package'],
1140
+ 'application/x-ruby' => [%w(rb), %w(application/x-executable text/plain), 'Ruby script'],
1141
+ 'application/x-sami' => [%w(sami smi), %w(text/plain), 'SAMI subtitles'],
1142
+ 'application/x-shar' => [%w(shar), %w(), 'shell archive'],
1143
+ 'application/x-shared-library-la' => [%w(la), %w(text/plain), 'libtool shared library'],
1144
+ 'application/x-sharedlib' => [%w(so), %w(), 'shared library'],
1145
+ 'application/x-shellscript' => [%w(sh), %w(application/x-executable text/plain), 'shell script'],
1146
+ 'application/x-shorten' => [%w(shn), %w(), 'Shorten audio'],
1147
+ 'application/x-siag' => [%w(siag), %w(), 'Siag spreadsheet'],
1148
+ 'application/x-smaf' => [%w(mmf smaf), %w(), 'SMAF audio'],
1149
+ 'application/x-sms-rom' => [%w(gg sms), %w(), 'Sega Master System/Game Gear ROM'],
1150
+ 'application/x-source-rpm' => [%w(spm src.rpm), %w(application/x-rpm), 'Source RPM package'],
1151
+ 'application/x-spss-por' => [%w(por), %w(), 'SPSS Portable Data File'],
1152
+ 'application/x-spss-sav' => [%w(sav zsav), %w(), 'SPSS Data File'],
1153
+ 'application/x-stuffit' => [%w(sit), %w(), 'StuffIt archive'],
1154
+ 'application/x-subrip' => [%w(srt), %w(text/plain), 'SubRip subtitles'],
1155
+ 'application/x-sv4cpio' => [%w(sv4cpio), %w(), 'SV4 CPIO archive'],
1156
+ 'application/x-sv4crc' => [%w(sv4crc), %w(), 'SV4 CPIO archive (with CRC)'],
1157
+ 'application/x-t602' => [%w(602), %w(), 'T602 document'],
1158
+ 'application/x-tar' => [%w(gem gtar tar), %w(), 'Tar archive'],
1159
+ 'application/x-tarz' => [%w(tar.z taz), %w(application/x-compress), 'Tar archive (compressed)'],
1160
+ 'application/x-tex-gf' => [%w(gf), %w(), 'generic font file'],
1161
+ 'application/x-tex-pk' => [%w(pk), %w(), 'packed font file'],
1162
+ 'application/x-tgif' => [%w(obj), %w(), 'TGIF document'],
1163
+ 'application/x-theme' => [%w(theme), %w(application/x-desktop), 'theme'],
1164
+ 'application/x-trash' => [%w(bak old sik), %w(), 'backup file'],
1165
+ 'application/x-trig' => [%w(trig), %w(text/plain), 'TriG RDF document'],
1166
+ 'application/x-troff-man' => [%w(man), %w(text/plain), 'Troff document (with manpage macros)'],
1167
+ 'application/x-tzo' => [%w(tar.lzo tzo), %w(application/x-lzop), 'Tar archive (LZO-compressed)'],
1168
+ 'application/x-ufraw' => [%w(ufraw), %w(text/xml), 'UFRaw ID image'],
1169
+ 'application/x-ustar' => [%w(ustar), %w(), 'Ustar archive'],
1170
+ 'application/x-wais-source' => [%w(src), %w(text/plain), 'WAIS source code'],
1171
+ 'application/x-wii-rom' => [%w(iso), %w(), 'Wii disc image'],
1172
+ 'application/x-windows-themepack' => [%w(themepack), %w(application/vnd.ms-cab-compressed), 'Microsoft Windows theme pack'],
1173
+ 'application/x-wpg' => [%w(wpg), %w(), 'WordPerfect/Drawperfect image'],
1174
+ 'application/x-wwf' => [%w(wwf), %w(application/pdf), 'WWF document'],
1175
+ 'application/x-x509-ca-cert' => [%w(cert crt der pem), %w(), 'DER/PEM/Netscape-encoded X.509 certificate'],
1176
+ 'application/x-xbel' => [%w(xbel), %w(application/xml), 'XBEL bookmarks'],
1177
+ 'application/x-xliff' => [%w(xlf xliff), %w(application/xml), 'XLIFF translation file'],
1178
+ 'application/x-xpinstall' => [%w(xpi), %w(application/zip), 'XPInstall installer module'],
1179
+ 'application/x-xz' => [%w(xz), %w(), 'XZ archive'],
1180
+ 'application/x-xz-compressed-tar' => [%w(tar.xz txz), %w(application/x-xz), 'Tar archive (XZ-compressed)'],
1181
+ 'application/x-xzpdf' => [%w(pdf.xz), %w(application/x-xz), 'PDF document (XZ-compressed)'],
1182
+ 'application/x-yaml' => [%w(yaml yml), %w(text/plain), 'YAML document'],
1183
+ 'application/x-zip-compressed-fb2' => [%w(fb2.zip), %w(application/zip), 'Compressed FictionBook document'],
1184
+ 'application/x-zoo' => [%w(zoo), %w(), 'Zoo archive'],
1185
+ 'application/xhtml+xml' => [%w(xhtml), %w(application/xml), 'XHTML page'],
1186
+ 'application/xml' => [%w(rng xbl xml xsd), %w(text/plain), 'XML document'],
1187
+ 'application/xml-dtd' => [%w(dtd), %w(text/plain), 'DTD file'],
1188
+ 'application/xml-external-parsed-entity' => [%w(ent), %w(application/xml), 'XML entities document'],
1189
+ 'application/xslt+xml' => [%w(xsl xslt), %w(application/xml), 'XSLT stylesheet'],
1190
+ 'application/xspf+xml' => [%w(xspf), %w(application/xml), 'XSPF playlist'],
1191
+ 'application/zip' => [%w(zip), %w(), 'Zip archive'],
1192
+ 'application/zlib' => [%w(zz), %w(), 'Zlib archive'],
1193
+ 'audio/AMR' => [%w(amr), %w(), 'AMR audio'],
1194
+ 'audio/AMR-WB' => [%w(awb), %w(), 'AMR-WB audio'],
1195
+ 'audio/aac' => [%w(aac), %w(), 'AAC audio'],
1196
+ 'audio/ac3' => [%w(ac3), %w(), 'Dolby Digital audio'],
1197
+ 'audio/annodex' => [%w(axa), %w(application/annodex), 'Annodex Audio'],
1198
+ 'audio/basic' => [%w(au snd), %w(), 'ULAW (Sun) audio'],
1199
+ 'audio/flac' => [%w(flac), %w(), 'FLAC audio'],
1200
+ 'audio/midi' => [%w(kar mid midi), %w(), 'MIDI audio'],
1201
+ 'audio/mp2' => [%w(mp2), %w(), 'MP2 audio'],
1202
+ 'audio/mp4' => [%w(f4a m4a), %w(), 'MPEG-4 audio'],
1203
+ 'audio/mpeg' => [%w(mp3 mpga), %w(), 'MP3 audio'],
1204
+ 'audio/ogg' => [%w(oga ogg opus), %w(application/ogg), 'Ogg Audio'],
1205
+ 'audio/prs.sid' => [%w(psid sid), %w(), 'Commodore 64 audio'],
1206
+ 'audio/vnd.dts' => [%w(dts), %w(), 'DTS audio'],
1207
+ 'audio/vnd.dts.hd' => [%w(dtshd), %w(audio/vnd.dts), 'DTSHD audio'],
1208
+ 'audio/vnd.rn-realaudio' => [%w(ra rax), %w(), 'RealAudio document'],
1209
+ 'audio/x-aifc' => [%w(aifc aiffc), %w(application/x-iff), 'AIFC audio'],
1210
+ 'audio/x-aiff' => [%w(aif aiff), %w(application/x-iff), 'AIFF/Amiga/Mac audio'],
1211
+ 'audio/x-amzxml' => [%w(amz), %w(), 'AmazonMP3 download file'],
1212
+ 'audio/x-ape' => [%w(ape), %w(), "Monkey's audio"],
1213
+ 'audio/x-flac+ogg' => [%w(oga ogg), %w(audio/ogg), 'Ogg FLAC audio'],
1214
+ 'audio/x-gsm' => [%w(gsm), %w(), 'GSM 06.10 audio'],
1215
+ 'audio/x-iriver-pla' => [%w(pla), %w(), 'iRiver Playlist'],
1216
+ 'audio/x-it' => [%w(it), %w(), 'Impulse Tracker audio'],
1217
+ 'audio/x-m4b' => [%w(f4b m4b), %w(audio/mp4), 'MPEG-4 audio book'],
1218
+ 'audio/x-matroska' => [%w(mka), %w(application/x-matroska), 'Matroska audio'],
1219
+ 'audio/x-minipsf' => [%w(minipsf), %w(audio/x-psf), 'MiniPSF audio'],
1220
+ 'audio/x-mo3' => [%w(mo3), %w(), 'compressed Tracker audio'],
1221
+ 'audio/x-mod' => [%w(669 m15 med mod mtm ult uni), %w(), 'Amiga SoundTracker audio'],
1222
+ 'audio/x-mpegurl' => [%w(m3u m3u8 vlc), %w(text/plain), 'MP3 audio (streamed)'],
1223
+ 'audio/x-ms-asx' => [%w(asx wax wmx wvx), %w(), 'Microsoft ASX playlist'],
1224
+ 'audio/x-ms-wma' => [%w(wma), %w(application/vnd.ms-asf), 'Windows Media audio'],
1225
+ 'audio/x-musepack' => [%w(mp+ mpc mpp), %w(), 'Musepack audio'],
1226
+ 'audio/x-opus+ogg' => [%w(opus), %w(audio/ogg), 'Opus audio'],
1227
+ 'audio/x-psf' => [%w(psf), %w(), 'PSF audio'],
1228
+ 'audio/x-psflib' => [%w(psflib), %w(audio/x-psf), 'PSFlib audio library'],
1229
+ 'audio/x-s3m' => [%w(s3m), %w(), 'Scream Tracker 3 audio'],
1230
+ 'audio/x-scpls' => [%w(pls), %w(), 'MP3 ShoutCast playlist'],
1231
+ 'audio/x-speex' => [%w(spx), %w(), 'Speex audio'],
1232
+ 'audio/x-speex+ogg' => [%w(oga ogg), %w(audio/ogg), 'Ogg Speex audio'],
1233
+ 'audio/x-stm' => [%w(stm), %w(), 'Scream Tracker audio'],
1234
+ 'audio/x-tta' => [%w(tta), %w(), 'TrueAudio audio'],
1235
+ 'audio/x-voc' => [%w(voc), %w(), 'VOC audio'],
1236
+ 'audio/x-vorbis+ogg' => [%w(oga ogg), %w(audio/ogg), 'Ogg Vorbis audio'],
1237
+ 'audio/x-wav' => [%w(wav), %w(), 'WAV audio'],
1238
+ 'audio/x-wavpack' => [%w(wv wvp), %w(), 'WavPack audio'],
1239
+ 'audio/x-wavpack-correction' => [%w(wvc), %w(), 'WavPack audio correction file'],
1240
+ 'audio/x-xi' => [%w(xi), %w(), 'Scream Tracker instrument'],
1241
+ 'audio/x-xm' => [%w(xm), %w(), 'FastTracker II audio'],
1242
+ 'audio/x-xmf' => [%w(xmf), %w(), 'XMF audio'],
1243
+ 'image/bmp' => [%w(bmp), %w(), 'Windows BMP image'],
1244
+ 'image/cgm' => [%w(cgm), %w(), 'Computer Graphics Metafile'],
1245
+ 'image/fax-g3' => [%w(g3), %w(), 'CCITT G3 fax'],
1246
+ 'image/fits' => [%w(fits), %w(), 'FITS document'],
1247
+ 'image/gif' => [%w(gif), %w(), 'GIF image'],
1248
+ 'image/ief' => [%w(ief), %w(), 'IEF image'],
1249
+ 'image/jp2' => [%w(jp2 jpf jpx), %w(), 'JPEG-2000 image'],
1250
+ 'image/jpeg' => [%w(jpe jpeg jpg), %w(), 'JPEG image'],
1251
+ 'image/openraster' => [%w(ora), %w(), 'OpenRaster archiving image'],
1252
+ 'image/png' => [%w(png), %w(), 'PNG image'],
1253
+ 'image/rle' => [%w(rle), %w(), 'Run Length Encoded bitmap image'],
1254
+ 'image/svg+xml' => [%w(svg), %w(application/xml), 'SVG image'],
1255
+ 'image/svg+xml-compressed' => [%w(svgz), %w(application/gzip), 'compressed SVG image'],
1256
+ 'image/tiff' => [%w(tif tiff), %w(), 'TIFF image'],
1257
+ 'image/vnd.adobe.photoshop' => [%w(psd), %w(), 'Photoshop image'],
1258
+ 'image/vnd.djvu' => [%w(djv djvu), %w(), 'DjVu image'],
1259
+ 'image/vnd.dwg' => [%w(dwg), %w(), 'AutoCAD image'],
1260
+ 'image/vnd.dxf' => [%w(dxf), %w(), 'DXF vector image'],
1261
+ 'image/vnd.microsoft.icon' => [%w(ico), %w(), 'Windows icon'],
1262
+ 'image/vnd.ms-modi' => [%w(mdi), %w(), 'Microsoft Document Imaging format'],
1263
+ 'image/vnd.rn-realpix' => [%w(rp), %w(), 'RealPix document'],
1264
+ 'image/vnd.wap.wbmp' => [%w(wbmp), %w(), 'WBMP image'],
1265
+ 'image/webp' => [%w(webp), %w(), 'WebP image'],
1266
+ 'image/x-3ds' => [%w(3ds), %w(), '3D Studio image'],
1267
+ 'image/x-adobe-dng' => [%w(dng), %w(image/tiff image/x-dcraw), 'Adobe DNG negative'],
1268
+ 'image/x-applix-graphics' => [%w(ag), %w(), 'Applix Graphics image'],
1269
+ 'image/x-bzeps' => [%w(eps.bz2 epsf.bz2 epsi.bz2), %w(application/x-bzip), 'EPS image (bzip-compressed)'],
1270
+ 'image/x-canon-cr2' => [%w(cr2), %w(image/tiff image/x-dcraw), 'Canon CR2 raw image'],
1271
+ 'image/x-canon-crw' => [%w(crw), %w(image/x-dcraw), 'Canon CRW raw image'],
1272
+ 'image/x-cmu-raster' => [%w(ras), %w(), 'CMU raster image'],
1273
+ 'image/x-compressed-xcf' => [%w(xcf.bz2 xcf.gz), %w(), 'compressed GIMP image'],
1274
+ 'image/x-dds' => [%w(dds), %w(), 'DirectDraw surface'],
1275
+ 'image/x-emf' => [%w(emf), %w(), 'EMF image'],
1276
+ 'image/x-eps' => [%w(eps epsf epsi), %w(application/postscript), 'EPS image'],
1277
+ 'image/x-exr' => [%w(exr), %w(), 'EXR image'],
1278
+ 'image/x-fuji-raf' => [%w(raf), %w(image/x-dcraw), 'Fuji RAF raw image'],
1279
+ 'image/x-gzeps' => [%w(eps.gz epsf.gz epsi.gz), %w(application/gzip), 'EPS image (gzip-compressed)'],
1280
+ 'image/x-icns' => [%w(icns), %w(), 'MacOS X icon'],
1281
+ 'image/x-ilbm' => [%w(iff ilbm lbm), %w(application/x-iff), 'ILBM image'],
1282
+ 'image/x-jng' => [%w(jng), %w(), 'JNG image'],
1283
+ 'image/x-kodak-dcr' => [%w(dcr), %w(image/tiff image/x-dcraw), 'Kodak DCR raw image'],
1284
+ 'image/x-kodak-k25' => [%w(k25), %w(image/tiff image/x-dcraw), 'Kodak K25 raw image'],
1285
+ 'image/x-kodak-kdc' => [%w(kdc), %w(image/tiff image/x-dcraw), 'Kodak KDC raw image'],
1286
+ 'image/x-lwo' => [%w(lwo lwob), %w(), 'LightWave object'],
1287
+ 'image/x-lws' => [%w(lws), %w(), 'LightWave scene'],
1288
+ 'image/x-macpaint' => [%w(pntg), %w(), 'MacPaint Bitmap image'],
1289
+ 'image/x-minolta-mrw' => [%w(mrw), %w(image/x-dcraw), 'Minolta MRW raw image'],
1290
+ 'image/x-msod' => [%w(msod), %w(), 'Office drawing'],
1291
+ 'image/x-nikon-nef' => [%w(nef), %w(image/tiff image/x-dcraw), 'Nikon NEF raw image'],
1292
+ 'image/x-olympus-orf' => [%w(orf), %w(image/x-dcraw), 'Olympus ORF raw image'],
1293
+ 'image/x-panasonic-raw' => [%w(raw), %w(image/x-dcraw), 'Panasonic raw image'],
1294
+ 'image/x-panasonic-raw2' => [%w(rw2), %w(image/x-dcraw), 'Panasonic raw2 image'],
1295
+ 'image/x-pcx' => [%w(pcx), %w(), 'PCX image'],
1296
+ 'image/x-pentax-pef' => [%w(pef), %w(image/tiff image/x-dcraw), 'Pentax PEF raw image'],
1297
+ 'image/x-photo-cd' => [%w(pcd), %w(), 'PCD image'],
1298
+ 'image/x-pict' => [%w(pct pict pict1 pict2), %w(), 'Macintosh Quickdraw/PICT drawing'],
1299
+ 'image/x-portable-anymap' => [%w(pnm), %w(), 'PNM image'],
1300
+ 'image/x-portable-bitmap' => [%w(pbm), %w(image/x-portable-anymap), 'PBM image'],
1301
+ 'image/x-portable-graymap' => [%w(pgm), %w(image/x-portable-anymap), 'PGM image'],
1302
+ 'image/x-portable-pixmap' => [%w(ppm), %w(image/x-portable-anymap), 'PPM image'],
1303
+ 'image/x-quicktime' => [%w(qif qtif), %w(), 'QuickTime image'],
1304
+ 'image/x-rgb' => [%w(rgb), %w(), 'RGB image'],
1305
+ 'image/x-sgi' => [%w(sgi), %w(), 'SGI image'],
1306
+ 'image/x-sigma-x3f' => [%w(x3f), %w(image/x-dcraw), 'Sigma X3F raw image'],
1307
+ 'image/x-skencil' => [%w(sk sk1), %w(), 'Skencil document'],
1308
+ 'image/x-sony-arw' => [%w(arw), %w(image/tiff image/x-dcraw), 'Sony ARW raw image'],
1309
+ 'image/x-sony-sr2' => [%w(sr2), %w(image/tiff image/x-dcraw), 'Sony SR2 raw image'],
1310
+ 'image/x-sony-srf' => [%w(srf), %w(image/tiff image/x-dcraw), 'Sony SRF raw image'],
1311
+ 'image/x-sun-raster' => [%w(sun), %w(), 'Sun raster image'],
1312
+ 'image/x-tga' => [%w(icb tga tpic vda vst), %w(), 'TGA image'],
1313
+ 'image/x-win-bitmap' => [%w(cur), %w(), 'Windows cursor'],
1314
+ 'image/x-wmf' => [%w(wmf), %w(), 'WMF image'],
1315
+ 'image/x-xbitmap' => [%w(xbm), %w(), 'XBM image'],
1316
+ 'image/x-xcf' => [%w(xcf), %w(), 'GIMP image'],
1317
+ 'image/x-xfig' => [%w(fig), %w(), 'XFig image'],
1318
+ 'image/x-xpixmap' => [%w(xpm), %w(), 'XPM image'],
1319
+ 'image/x-xwindowdump' => [%w(xwd), %w(), 'X window image'],
1320
+ 'message/rfc822' => [%w(eml), %w(text/plain), 'email message'],
1321
+ 'model/vrml' => [%w(vrm vrml wrl), %w(text/plain), 'VRML document'],
1322
+ 'text/cache-manifest' => [%w(manifest), %w(text/plain), 'Web application cache manifest'],
1323
+ 'text/calendar' => [%w(ics vcs), %w(text/plain), 'VCS/ICS calendar'],
1324
+ 'text/css' => [%w(css), %w(text/plain), 'CSS stylesheet'],
1325
+ 'text/csv' => [%w(csv), %w(text/plain), 'CSV document'],
1326
+ 'text/html' => [%w(htm html), %w(text/plain), 'HTML document'],
1327
+ 'text/markdown' => [%w(markdown md mkd), %w(text/plain), 'Markdown document'],
1328
+ 'text/plain' => [%w(asc txt), %w(), 'plain text document'],
1329
+ 'text/richtext' => [%w(rtx), %w(text/plain), 'rich text document'],
1330
+ 'text/sgml' => [%w(sgm sgml), %w(text/plain), 'SGML document'],
1331
+ 'text/spreadsheet' => [%w(slk sylk), %w(text/plain), 'spreadsheet interchange document'],
1332
+ 'text/tab-separated-values' => [%w(tsv), %w(text/plain), 'TSV document'],
1333
+ 'text/troff' => [%w(roff t tr), %w(text/plain), 'Troff document'],
1334
+ 'text/vcard' => [%w(gcrd vcard vcf vct), %w(text/plain), 'electronic business card'],
1335
+ 'text/vnd.graphviz' => [%w(dot gv), %w(), 'Graphviz DOT graph'],
1336
+ 'text/vnd.rn-realtext' => [%w(rt), %w(), 'RealText document'],
1337
+ 'text/vnd.sun.j2me.app-descriptor' => [%w(jad), %w(), 'JAD document'],
1338
+ 'text/vnd.trolltech.linguist' => [%w(ts), %w(application/xml), 'message catalog'],
1339
+ 'text/vnd.wap.wml' => [%w(wml), %w(application/xml), 'WML document'],
1340
+ 'text/vnd.wap.wmlscript' => [%w(wmls), %w(), 'WMLScript program'],
1341
+ 'text/vtt' => [%w(vtt), %w(text/plain), 'WebVTT subtitles'],
1342
+ 'text/x-adasrc' => [%w(adb ads), %w(text/plain), 'Ada source code'],
1343
+ 'text/x-bibtex' => [%w(bib), %w(text/plain), 'BibTeX document'],
1344
+ 'text/x-c++hdr' => [%w(h++ hh hp hpp hxx), %w(text/x-chdr), 'C++ header'],
1345
+ 'text/x-c++src' => [%w(c c++ cc cpp cxx), %w(text/x-csrc), 'C++ source code'],
1346
+ 'text/x-chdr' => [%w(h), %w(text/x-csrc), 'C header'],
1347
+ 'text/x-cmake' => [%w(cmake), %w(text/plain), 'CMake source code'],
1348
+ 'text/x-cobol' => [%w(cbl cob), %w(text/plain), 'COBOL source file'],
1349
+ 'text/x-csharp' => [%w(cs), %w(text/x-csrc), 'C# source code'],
1350
+ 'text/x-csrc' => [%w(c), %w(text/plain), 'C source code'],
1351
+ 'text/x-dcl' => [%w(dcl), %w(text/plain), 'DCL script'],
1352
+ 'text/x-dsl' => [%w(dsl), %w(text/plain), 'DSSSL document'],
1353
+ 'text/x-dsrc' => [%w(d di), %w(text/x-csrc), 'D source code'],
1354
+ 'text/x-eiffel' => [%w(e eif), %w(text/plain), 'Eiffel source code'],
1355
+ 'text/x-emacs-lisp' => [%w(el), %w(text/plain), 'Emacs Lisp source code'],
1356
+ 'text/x-erlang' => [%w(erl), %w(text/plain), 'Erlang source code'],
1357
+ 'text/x-fortran' => [%w(f f90 f95 for), %w(text/plain), 'Fortran source code'],
1358
+ 'text/x-genie' => [%w(gs), %w(text/plain), 'Genie source code'],
1359
+ 'text/x-gettext-translation' => [%w(po), %w(text/plain), 'translation file'],
1360
+ 'text/x-gettext-translation-template' => [%w(pot), %w(text/plain), 'translation template'],
1361
+ 'text/x-go' => [%w(go), %w(text/plain), 'Go source code'],
1362
+ 'text/x-google-video-pointer' => [%w(gvp), %w(), 'Google Video Pointer'],
1363
+ 'text/x-haskell' => [%w(hs), %w(text/plain), 'Haskell source code'],
1364
+ 'text/x-iMelody' => [%w(ime imy), %w(), 'iMelody ringtone'],
1365
+ 'text/x-idl' => [%w(idl), %w(text/plain), 'IDL document'],
1366
+ 'text/x-iptables' => [%w(iptables), %w(text/plain), 'iptables configuration file'],
1367
+ 'text/x-java' => [%w(java), %w(text/x-csrc), 'Java source code'],
1368
+ 'text/x-ldif' => [%w(ldif), %w(text/plain), 'LDIF address book'],
1369
+ 'text/x-lilypond' => [%w(ly), %w(text/plain), 'Lilypond music sheet'],
1370
+ 'text/x-literate-haskell' => [%w(lhs), %w(text/plain), 'LHS source code'],
1371
+ 'text/x-log' => [%w(log), %w(text/plain), 'application log'],
1372
+ 'text/x-lua' => [%w(lua), %w(application/x-executable text/plain), 'Lua script'],
1373
+ 'text/x-makefile' => [%w(mak mk), %w(text/plain), 'Makefile'],
1374
+ 'text/x-matlab' => [%w(m), %w(text/plain), 'MATLAB script/function'],
1375
+ 'text/x-microdvd' => [%w(sub), %w(text/plain), 'MicroDVD subtitles'],
1376
+ 'text/x-moc' => [%w(moc), %w(text/plain), 'Qt MOC file'],
1377
+ 'text/x-modelica' => [%w(mo), %w(text/plain), 'Modelica model'],
1378
+ 'text/x-mof' => [%w(mof), %w(text/x-csrc), 'Managed Object Format'],
1379
+ 'text/x-mpsub' => [%w(sub), %w(text/plain), 'MPSub subtitles'],
1380
+ 'text/x-mrml' => [%w(mrl mrml), %w(), 'MRML playlist'],
1381
+ 'text/x-ms-regedit' => [%w(reg), %w(text/plain), 'Windows Registry extract'],
1382
+ 'text/x-mup' => [%w(mup not), %w(text/plain), 'Mup publication'],
1383
+ 'text/x-nfo' => [%w(nfo), %w(text/x-readme), 'NFO document'],
1384
+ 'text/x-objcsrc' => [%w(m), %w(text/x-csrc), 'Objective-C source code'],
1385
+ 'text/x-ocaml' => [%w(ml mli), %w(), 'OCaml source code'],
1386
+ 'text/x-ocl' => [%w(ocl), %w(text/plain), 'OCL file'],
1387
+ 'text/x-ooc' => [%w(ooc), %w(text/x-csrc), 'OOC source code'],
1388
+ 'text/x-opml+xml' => [%w(opml), %w(application/xml), 'OPML syndication feed'],
1389
+ 'text/x-pascal' => [%w(p pas), %w(text/plain), 'Pascal source code'],
1390
+ 'text/x-patch' => [%w(diff patch), %w(text/plain), 'differences between files'],
1391
+ 'text/x-python' => [%w(py pyx wsgi), %w(application/x-executable text/plain), 'Python script'],
1392
+ 'text/x-qml' => [%w(qml qmlproject qmltypes), %w(), 'Qt Markup Language file'],
1393
+ 'text/x-reject' => [%w(rej), %w(text/plain), 'rejected patch'],
1394
+ 'text/x-rpm-spec' => [%w(spec), %w(text/plain), 'RPM spec file'],
1395
+ 'text/x-scala' => [%w(scala), %w(text/plain), 'Scala source code'],
1396
+ 'text/x-scheme' => [%w(scm ss), %w(text/plain), 'Scheme source code'],
1397
+ 'text/x-setext' => [%w(etx), %w(text/plain), 'Setext document'],
1398
+ 'text/x-ssa' => [%w(ass ssa), %w(text/plain), 'SSA subtitles'],
1399
+ 'text/x-subviewer' => [%w(sub), %w(text/plain), 'SubViewer subtitles'],
1400
+ 'text/x-svhdr' => [%w(svh), %w(text/x-verilog), 'SystemVerilog header'],
1401
+ 'text/x-svsrc' => [%w(sv), %w(text/x-verilog), 'SystemVerilog source code'],
1402
+ 'text/x-tcl' => [%w(tcl tk), %w(text/plain), 'Tcl script'],
1403
+ 'text/x-tex' => [%w(cls dtx ins latex ltx sty tex), %w(text/plain), 'TeX document'],
1404
+ 'text/x-texinfo' => [%w(texi texinfo), %w(text/plain), 'TeXInfo document'],
1405
+ 'text/x-troff-me' => [%w(me), %w(text/plain), 'Troff ME input document'],
1406
+ 'text/x-troff-mm' => [%w(mm), %w(text/plain), 'Troff MM input document'],
1407
+ 'text/x-troff-ms' => [%w(ms), %w(text/plain), 'Troff MS input document'],
1408
+ 'text/x-txt2tags' => [%w(t2t), %w(text/plain), 'txt2tags document'],
1409
+ 'text/x-uil' => [%w(uil), %w(text/plain), 'X-Motif UIL table'],
1410
+ 'text/x-uuencode' => [%w(uue), %w(text/plain), 'uuencoded file'],
1411
+ 'text/x-vala' => [%w(vala vapi), %w(text/x-csrc), 'Vala source code'],
1412
+ 'text/x-verilog' => [%w(v), %w(text/plain), 'Verilog source code'],
1413
+ 'text/x-vhdl' => [%w(vhd vhdl), %w(text/plain), 'VHDL source code'],
1414
+ 'text/x-xmi' => [%w(xmi), %w(application/xml), 'XMI file'],
1415
+ 'text/x-xslfo' => [%w(fo xslfo), %w(application/xml), 'XSL FO file'],
1416
+ 'video/3gpp' => [%w(3ga 3gp 3gpp), %w(video/mp4), '3GPP multimedia file'],
1417
+ 'video/3gpp2' => [%w(3g2 3gp2 3gpp2), %w(video/mp4), '3GPP2 multimedia file'],
1418
+ 'video/annodex' => [%w(axv), %w(application/annodex), 'Annodex Video'],
1419
+ 'video/dv' => [%w(dv), %w(), 'DV video'],
1420
+ 'video/mp2t' => [%w(bdm bdmv clpi cpi m2t m2ts mpl mpls mts ts), %w(), 'MPEG-2 transport stream'],
1421
+ 'video/mp4' => [%w(f4v lrv m4v mp4), %w(), 'MPEG-4 video'],
1422
+ 'video/mpeg' => [%w(mp2 mpe mpeg mpg vob), %w(), 'MPEG video'],
1423
+ 'video/ogg' => [%w(ogg ogv), %w(application/ogg), 'Ogg Video'],
1424
+ 'video/quicktime' => [%w(moov mov qt qtvr), %w(), 'QuickTime video'],
1425
+ 'video/vnd.mpegurl' => [%w(m1u m4u mxu), %w(text/plain), 'MPEG video (streamed)'],
1426
+ 'video/vnd.rn-realvideo' => [%w(rv rvx), %w(), 'RealVideo document'],
1427
+ 'video/vnd.vivo' => [%w(viv vivo), %w(), 'Vivo video'],
1428
+ 'video/webm' => [%w(webm), %w(), 'WebM video'],
1429
+ 'video/x-flic' => [%w(flc fli), %w(), 'FLIC animation'],
1430
+ 'video/x-flv' => [%w(flv), %w(), 'Flash video'],
1431
+ 'video/x-javafx' => [%w(fxm), %w(video/x-flv), 'JavaFX video'],
1432
+ 'video/x-matroska' => [%w(mkv), %w(application/x-matroska), 'Matroska video'],
1433
+ 'video/x-matroska-3d' => [%w(mk3d), %w(application/x-matroska), 'Matroska 3D video'],
1434
+ 'video/x-mng' => [%w(mng), %w(), 'MNG animation'],
1435
+ 'video/x-ms-wmv' => [%w(wmv), %w(application/vnd.ms-asf), 'Windows Media video'],
1436
+ 'video/x-msvideo' => [%w(avf avi divx), %w(), 'AVI video'],
1437
+ 'video/x-nsv' => [%w(nsv), %w(), 'NullSoft video'],
1438
+ 'video/x-ogm+ogg' => [%w(ogm), %w(video/ogg), 'OGM video'],
1439
+ 'video/x-sgi-movie' => [%w(movie), %w(), 'SGI video'],
1440
+ 'video/x-theora+ogg' => [%w(ogg), %w(video/ogg), 'Ogg Theora video'],
1441
+ 'x-epoc/x-sisx-app' => [%w(sisx), %w(), 'SISX package'],
1442
+ }
1443
+ # @private
1444
+ # :nodoc:
1445
+ MAGIC = [
1446
+ ['application/vnd.stardivision.writer', [[2089, 'StarWriter']]],
1447
+ ['application/x-docbook+xml', [[0, '<?xml', [[0..100, '-//OASIS//DTD DocBook XML'], [0..100, '-//KDE//DTD DocBook XML']]]]],
1448
+ ['image/x-eps', [[0, '%!', [[15, 'EPS']]], [0, "\004%!", [[16, 'EPS']]], [0, "\305\320\323\306"]]],
1449
+ ['application/prs.plucker', [[60, 'DataPlkr']]],
1450
+ ['application/vnd.corel-draw', []],
1451
+ ['application/x-fictionbook+xml', [[0..256, '<FictionBook']]],
1452
+ ['application/x-mobipocket-ebook', [[60, 'BOOKMOBI']]],
1453
+ ['application/x-mozilla-bookmarks', [[0..64, '<!DOCTYPE NETSCAPE-Bookmark-file-1>']]],
1454
+ ['application/x-nzb', [[0..256, '<nzb']]],
1455
+ ['application/x-pak', [[0, 'PACK']]],
1456
+ ['application/x-php', [[0..64, '<?php']]],
1457
+ ['application/x-xliff', [[0..256, '<xliff']]],
1458
+ ['application/x-zip-compressed-fb2', [[0, "PK\003\004", [[30..256, '.fb2']]]]],
1459
+ ['audio/x-flac+ogg', [[0, 'OggS', [[28, 'fLaC']]], [0, 'OggS', [[28, "\177FLAC"]]]]],
1460
+ ['audio/x-opus+ogg', [[0, 'OggS', [[28, 'OpusHead']]]]],
1461
+ ['audio/x-speex+ogg', [[0, 'OggS', [[28, 'Speex ']]]]],
1462
+ ['audio/x-vorbis+ogg', [[0, 'OggS', [[28, "\001vorbis"]]]]],
1463
+ ['image/svg+xml', [[0..256, '<!DOCTYPE svg'], [0..256, '<svg']]],
1464
+ ['image/x-kodak-kdc', [[242, 'EASTMAN KODAK COMPANY']]],
1465
+ ['image/x-niff', [[0, 'IIN1']]],
1466
+ ['text/x-qml', [[0..256, 'import Qt ']]],
1467
+ ['video/x-ogm+ogg', [[0, 'OggS', [[29, 'video']]]]],
1468
+ ['video/x-theora+ogg', [[0, 'OggS', [[28, "\200theora"]]]]],
1469
+ ['application/atom+xml', [[0..256, '<feed ']]],
1470
+ ['application/rss+xml', [[0..256, '<rss '], [0..256, '<RSS ']]],
1471
+ ['application/vnd.apple.mpegurl', [[0, '#EXTM3U', [[0..128, '#EXT-X-TARGETDURATION'], [0..128, '#EXT-X-STREAM-INF']]]]],
1472
+ ['text/x-opml+xml', [[0..256, '<opml ']]],
1473
+ ['application/msword', [[0, "1\276\000\000"], [0, 'PO^Q`'], [0, "\3767\000#"], [0, "\333\245-\000\000\000"], [2112, 'MSWordDoc'], [2108, 'MSWordDoc'], [2112, 'Microsoft Word document data'], [546, 'bjbj'], [546, 'jbjb']]],
1474
+ ['application/vnd.ms-wpl', [[0..256, '<?wpl']]],
1475
+ ['application/x-font-type1', [[0, 'LWFN'], [65, 'LWFN'], [0, '%!PS-AdobeFont-1.'], [6, '%!PS-AdobeFont-1.'], [0, '%!FontType1-1.'], [6, '%!FontType1-1.']]],
1476
+ ['application/x-karbon', [[0, "\037\213", [[10, 'KOffice', [[18, "application/x-karbon\004\006"]]]]], [0, "PK\003\004", [[30, 'mimetype', [[38, 'application/x-karbon']]]]]]],
1477
+ ['application/x-kchart', [[0, "\037\213", [[10, 'KOffice', [[18, "application/x-kchart\004\006"]]]]], [0, "PK\003\004", [[30, 'mimetype', [[38, 'application/x-kchart']]]]]]],
1478
+ ['application/x-kformula', [[0, "\037\213", [[10, 'KOffice', [[18, "application/x-kformula\004\006"]]]]], [0, "PK\003\004", [[30, 'mimetype', [[38, 'application/x-kformula']]]]]]],
1479
+ ['application/x-killustrator', [[0, "\037\213", [[10, 'KOffice', [[18, "application/x-killustrator\004\006"]]]]]]],
1480
+ ['application/x-kivio', [[0, "\037\213", [[10, 'KOffice', [[18, "application/x-kivio\004\006"]]]]], [0, "PK\003\004", [[30, 'mimetype', [[38, 'application/x-kivio']]]]]]],
1481
+ ['application/x-kontour', [[0, "\037\213", [[10, 'KOffice', [[18, "application/x-kontour\004\006"]]]]], [0, "PK\003\004", [[30, 'mimetype', [[38, 'application/x-kontour']]]]]]],
1482
+ ['application/x-kpresenter', [[0, "\037\213", [[10, 'KOffice', [[18, "application/x-kpresenter\004\006"]]]]], [0, "PK\003\004", [[30, 'mimetype', [[38, 'application/x-kpresenter']]]]]]],
1483
+ ['application/x-krita', [[0, "\037\213", [[10, 'KOffice', [[18, "application/x-krita\004\006"]]]]], [0, "PK\003\004", [[30, 'mimetype', [[38, 'application/x-krita']]]]]]],
1484
+ ['application/x-kspread', [[0, "\037\213", [[10, 'KOffice', [[18, "application/x-kspread\004\006"]]]]], [0, "PK\003\004", [[30, 'mimetype', [[38, 'application/x-kspread']]]]]]],
1485
+ ['application/x-kword', [[0, "\037\213", [[10, 'KOffice', [[18, "application/x-kword\004\006"]]]]], [0, "PK\003\004", [[30, 'mimetype', [[38, 'application/x-kword']]]]]]],
1486
+ ['application/x-quicktime-media-link', [[0, '<?xml', [[0..64, '<?quicktime']]], [0, 'RTSPtext'], [0, 'rtsptext'], [0, 'SMILtext']]],
1487
+ ['audio/vnd.dts.hd', [[0..18725, 'dX %']]],
1488
+ ['text/x-txt2tags', [[0, '%!postproc'], [0, '%!encoding']]],
1489
+ ['application/smil+xml', [[0..256, '<smil']]],
1490
+ ['audio/x-ms-asx', [[0, 'ASF '], [0..64, '<ASX'], [0..64, '<asx'], [0..64, '<Asx']]],
1491
+ ['application/annodex', [[0, 'OggS', [[28, "fishead\000", [[56..512, "CMML\000\000\000\000"]]]]]]],
1492
+ ['application/dicom', [[128, 'DICM']]],
1493
+ ['application/epub+zip', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/epub+zip'], [43, 'application/epub+zip']]]]]]],
1494
+ ['application/font-woff', [[0, 'wOFF']]],
1495
+ ['application/gnunet-directory', [[0, "\211GND\r\n\032\n"]]],
1496
+ ['application/gzip', [[0, "\037\213"]]],
1497
+ ['application/mac-binhex40', [[11, 'must be converted with BinHex']]],
1498
+ ['application/mathematica', [[0, '(************** Content-type: application/mathematica'], [100..256, 'This notebook can be used on any computer system with Mathematica'], [10..256, 'This is a Mathematica Notebook file. It contains ASCII text']]],
1499
+ ['application/metalink+xml', [[0..256, "<metalink version=\"3.0\""]]],
1500
+ ['application/metalink4+xml', [[0..256, "<metalink xmlns=\"urn"]]],
1501
+ ['application/mxf', [[0..256, "\006\016+4\002\005\001\001\r\001\002\001\001\002"]]],
1502
+ ['application/ogg', [[0, 'OggS']]],
1503
+ ['application/pdf', [[0..1024, '%PDF-']]],
1504
+ ['application/pgp-encrypted', [[0, '-----BEGIN PGP MESSAGE-----']]],
1505
+ ['application/pgp-keys', [[0, '-----BEGIN PGP PUBLIC KEY BLOCK-----'], [0, '-----BEGIN PGP PRIVATE KEY BLOCK-----'], [0, "\225\001"], [0, "\225\000"], [0, "\231\000"], [0, "\231\001"]]],
1506
+ ['application/pgp-signature', [[0, '-----BEGIN PGP SIGNATURE-----']]],
1507
+ ['application/postscript', [[0, "\004%!"], [0, '%!']]],
1508
+ ['application/rtf', [[0, "{\\rtf"]]],
1509
+ ['application/sdp', [[0, 'v=', [[0..256, 's=']]]]],
1510
+ ['application/vnd.adobe.flash.movie', [[0, 'FWS'], [0, 'CWS']]],
1511
+ ['application/vnd.debian.binary-package', [[0, '!<arch>', [[8, 'debian']]]]],
1512
+ ['application/vnd.emusic-emusic_package', [[0, 'nF7YLao']]],
1513
+ ['application/vnd.iccprofile', [[36, 'acsp']]],
1514
+ ['application/vnd.lotus-1-2-3', [[0, "\000\000\002\000\006\004\006\000\b\000\000\000\000\000"]]],
1515
+ ['application/vnd.lotus-wordpro', [[0, 'WordPro']]],
1516
+ ['application/vnd.ms-access', [[0, "\000\001\000\000Standard Jet DB"]]],
1517
+ ['application/vnd.ms-asf', [[0, "0&\262u"], [0, '[Reference]']]],
1518
+ ['application/vnd.ms-cab-compressed', [[0, "MSCF\000\000\000\000"]]],
1519
+ ['application/vnd.ms-excel', [[2080, 'Microsoft Excel 5.0 Worksheet']]],
1520
+ ['application/vnd.ms-tnef', [[0, "x\237>\""]]],
1521
+ ['application/vnd.oasis.opendocument.chart', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.oasis.opendocument.chart']]]]]]],
1522
+ ['application/vnd.oasis.opendocument.chart-template', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.oasis.opendocument.chart-template']]]]]]],
1523
+ ['application/vnd.oasis.opendocument.database', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.oasis.opendocument.base']]]]]]],
1524
+ ['application/vnd.oasis.opendocument.formula', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.oasis.opendocument.formula']]]]]]],
1525
+ ['application/vnd.oasis.opendocument.formula-template', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.oasis.opendocument.formula-template']]]]]]],
1526
+ ['application/vnd.oasis.opendocument.graphics', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.oasis.opendocument.graphics']]]]]]],
1527
+ ['application/vnd.oasis.opendocument.graphics-template', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.oasis.opendocument.graphics-template']]]]]]],
1528
+ ['application/vnd.oasis.opendocument.image', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.oasis.opendocument.image']]]]]]],
1529
+ ['application/vnd.oasis.opendocument.presentation', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.oasis.opendocument.presentation']]]]]]],
1530
+ ['application/vnd.oasis.opendocument.presentation-template', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.oasis.opendocument.presentation-template']]]]]]],
1531
+ ['application/vnd.oasis.opendocument.spreadsheet', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.oasis.opendocument.spreadsheet']]]]]]],
1532
+ ['application/vnd.oasis.opendocument.spreadsheet-template', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.oasis.opendocument.spreadsheet-template']]]]]]],
1533
+ ['application/vnd.oasis.opendocument.text', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.oasis.opendocument.text']]]]]]],
1534
+ ['application/vnd.oasis.opendocument.text-master', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.oasis.opendocument.text-master']]]]]]],
1535
+ ['application/vnd.oasis.opendocument.text-template', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.oasis.opendocument.text-template']]]]]]],
1536
+ ['application/vnd.oasis.opendocument.text-web', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.oasis.opendocument.text-web']]]]]]],
1537
+ ['application/vnd.rn-realmedia', [[0, '.RMF']]],
1538
+ ['application/vnd.symbian.install', [[8, "\031\004\000\020"]]],
1539
+ ['application/vnd.tcpdump.pcap', [[0, "\324\303\262\241"], [0, "\241\262\303\324"]]],
1540
+ ['application/vnd.wordperfect', [[1, 'WPC']]],
1541
+ ['application/winhlp', [[0, "?_\003\000"]]],
1542
+ ['application/x-7z-compressed', [[0, "7z\274\257'\034"]]],
1543
+ ['application/x-abiword', [[0..256, '<abiword'], [0..256, '<!DOCTYPE abiword']]],
1544
+ ['application/x-ace', [[7, '**ACE**']]],
1545
+ ['application/x-alz', [[0, 'ALZ']]],
1546
+ ['application/x-aportisdoc', [[60, 'TEXtREAd'], [60, 'TEXtTlDc']]],
1547
+ ['application/x-applix-spreadsheet', [[0, '*BEGIN SPREADSHEETS'], [0, '*BEGIN', [[7, 'SPREADSHEETS']]]]],
1548
+ ['application/x-applix-word', [[0, '*BEGIN', [[7, 'WORDS']]]]],
1549
+ ['application/x-arc', []],
1550
+ ['application/x-arj', [[0, "`\352"]]],
1551
+ ['application/x-awk', [[0, '#!/bin/gawk'], [0, '#! /bin/gawk'], [0, '#!/usr/bin/gawk'], [0, '#! /usr/bin/gawk'], [0, '#!/usr/local/bin/gawk'], [0, '#! /usr/local/bin/gawk'], [0, '#!/bin/awk'], [0, '#! /bin/awk'], [0, '#!/usr/bin/awk'], [0, '#! /usr/bin/awk']]],
1552
+ ['application/x-bittorrent', [[0, 'd8:announce']]],
1553
+ ['application/x-blender', [[0, 'BLENDER']]],
1554
+ ['application/x-bzip', [[0, 'BZh']]],
1555
+ ['application/x-ccmx', [[0, 'CCMX']]],
1556
+ ['application/x-cdrdao-toc', [[0, "CD_ROM\n"], [0, "CD_DA\n"], [0, "CD_ROM_XA\n"], [0, 'CD_TEXT '], [0, "CATALOG \"", [[22, "\""]]]]],
1557
+ ['application/x-chess-pgn', [[0, '[Event ']]],
1558
+ ['application/x-cisco-vpn-settings', [[0, '[main]', [[0..256, 'AuthType=']]]]],
1559
+ ['application/x-compress', [[0, "\037\235"]]],
1560
+ ['application/x-core', [[0, "\177ELF", [[5, "\001", [[16, "\004\000"]]]]], [0, "\177ELF", [[5, "\002", [[16, "\000\004"]]]]], [0, "Core\001"], [0, "Core\002"]]],
1561
+ ['application/x-cpio', [[0, "\307q"], [0, '070701'], [0, '070702'], [0, "q\307"]]],
1562
+ ['application/x-desktop', [[0..32, '[Desktop Entry]'], [0, '[Desktop Action'], [0, '[KDE Desktop Entry]'], [0, '# Config File'], [0, '# KDE Config File']]],
1563
+ ['application/x-dia-diagram', [[5..100, '<dia:']]],
1564
+ ['application/x-dia-shape', [[5..100, '<shape']]],
1565
+ ['application/x-dvi', [[0, "\367\002"]]],
1566
+ ['application/x-fluid', [[0, '# data file for the Fltk']]],
1567
+ ['application/x-font-bdf', [[0, 'STARTFONT ']]],
1568
+ ['application/x-font-dos', [[0, "\377FON"], [7, "\000EGA"], [7, "\000VID"]]],
1569
+ ['application/x-font-framemaker', [[0, '<MakerScreenFont']]],
1570
+ ['application/x-font-libgrx', [[0, "\024\002Y\031"]]],
1571
+ ['application/x-font-linux-psf', [[0, "6\004"]]],
1572
+ ['application/x-font-otf', [[0, 'OTTO']]],
1573
+ ['application/x-font-pcf', [[0, "\001fcp"]]],
1574
+ ['application/x-font-speedo', [[0, "D1.0\r"]]],
1575
+ ['application/x-font-sunos-news', [[0, 'StartFont'], [0, "\023z)"], [8, "\023z+"]]],
1576
+ ['application/x-font-tex', [[0, "\367\203"], [0, "\367Y"], [0, "\367\312"]]],
1577
+ ['application/x-font-tex-tfm', [[2, "\000\021"], [2, "\000\022"]]],
1578
+ ['application/x-font-ttf', [[0, 'FFIL'], [65, 'FFIL'], [0, "\000\001\000\000\000"]]],
1579
+ ['application/x-font-ttx', [[0..256, "<ttFont sfntVersion=\"\\000\\001\\000\\000\" ttLibVersion=\""]]],
1580
+ ['application/x-font-vfont', [[0, 'FONT']]],
1581
+ ['application/x-frame', [[0, '<MakerFile'], [0, '<MIFFile'], [0, '<MakerDictionary'], [0, '<MakerScreenFon'], [0, '<MML'], [0, '<Book'], [0, '<Maker']]],
1582
+ ['application/x-gamecube-rom', [[28, "\3023\237="]]],
1583
+ ['application/x-gdbm', [[0, "\023W\232\316"], [0, "\316\232W\023"], [0, 'GDBM']]],
1584
+ ['application/x-gedcom', [[0, '0 HEAD']]],
1585
+ ['application/x-genesis-rom', [[256, 'SEGA'], [640, 'EAGN'], [640, 'EAMG']]],
1586
+ ['application/x-gettext-translation', [[0, "\336\022\004\225"], [0, "\225\004\022\336"]]],
1587
+ ['application/x-glade', [[0..256, '<glade-interface']]],
1588
+ ['application/x-gnumeric', [[0..64, 'gmr:Workbook'], [0..64, 'gnm:Workbook']]],
1589
+ ['application/x-go-sgf', [[0, '(;FF[3]'], [0, '(;FF[4]']]],
1590
+ ['application/x-gtk-builder', [[0..256, '<interface']]],
1591
+ ['application/x-gtktalog', [[4, 'gtktalog ']]],
1592
+ ['application/x-hdf', [[0, "\211HDF\r\n\032\n"], [0, "\016\003\023\001"]]],
1593
+ ['application/x-hwp', [[0, 'HWP Document File']]],
1594
+ ['application/x-ipod-firmware', [[0, 'S T O P']]],
1595
+ ['application/x-it87', [[0, 'IT8.7']]],
1596
+ ['application/x-iwork-keynote-sffkey', [[0, "PK\003\004", [[30, 'index.apxl']]]]],
1597
+ ['application/x-java', [[0, "\312\376\272\276"]]],
1598
+ ['application/x-java-jce-keystore', [[0, "\316\316\316\316"]]],
1599
+ ['application/x-java-jnlp-file', [[0..256, '<jnlp']]],
1600
+ ['application/x-java-keystore', [[0, "\355\376\355\376"]]],
1601
+ ['application/x-java-pack200', [[0, "\312\376\320\r"]]],
1602
+ ['application/x-kspread-crypt', [[0, "\r\032'\002"]]],
1603
+ ['application/x-ksysv-package', [[4, 'KSysV', [[15, "\001"]]]]],
1604
+ ['application/x-kword-crypt', [[0, "\r\032'\001"]]],
1605
+ ['application/x-lha', [[2, '-lh -'], [2, '-lh0-'], [2, '-lh1-'], [2, '-lh2-'], [2, '-lh3-'], [2, '-lh4-'], [2, '-lh5-'], [2, '-lh40-'], [2, '-lhd-'], [2, '-lz4-'], [2, '-lz5-'], [2, '-lzs-']]],
1606
+ ['application/x-lrzip', [[0, 'LRZI']]],
1607
+ ['application/x-lyx', [[0, '#LyX']]],
1608
+ ['application/x-lz4', [[0, "\004\"M\030"], [0, "\002!L\030"]]],
1609
+ ['application/x-lzip', [[0, 'LZIP']]],
1610
+ ['application/x-lzop', [[0, "\211LZO\000\r\n\032\n"]]],
1611
+ ['application/x-macbinary', [[102, 'mBIN']]],
1612
+ ['application/x-matroska', [[0, "\032E\337\243", [[5..65, "B\202", [[8..75, 'matroska']]]]]]],
1613
+ ['application/x-ms-dos-executable', [[0, 'MZ']]],
1614
+ ['application/x-mswinurl', [[1, 'InternetShortcut'], [1, 'DEFAULT', [[11, 'BASEURL=']]]]],
1615
+ ['application/x-nautilus-link', [[0..32, '<nautilus_object nautilus_link']]],
1616
+ ['application/x-navi-animation', [[0, 'RIFF', [[8, 'ACON']]]]],
1617
+ ['application/x-netshow-channel', [[0, '[Address]']]],
1618
+ ['application/x-object', [[0, "\177ELF", [[5, "\001", [[16, "\001\000"]]]]], [0, "\177ELF", [[5, "\002", [[16, "\000\001"]]]]]]],
1619
+ ['application/x-ole-storage', [[0, "\320\317\021\340\241\261\032\341"], [0, "\320\317\021\340"]]],
1620
+ ['application/x-oleo', [[31, 'Oleo']]],
1621
+ ['application/x-par2', [[0, 'PAR2']]],
1622
+ ['application/x-pef-executable', [[0, 'Joy!']]],
1623
+ ['application/x-perl', [[0, "eval \"exec /usr/local/bin/perl"], [2..16, '/bin/perl'], [2..16, '/bin/env perl'], [0..256, 'use strict'], [0..256, 'use warnings'], [0..256, 'use diagnostics'], [0..256, 'use Test::'], [0..256, 'BEGIN {']]],
1624
+ ['application/x-pocket-word', [[0, "{\\pwi"]]],
1625
+ ['application/x-python-bytecode', [[0, "\231N\r\n"]]],
1626
+ ['application/x-qpress', [[0, 'qpress10']]],
1627
+ ['application/x-qtiplot', [[0, 'QtiPlot']]],
1628
+ ['application/x-rar', [[0, 'Rar!']]],
1629
+ ['application/x-rpm', [[0, "\355\253\356\333"]]],
1630
+ ['application/x-sami', [[0..256, '<SAMI>']]],
1631
+ ['application/x-sc', [[38, 'Spreadsheet']]],
1632
+ ['application/x-sharedlib', [[0, "\177ELF", [[5, "\001", [[16, "\003\000"]]]]], [0, "\177ELF", [[5, "\002", [[16, "\000\003"]]]]], [0, "\203\001"]]],
1633
+ ['application/x-shellscript', [[10, '# This is a shell archive'], [2..16, '/bin/bash'], [2..16, '/bin/nawk'], [2..16, '/bin/zsh'], [2..16, '/bin/sh'], [2..16, '/bin/ksh'], [2..16, '/bin/dash'], [2..16, '/bin/env sh'], [2..16, '/bin/env bash'], [2..16, '/bin/env zsh'], [2..16, '/bin/env ksh']]],
1634
+ ['application/x-shorten', [[0, 'ajkg']]],
1635
+ ['application/x-smaf', [[0, 'MMMD']]],
1636
+ ['application/x-spss-por', [[40, 'ASCII SPSS PORT FILE']]],
1637
+ ['application/x-spss-sav', [[0, '$FL2'], [0, '$FL3']]],
1638
+ ['application/x-stuffit', [[0, 'StuffIt '], [0, 'SIT!']]],
1639
+ ['application/x-subrip', [[0, '1', [[0..256, ' --> ']]]]],
1640
+ ['application/x-t602', [[0, '@CT 0'], [0, '@CT 1'], [0, '@CT 2']]],
1641
+ ['application/x-tar', [[257, "ustar\000"], [257, "ustar \000"]]],
1642
+ ['application/x-tgif', [[0, '%TGIF']]],
1643
+ ['application/x-wii-rom', [[24, "]\034\236\243"], [0, 'WBFS'], [0, "WII\001DISC"]]],
1644
+ ['application/x-xbel', [[0..256, '<!DOCTYPE xbel']]],
1645
+ ['application/x-xz', [[0, "\3757zXZ\000"]]],
1646
+ ['application/x-zoo', [[20, "\334\247\304\375"]]],
1647
+ ['application/xslt+xml', [[0..256, '<xsl:stylesheet']]],
1648
+ ['application/xspf+xml', [[0..64, "<playlist version=\"1"], [0..64, "<playlist version='1"]]],
1649
+ ['audio/AMR', [[0, "#!AMR\n"], [0, "#!AMR_MC1.0\n"]]],
1650
+ ['audio/AMR-WB', [[0, "#!AMR-WB\n"], [0, "#!AMR-WB_MC1.0\n"]]],
1651
+ ['audio/aac', [[0, 'ADIF']]],
1652
+ ['audio/ac3', [[0, "\vw"]]],
1653
+ ['audio/annodex', [[0, 'OggS', [[28, "fishead\000", [[56..512, "CMML\000\000\000\000"]]]]]]],
1654
+ ['audio/flac', [[0, 'fLaC']]],
1655
+ ['audio/midi', [[0, 'MThd']]],
1656
+ ['audio/mp4', [[4, 'ftypM4A']]],
1657
+ ['audio/mpeg', [[0, "\377\373"], [0, 'ID3']]],
1658
+ ['audio/ogg', [[0, 'OggS']]],
1659
+ ['audio/prs.sid', [[0, 'PSID']]],
1660
+ ['audio/vnd.dts', [[0, "\177\376\200\001"], [0, "\200\001\177\376"], [0, "\037\377\350\000"], [0, "\350\000\037\377"]]],
1661
+ ['audio/x-adpcm', [[0, '.snd', [[12, "\000\000\000\027"]]], [0, ".sd\000", [[12, "\001\000\000\000"], [12, "\002\000\000\000"], [12, "\003\000\000\000"], [12, "\004\000\000\000"], [12, "\005\000\000\000"], [12, "\006\000\000\000"], [12, "\a\000\000\000"], [12, "\027\000\000\000"]]]]],
1662
+ ['audio/x-aifc', [[8, 'AIFC']]],
1663
+ ['audio/x-aiff', [[8, 'AIFF'], [8, '8SVX']]],
1664
+ ['audio/x-ape', [[0, 'MAC ']]],
1665
+ ['audio/x-iriver-pla', [[4, 'iriver UMS PLA']]],
1666
+ ['audio/x-it', [[0, 'IMPM']]],
1667
+ ['audio/x-m4b', [[4, 'ftypM4B']]],
1668
+ ['audio/x-mo3', [[0, 'MO3']]],
1669
+ ['audio/x-mpegurl', [[0, '#EXTM3U']]],
1670
+ ['audio/x-musepack', [[0, 'MP+']]],
1671
+ ['audio/x-psf', [[0, 'PSF']]],
1672
+ ['audio/x-s3m', [[44, 'SCRM']]],
1673
+ ['audio/x-scpls', [[0, '[playlist]'], [0, '[Playlist]'], [0, '[PLAYLIST]']]],
1674
+ ['audio/x-speex', [[0, 'Speex']]],
1675
+ ['audio/x-tta', [[0, 'TTA1']]],
1676
+ ['audio/x-wav', [[8, 'WAVE'], [8, 'WAV ']]],
1677
+ ['audio/x-wavpack', [[0, 'wvpk']]],
1678
+ ['audio/x-wavpack-correction', [[0, 'wvpk']]],
1679
+ ['audio/x-xi', [[0, 'Extended Instrument:']]],
1680
+ ['audio/x-xm', [[0, 'Extended Module:']]],
1681
+ ['audio/x-xmf', [[0, 'XMF_'], [0, "XMF_2.00\000\000\000\002"]]],
1682
+ ['image/bmp', [[0, 'BM', [[14, "\f"], [14, '@'], [14, '(']]]]],
1683
+ ['image/dpx', [[0, 'SDPX']]],
1684
+ ['image/fits', [[0, 'SIMPLE =']]],
1685
+ ['image/gif', [[0, 'GIF8']]],
1686
+ ['image/jp2', [[0, "\377O\377Q\000"], [3, "\fjP "], [20, 'jp2']]],
1687
+ ['image/jpeg', [[0, "\377\330\377"], [0, "\377\330"]]],
1688
+ ['image/openraster', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'image/openraster']]]]]]],
1689
+ ['image/png', [[0, "\211PNG"]]],
1690
+ ['image/tiff', [[0, "MM\000*"], [0, "II*\000"]]],
1691
+ ['image/vnd.adobe.photoshop', []],
1692
+ ['image/vnd.djvu', [[0, 'AT&TFORM', [[12, 'DJVM'], [12, 'DJVU']]], [0, 'FORM', [[8, 'DJVM'], [8, 'DJVU']]]]],
1693
+ ['image/vnd.dxf', [[0..64, "\nHEADER\n"], [0..64, "\r\nHEADER\r\n"]]],
1694
+ ['image/vnd.microsoft.icon', [[0, "\000\000\001\000", [[5, "\000"]]]]],
1695
+ ['image/vnd.ms-modi', [[0, "EP*\000"]]],
1696
+ ['image/webp', [[0, 'RIFF', [[8, 'WEBP']]]]],
1697
+ ['image/x-applix-graphics', [[0, '*BEGIN', [[7, 'GRAPHICS']]]]],
1698
+ ['image/x-canon-crw', [[0, "II\032\000\000\000HEAPCCDR"]]],
1699
+ ['image/x-dds', [[0, 'DDS']]],
1700
+ ['image/x-dib', [[0, "(\000\000\000"]]],
1701
+ ['image/x-emf', [[0, "\001\000\000\000", [[40, ' EMF', [[44, "\000\000\001\000", [[58, "\000\000"]]]]]]]]],
1702
+ ['image/x-exr', [[0, "v/1\001"]]],
1703
+ ['image/x-fpx', [[0, 'FPix']]],
1704
+ ['image/x-fuji-raf', [[0, 'FUJIFILMCCD-RAW ']]],
1705
+ ['image/x-icns', [[0, 'icns']]],
1706
+ ['image/x-ilbm', [[8, 'ILBM'], [8, 'PBM ']]],
1707
+ ['image/x-minolta-mrw', [[0, "\000MRM"]]],
1708
+ ['image/x-olympus-orf', [[0, "IIRO\b\000\000\000"]]],
1709
+ ['image/x-panasonic-raw', [[0, "IIU\000\b\000\000\000"]]],
1710
+ ['image/x-panasonic-raw2', [[0, "IIU\000\030\000\000\000"]]],
1711
+ ['image/x-pcx', [[0, "\n", [[1, "\000"], [1, "\002"], [1, "\003"], [1, "\005"]]]]],
1712
+ ['image/x-pict', [[10, "\000\021", [[12, "\002\377", [[14, "\f\000", [[16, "\377\376"]]]]]]]]],
1713
+ ['image/x-pict', [[522, "\000\021", [[524, "\002\377", [[526, "\f\000", [[528, "\377\376"]]]]]]]]],
1714
+ ['image/x-portable-bitmap', [[0, 'P1', [[2, "\n"], [2, ' '], [2, "\t"], [2, "\r"]]], [0, 'P4', [[2, "\n"], [2, ' '], [2, "\t"], [2, "\r"]]]]],
1715
+ ['image/x-portable-graymap', [[0, 'P2', [[2, "\n"], [2, ' '], [2, "\t"], [2, "\r"]]], [0, 'P5', [[2, "\n"], [2, ' '], [2, "\t"], [2, "\r"]]]]],
1716
+ ['image/x-portable-pixmap', [[0, 'P3', [[2, "\n"], [2, ' '], [2, "\t"], [2, "\r"]]], [0, 'P6', [[2, "\n"], [2, ' '], [2, "\t"], [2, "\r"]]]]],
1717
+ ['image/x-quicktime', [[4, 'idat']]],
1718
+ ['image/x-sigma-x3f', [[0, 'FOVb']]],
1719
+ ['image/x-skencil', [[0, '##Sketch']]],
1720
+ ['image/x-sun-raster', [[0, "Y\246j\225"]]],
1721
+ ['image/x-tga', [[1, "\000\002", [[16, "\b"], [16, "\020"], [16, "\030"], [16, ' ']]]]],
1722
+ ['image/x-win-bitmap', [[0, "\000\000\002\000", [[5, "\000"]]]]],
1723
+ ['image/x-wmf', [[0, "\327\315\306\232", [[22, "\001\000", [[24, "\t\000"]]]]], [0, "\001\000", [[2, "\t\000"]]]]],
1724
+ ['image/x-xcf', [[0, 'gimp xcf file'], [0, 'gimp xcf v001'], [0, 'gimp xcf v002']]],
1725
+ ['image/x-xcursor', [[0, 'Xcur']]],
1726
+ ['image/x-xfig', [[0, '#FIG']]],
1727
+ ['image/x-xpixmap', [[0, '/* XPM']]],
1728
+ ['message/news', [[0, 'Article'], [0, 'Path:'], [0, 'Xref:']]],
1729
+ ['message/rfc822', [[0, '#! rnews'], [0, 'Forward to'], [0, 'From:'], [0, 'N#! rnews'], [0, 'Pipe to'], [0, 'Received:'], [0, 'Relay-Version:'], [0, 'Return-Path:'], [0, 'Return-path:'], [0, 'Subject: ']]],
1730
+ ['text/calendar', [[0, 'BEGIN:VCALENDAR'], [0, 'begin:vcalendar']]],
1731
+ ['text/html', [[0..256, '<!DOCTYPE HTML'], [0..256, '<!doctype html'], [0..256, '<HEAD'], [0..256, '<head'], [0..256, '<TITLE'], [0..256, '<title'], [0..256, '<HTML'], [0..256, '<html'], [0..256, '<SCRIPT'], [0..256, '<script'], [0, '<BODY'], [0, '<body'], [0, '<!--'], [0, '<h1'], [0, '<H1'], [0, '<!doctype HTML'], [0, '<!DOCTYPE html']]],
1732
+ ['text/plain', [[0, 'This is TeX,'], [0, 'This is METAFONT,']]],
1733
+ ['text/spreadsheet', [[0, 'ID;']]],
1734
+ ['text/troff', [[0, ".\\\""], [0, "'\\\""], [0, "'.\\\""], [0, "\\\""]]],
1735
+ ['text/vcard', [[0, 'BEGIN:VCARD'], [0, 'begin:vcard']]],
1736
+ ['text/vnd.graphviz', [[0, 'digraph '], [0, 'strict digraph '], [0, 'graph '], [0, 'strict graph ']]],
1737
+ ['text/vnd.sun.j2me.app-descriptor', [[0, 'MIDlet-']]],
1738
+ ['text/vtt', [[0, 'WEBVTT']]],
1739
+ ['text/x-emacs-lisp', [[0, "\n("], [0, ";ELC\023\000\000\000"]]],
1740
+ ['text/x-gettext-translation-template', [[0..256, "#, fuzzy\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version:"]]],
1741
+ ['text/x-google-video-pointer', [[0, '#.download.the.free.Google.Video.Player'], [0, '# download the free Google Video Player']]],
1742
+ ['text/x-iMelody', [[0, 'BEGIN:IMELODY']]],
1743
+ ['text/x-iptables', [[0..256, '/etc/sysconfig/iptables'], [0..256, '*filter', [[0..256, ':INPUT', [[0..256, ':FORWARD', [[0..256, ':OUTPUT']]]]]]], [0..256, '-A INPUT', [[0..256, '-A FORWARD', [[0..256, '-A OUTPUT']]]]], [0..256, '-P INPUT', [[0..256, '-P FORWARD', [[0..256, '-P OUTPUT']]]]]]],
1744
+ ['text/x-ldif', [[0, 'dn: cn='], [0, 'dn: mail=']]],
1745
+ ['text/x-lua', [[2..16, '/bin/lua'], [2..16, '/bin/luajit'], [2..16, '/bin/env lua'], [2..16, '/bin/env luajit']]],
1746
+ ['text/x-makefile', [[0, '#!/usr/bin/make'], [0, '#! /usr/bin/make']]],
1747
+ ['text/x-matlab', [[0, 'function']]],
1748
+ ['text/x-microdvd', [[0, '{1}'], [0, '{0}'], [0..6, '}{']]],
1749
+ ['text/x-modelica', [[0, 'class']]],
1750
+ ['text/x-modelica', [[0, 'model']]],
1751
+ ['text/x-modelica', [[0, 'function']]],
1752
+ ['text/x-modelica', [[0, 'record']]],
1753
+ ['text/x-mpsub', [[0..256, 'FORMAT=']]],
1754
+ ['text/x-mrml', [[0, '<mrml ']]],
1755
+ ['text/x-ms-regedit', [[0, 'REGEDIT'], [0, 'Windows Registry Editor Version 5.00'], [0, "\377\376W\000i\000n\000d\000o\000w\000s\000 \000R\000e\000g\000i\000s\000t\000r\000y\000 \000E\000d\000i\000t\000o\000r\000"]]],
1756
+ ['text/x-mup', [[0, '//!Mup']]],
1757
+ ['text/x-patch', [[0, "diff\t"], [0, 'diff '], [0, "***\t"], [0, '*** '], [0, '=== '], [0, '--- '], [0, "Only in\t"], [0, 'Only in '], [0, 'Common subdirectories: '], [0, 'Index:']]],
1758
+ ['text/x-python', [[0, '#!/bin/python'], [0, '#! /bin/python'], [0, "eval \"exec /bin/python"], [0, '#!/usr/bin/python'], [0, '#! /usr/bin/python'], [0, "eval \"exec /usr/bin/python"], [0, '#!/usr/local/bin/python'], [0, '#! /usr/local/bin/python'], [0, "eval \"exec /usr/local/bin/python"], [2..16, '/bin/env python']]],
1759
+ ['text/x-rpm-spec', [[0, 'Summary: '], [0, '%define ']]],
1760
+ ['text/x-ssa', [[0..256, '[Script Info]'], [0..256, 'Dialogue: ']]],
1761
+ ['text/x-subviewer', [[0, '[INFORMATION]']]],
1762
+ ['text/x-tex', [[1, 'documentclass']]],
1763
+ ['text/x-uuencode', [[0, 'begin ']]],
1764
+ ['text/xmcd', [[0, '# xmcd']]],
1765
+ ['video/3gpp', [[4, 'ftyp3ge'], [4, 'ftyp3gg'], [4, 'ftyp3gp'], [4, 'ftyp3gs']]],
1766
+ ['video/3gpp2', [[4, 'ftyp3g2']]],
1767
+ ['video/annodex', [[0, 'OggS', [[28, "fishead\000", [[56..512, "CMML\000\000\000\000"]]]]]]],
1768
+ ['video/dv', []],
1769
+ ['video/mp2t', []],
1770
+ ['video/mp4', [[4, 'ftypisom'], [4, 'ftypmp42'], [4, 'ftypMSNV'], [4, 'ftypM4V '], [4, 'ftypf4v ']]],
1771
+ ['video/mpeg', [[0, "G?\377\020"], [0, "\000\000\001\263"], [0, "\000\000\001\272"]]],
1772
+ ['video/ogg', [[0, 'OggS']]],
1773
+ ['video/quicktime', [[12, 'mdat'], [4, 'mdat'], [4, 'moov'], [4, 'ftypqt']]],
1774
+ ['video/vnd.mpegurl', [[0, '#EXTM4U']]],
1775
+ ['video/webm', [[0, "\032E\337\243", [[5..65, "B\202", [[8..75, 'webm']]]]]]],
1776
+ ['video/x-flic', [[0, "\021\257"], [0, "\022\257"]]],
1777
+ ['video/x-flv', [[0, 'FLV']]],
1778
+ ['video/x-mng', [[0, "\212MNG\r\n\032\n"]]],
1779
+ ['video/x-msvideo', [[0, 'RIFF', [[8, 'AVI ']]], [0, 'AVF0', [[8, 'AVI ']]]]],
1780
+ ['video/x-nsv', [[0, 'NSVf']]],
1781
+ ['video/x-sgi-movie', [[0, 'MOVI']]],
1782
+ ['x-epoc/x-sisx-app', [[0, "z\032 \020"]]],
1783
+ ['application/x-archive', [[0, '<ar>'], [0, '!<arch>']]],
1784
+ ['application/x-riff', [[0, 'RIFF']]],
1785
+ ['application/x-executable', [[0, "\177ELF", [[5, "\001", [[16, "\002\000"]]]]], [0, "\177ELF", [[5, "\002", [[16, "\000\002"]]]]], [0, 'MZ'], [0, "\034R"], [0, "\020\001"], [0, "\021\001"], [0, "\203\001"]]],
1786
+ ['application/x-iff', [[0, 'FORM']]],
1787
+ ['application/x-perl', [[0..256, "\n=pod"], [0..256, "\n=head1 NAME"], [0..256, "\n=head1 DESCRIPTION"]]],
1788
+ ['application/xml', [[0, '<?xml'], [0, '<!--']]],
1789
+ ['application/zip', [[0, "PK\003\004"]]],
1790
+ ['audio/basic', [[0, '.snd']]],
1791
+ ['video/x-javafx', [[0, 'FLV']]],
1792
+ ['application/x-mobipocket-ebook', [[60, 'TEXtREAd']]],
1793
+ ['text/x-csrc', [[0, '/*'], [0, '//'], [0, '#include']]],
1794
+ ['text/x-objcsrc', [[0, '#import']]],
1795
+ ['application/mbox', [[0, 'From ']]],
1796
+ ['image/x-tga', [[1, "\001\001"], [1, "\0019"], [1, "\000\003"], [1, "\000\n"], [1, "\000\v"]]],
1797
+ ['text/x-matlab', [[0, '%']]],
1798
+ ['text/x-matlab', [[0, '##']]],
1799
+ ['text/x-modelica', [[0, '//']]],
1800
+ ['text/x-tex', [[0, '%']]],
1801
+ ['application/vnd.sun.xml.calc', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.sun.xml.calc']]]]]]],
1802
+ ['application/vnd.sun.xml.calc.template', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.sun.xml.calc']]]]]]],
1803
+ ['application/vnd.sun.xml.draw', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.sun.xml.draw']]]]]]],
1804
+ ['application/vnd.sun.xml.draw.template', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.sun.xml.draw']]]]]]],
1805
+ ['application/vnd.sun.xml.impress', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.sun.xml.impress']]]]]]],
1806
+ ['application/vnd.sun.xml.impress.template', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.sun.xml.impress']]]]]]],
1807
+ ['application/vnd.sun.xml.math', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.sun.xml.math']]]]]]],
1808
+ ['application/vnd.sun.xml.writer', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.sun.xml.writer']]]]]]],
1809
+ ['application/vnd.sun.xml.writer.global', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.sun.xml.writer']]]]]]],
1810
+ ['application/vnd.sun.xml.writer.template', [[0, "PK\003\004", [[30, 'mimetype', [[38, 'application/vnd.sun.xml.writer']]]]]]],
1811
+ ['application/x-csh', [[2..16, '/bin/tcsh'], [2..16, '/bin/csh'], [2..16, '/bin/env csh'], [2..16, '/bin/env tcsh']]],
1812
+ ['application/x-dar', [[0, "\000\000\000{"]]],
1813
+ ['application/x-designer', [[0..256, '<ui '], [0..256, '<UI ']]],
1814
+ ['application/x-ms-wim', [[0, "MSWIM\000\000\000"]]],
1815
+ ['application/x-n64-rom', [[0, "\2007\022@"], [0, "7\200@\022"], [0, "@\0227\200"]]],
1816
+ ['application/x-ruby', [[2..16, '/bin/env ruby'], [2..16, '/bin/ruby']]],
1817
+ ['application/x-sqlite2', [[0, '** This file contains an SQLite']]],
1818
+ ['application/x-sqlite3', [[0, 'SQLite format 3']]],
1819
+ ['application/x-yaml', [[0, '%YAML']]],
1820
+ ['audio/x-stm', [[20, "!Scream!\032"], [20, "!SCREAM!\032"], [20, "BMOD2STM\032"]]],
1821
+ ['text/cache-manifest', [[0, 'CACHE MANIFEST', [[14, ' '], [14, "\t"], [14, "\n"], [14, "\r"]]]]],
1822
+ ['text/vnd.trolltech.linguist', [[0..256, '<TS']]],
1823
+ ['text/x-bibtex', [[0, '% This file was created with JabRef']]],
1824
+ ]
1825
+ end