FileTypeRegistry.java
/*
** Module : FileTypeRegistry.java
** Abstract : Implementation of the builtin class.
**
** Copyright (c) 2020-2023, Golden Code Development Corporation.
**
** -#- -I- --Date-- ---------------------------------------Description----------------------------------------
** 001 MP 20200602 First version, stubs taken by converting the skeleton using FWD.
** 002 CA 20210113 Renamed clear() to clear_(), to follow NameConverter's rules.
** 003 CA 20210221 Fixed 'qualified', 'extent' and 'returns' annotations at the legacy signature.
** 004 ME 20210519 Fix registry lazy loading.
** CA 20220923 Variable definitions (including associated with parameters) must be done always outside of
** the BlockManager API
** 005 CA 20230817 Removed ObjectOps.register, as this registration is handled by runtime.
** 006 CA 20231019 All BlockManager calls must have a non-null referent.
** 007 CA 20231113 The 'execute' method must be annotated with LegacySignature Type.Execute, and also can be
** dropped if is a no-op.
*/
/*
** This program is free software: you can redistribute it and/or modify
** it under the terms of the GNU Affero General Public License as
** published by the Free Software Foundation, either version 3 of the
** License, or (at your option) any later version.
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU Affero General Public License for more details.
**
** You may find a copy of the GNU Affero GPL version 3 at the following
** location: https://www.gnu.org/licenses/agpl-3.0.en.html
**
** Additional terms under GNU Affero GPL version 3 section 7:
**
** Under Section 7 of the GNU Affero GPL version 3, the following additional
** terms apply to the works covered under the License. These additional terms
** are non-permissive additional terms allowed under Section 7 of the GNU
** Affero GPL version 3 and may not be removed by you.
**
** 0. Attribution Requirement.
**
** You must preserve all legal notices or author attributions in the covered
** work or Appropriate Legal Notices displayed by works containing the covered
** work. You may not remove from the covered work any author or developer
** credit already included within the covered work.
**
** 1. No License To Use Trademarks.
**
** This license does not grant any license or rights to use the trademarks
** Golden Code, FWD, any Golden Code or FWD logo, or any other trademarks
** of Golden Code Development Corporation. You are not authorized to use the
** name Golden Code, FWD, or the names of any author or contributor, for
** publicity purposes without written authorization.
**
** 2. No Misrepresentation of Affiliation.
**
** You may not represent yourself as Golden Code Development Corporation or FWD.
**
** You may not represent yourself for publicity purposes as associated with
** Golden Code Development Corporation, FWD, or any author or contributor to
** the covered work, without written authorization.
**
** 3. No Misrepresentation of Source or Origin.
**
** You may not represent the covered work as solely your work. All modified
** versions of the covered work must be marked in a reasonable way to make it
** clear that the modified work is not originating from Golden Code Development
** Corporation or FWD. All modified versions must contain the notices of
** attribution required in this license.
*/
package com.goldencode.p2j.oo.net;
import com.goldencode.p2j.util.*;
import com.goldencode.p2j.util.BlockManager.Action;
import com.goldencode.p2j.util.BlockManager.Condition;
import com.goldencode.p2j.oo.core.Assert;
import com.goldencode.p2j.oo.lang.*;
import com.goldencode.p2j.security.*;
import static com.goldencode.p2j.report.ReportConstants.CVT_LVL_FULL;
import static com.goldencode.p2j.report.ReportConstants.RT_LVL_FULL;
import static com.goldencode.p2j.report.ReportConstants.RT_LVL_STUB;
import static com.goldencode.p2j.util.BlockManager.*;
import static com.goldencode.p2j.util.InternalEntry.Type;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Set;
/**
* Business logic (converted to Java from the 4GL source code
* in OpenEdge/Net/FileTypeRegistry.cls).
*/
@LegacyResource(resource = "OpenEdge.Net.FileTypeRegistry")
@LegacyResourceSupport(supportLvl = CVT_LVL_FULL|RT_LVL_STUB)
public class FileTypeRegistry
extends BaseObject
{
private integer size = TypeFactory.integer();
private HashMap<String, String> ftr_map= new HashMap<String, String>();
//store file extension list in order just like legacy class
private HashMap<String, List<String>> values_map = new HashMap<String, List<String>>();
private static ContextLocal<object<? extends FileTypeRegistry>> registry = new ContextLocal<object<? extends com.goldencode.p2j.oo.net.FileTypeRegistry>>()
{
protected object<? extends FileTypeRegistry> initialValue()
{
return TypeFactory.object(FileTypeRegistry.class);
}
};
@LegacySignature(type = Type.EXECUTE)
public void __net_FileTypeRegistry_execute__()
{
onBlockLevel(Condition.ERROR, Action.THROW);
}
@LegacySignature(returns = "INTEGER", type = Type.GETTER, name = "Size")
@LegacyResourceSupport(supportLvl = CVT_LVL_FULL|RT_LVL_FULL)
public integer getSize()
{
return function(FileTypeRegistry.class, this, "Size", integer.class, new Block((Body) () ->
{
integer mapSize = new integer(this.ftr_map.size());
returnNormal(mapSize);
}));
}
@LegacySignature(type = Type.CONSTRUCTOR)
@LegacyResourceSupport(supportLvl = CVT_LVL_FULL | RT_LVL_FULL)
public static void __net_FileTypeRegistry_constructor__static__()
{
externalProcedure(FileTypeRegistry.class, new Block((Body) () -> {
onBlockLevel(Condition.ERROR, Action.THROW);
}));
}
@LegacySignature(type = Type.CONSTRUCTOR)
@LegacyResourceSupport(supportLvl = CVT_LVL_FULL|RT_LVL_FULL)
private void __net_FileTypeRegistry_constructor__()
{
internalProcedure(FileTypeRegistry.class, this, "__net_FileTypeRegistry_constructor__", new Block((Body) () ->
{
__lang_BaseObject_constructor__();
}));
}
@LegacySignature(returns = "OBJECT", qualified = "OpenEdge.Net.FileTypeRegistry", type = Type.GETTER, name = "Registry")
@LegacyResourceSupport(supportLvl = CVT_LVL_FULL|RT_LVL_FULL)
public static object<? extends FileTypeRegistry> getRegistry()
{
ObjectOps.load(FileTypeRegistry.class);
return function(FileTypeRegistry.class, "Registry", object.class, new Block((Body) () ->
{
if(!registry.get()._isValid())
{
registry.get().assign(ObjectOps.newInstance(FileTypeRegistry.class));
initMap(registry.get());
}
returnNormal(registry.get());
}));
}
@LegacySignature(returns = "LOGICAL", type = Type.METHOD, name = "Put", parameters =
{
@LegacyParameter(name = "pcExtensionKey", type = "CHARACTER", mode = "INPUT"),
@LegacyParameter(name = "pcMimeType", type = "CHARACTER", mode = "INPUT")
})
@LegacyResourceSupport(supportLvl = CVT_LVL_FULL|RT_LVL_FULL)
public logical put(final character _pcExtensionKey, final character _pcMimeType)
{
character pcExtensionKey = TypeFactory.initInput(_pcExtensionKey);
character pcMimeType = TypeFactory.initInput(_pcMimeType);
return function(FileTypeRegistry.class, this, "Put", logical.class, new Block((Body) () ->
{
Assert.notNullOrEmpty(pcExtensionKey, new character("Extension key"));
Assert.notNullOrEmpty(pcMimeType, new character("Mime type"));
boolean keyIsPresent = this.ftr_map.containsKey(pcExtensionKey.getValue());
String actualValue = "";
if (keyIsPresent)
{
actualValue = this.ftr_map.get(pcExtensionKey.getValue());
}
this.ftr_map.put(pcExtensionKey.getValue(), pcMimeType.getValue());
this.size.assign(this.ftr_map.size());
this.manageValuesAndKeys(pcMimeType.getValue(), actualValue, pcExtensionKey.getValue());
if (keyIsPresent)
{
returnNormal(new logical(true));
}
else
{
returnNormal(new logical(false));
}
}));
}
private void manageValuesAndKeys(String newValue, String actualValue, String key)
{
if(actualValue != "")
{
int pos = this.values_map.get(actualValue).indexOf(key);
if(pos != -1)
this.values_map.get(actualValue).remove(pos);
if(this.values_map.get(actualValue).isEmpty())
this.values_map.remove(actualValue);
}
else
{
if(this.values_map.containsKey(newValue))
{
this.values_map.get(newValue).add(key);
}
else
{
List<String> newList = new ArrayList<String>();
newList.add(key);
this.values_map.put(newValue, newList);
}
}
}
@LegacySignature(returns = "LOGICAL", type = Type.METHOD, name = "Remove", parameters =
{
@LegacyParameter(name = "pcExtensionKey", type = "CHARACTER", mode = "INPUT")
})
@LegacyResourceSupport(supportLvl = CVT_LVL_FULL|RT_LVL_STUB)
public logical remove(final character _pcExtensionKey)
{
character pcExtensionKey = TypeFactory.initInput(_pcExtensionKey);
return function(FileTypeRegistry.class, this, "Remove", logical.class, new Block((Body) () ->
{
Assert.notNullOrEmpty(pcExtensionKey, new character("Extension key"));
String removeRsp = this.ftr_map.remove(pcExtensionKey.getValue());
if (removeRsp == null)
{
returnNormal(new logical(false));
}
else
{
this.manageValuesAndKeys(removeRsp, removeRsp, pcExtensionKey.getValue());
this.size.assign(this.ftr_map.size());
returnNormal(new logical(true));
}
}));
}
@LegacySignature(returns = "LOGICAL", type = Type.METHOD, name = "Has", parameters =
{
@LegacyParameter(name = "pcExtensionKey", type = "CHARACTER", mode = "INPUT")
})
@LegacyResourceSupport(supportLvl = CVT_LVL_FULL|RT_LVL_STUB)
public logical has(final character _pcExtensionKey)
{
character pcExtensionKey = TypeFactory.initInput(_pcExtensionKey);
return function(FileTypeRegistry.class, this, "Has", logical.class, new Block((Body) () ->
{
Assert.notNullOrEmpty(pcExtensionKey, new character("Extension key"));
boolean containsRsp = this.ftr_map.containsKey(pcExtensionKey.getValue());
returnNormal(new logical(containsRsp));
}));
}
@LegacySignature(returns = "CHARACTER", type = Type.METHOD, name = "Get", parameters =
{
@LegacyParameter(name = "pcExtensionKey", type = "CHARACTER", mode = "INPUT")
})
@LegacyResourceSupport(supportLvl = CVT_LVL_FULL|RT_LVL_STUB)
public character get(final character _pcExtensionKey)
{
character pcExtensionKey = TypeFactory.initInput(_pcExtensionKey);
return function(FileTypeRegistry.class, this, "Get", character.class, new Block((Body) () ->
{
Assert.notNull(pcExtensionKey, new character("Extension key"));
String getRsp = this.ftr_map.get(pcExtensionKey.getValue());
returnNormal(new character(getRsp));
}));
}
@LegacySignature(type = Type.METHOD, name = "Clear")
@LegacyResourceSupport(supportLvl = CVT_LVL_FULL|RT_LVL_STUB)
public void clear_()
{
internalProcedure(FileTypeRegistry.class, this, "Clear", new Block((Body) () ->
{
this.ftr_map.clear();
this.size.assign(this.ftr_map.size());
}));
}
@LegacySignature(returns = "CHARACTER", type = Type.METHOD, name = "GetKeys", extent = -1, parameters =
{
@LegacyParameter(name = "pMimeType", type = "CHARACTER", mode = "INPUT")
})
@LegacyResourceSupport(supportLvl = CVT_LVL_FULL|RT_LVL_STUB)
public character[] getKeys(final character _pMimeType)
{
character pMimeType = TypeFactory.initInput(_pMimeType);
character[][] res = { TypeFactory.characterExtent() };
return extentFunction(FileTypeRegistry.class, this, "GetKeys", character.class, new Block((Body) () ->
{
if(pMimeType.isUnknown() || pMimeType.getValue() == "*")
{
returnExtentNormal(this.getKeys());
}
if(pMimeType.getValue() == "")
{
pMimeType.assign(new character("application/octet-stream"));
}
List<String> filterKeys = this.values_map.get(pMimeType.getValue());
if (filterKeys != null)
{
String[] filterdKeysAsArray = filterKeys.toArray(new String[0]);
returnExtentNormal(TypeFactory.characterExtent(filterdKeysAsArray.length, filterdKeysAsArray));
}
else
{
returnExtentNormal(res[0]);
}
}));
}
@LegacySignature(returns = "CHARACTER", type = Type.METHOD, name = "GetKeys", extent = -1)
@LegacyResourceSupport(supportLvl = CVT_LVL_FULL|RT_LVL_STUB)
public character[] getKeys()
{
character[] res = TypeFactory.characterExtent();
return extentFunction(FileTypeRegistry.class, this, "GetKeys", character.class, new Block((Body) () ->
{
Set<String> allKeysAsSet = this.ftr_map.keySet();
if (allKeysAsSet.isEmpty())
{
returnExtentNormal(res);
}
String[] allKeysAsArray = allKeysAsSet.toArray(new String[0]);
returnExtentNormal(TypeFactory.characterExtent(allKeysAsArray.length, allKeysAsArray));
}));
}
private static void initMap (object<? extends FileTypeRegistry> oFTR)
{
internalProcedure(FileTypeRegistry.class, "InitMap", new Block((Body) () ->
{
oFTR.ref().put(new character("123"), new character("application/vnd.lotus-1-2-3"));
oFTR.ref().put(new character("3dml"), new character("text/vnd.in3d.3dml"));
oFTR.ref().put(new character("3ds"), new character("image/x-3ds"));
oFTR.ref().put(new character("3g2"), new character("video/3gpp2"));
oFTR.ref().put(new character("3gp"), new character("video/3gpp"));
oFTR.ref().put(new character("7z"), new character("application/x-7z-compressed"));
oFTR.ref().put(new character("aab"), new character("application/x-authorware-bin"));
oFTR.ref().put(new character("aac"), new character("audio/x-aac"));
oFTR.ref().put(new character("aam"), new character("application/x-authorware-map"));
oFTR.ref().put(new character("aas"), new character("application/x-authorware-seg"));
oFTR.ref().put(new character("abs"), new character("audio/x-mpeg"));
oFTR.ref().put(new character("abw"), new character("application/x-abiword"));
oFTR.ref().put(new character("ac"), new character("application/pkix-attr-cert"));
oFTR.ref().put(new character("acc"), new character("application/vnd.americandynamics.acc"));
oFTR.ref().put(new character("ace"), new character("application/x-ace-compressed"));
oFTR.ref().put(new character("acu"), new character("application/vnd.acucobol"));
oFTR.ref().put(new character("acutc"), new character("application/vnd.acucorp"));
oFTR.ref().put(new character("adp"), new character("audio/adpcm"));
oFTR.ref().put(new character("aep"), new character("application/vnd.audiograph"));
oFTR.ref().put(new character("afm"), new character("application/x-font-type1"));
oFTR.ref().put(new character("afp"), new character("application/vnd.ibm.modcap"));
oFTR.ref().put(new character("ahead"), new character("application/vnd.ahead.space"));
oFTR.ref().put(new character("ai"), new character("application/postscript"));
oFTR.ref().put(new character("aif"), new character("audio/x-aiff"));
oFTR.ref().put(new character("aifc"), new character("audio/x-aiff"));
oFTR.ref().put(new character("aiff"), new character("audio/x-aiff"));
oFTR.ref().put(new character("aim"), new character("application/x-aim"));
oFTR.ref().put(new character("air"), new character("application/vnd.adobe.air-application-installer-package+zip"));
oFTR.ref().put(new character("ait"), new character("application/vnd.dvb.ait"));
oFTR.ref().put(new character("ami"), new character("application/vnd.amiga.ami"));
oFTR.ref().put(new character("anx"), new character("application/annodex"));
oFTR.ref().put(new character("apk"), new character("application/vnd.android.package-archive"));
oFTR.ref().put(new character("appcache"), new character("text/cache-manifest"));
oFTR.ref().put(new character("application"), new character("application/x-ms-application"));
oFTR.ref().put(new character("apr"), new character("application/vnd.lotus-approach"));
oFTR.ref().put(new character("arc"), new character("application/x-freearc"));
oFTR.ref().put(new character("art"), new character("image/x-jg"));
oFTR.ref().put(new character("asc"), new character("application/pgp-signature"));
oFTR.ref().put(new character("asf"), new character("video/x-ms-asf"));
oFTR.ref().put(new character("asm"), new character("text/x-asm"));
oFTR.ref().put(new character("aso"), new character("application/vnd.accpac.simply.aso"));
oFTR.ref().put(new character("asx"), new character("video/x-ms-asf"));
oFTR.ref().put(new character("atc"), new character("application/vnd.acucorp"));
oFTR.ref().put(new character("atom"), new character("application/atom+xml"));
oFTR.ref().put(new character("atomcat"), new character("application/atomcat+xml"));
oFTR.ref().put(new character("atomsvc"), new character("application/atomsvc+xml"));
oFTR.ref().put(new character("atx"), new character("application/vnd.antix.game-component"));
oFTR.ref().put(new character("au"), new character("audio/basic"));
oFTR.ref().put(new character("avi"), new character("video/x-msvideo"));
oFTR.ref().put(new character("avx"), new character("video/x-rad-screenplay"));
oFTR.ref().put(new character("aw"), new character("application/applixware"));
oFTR.ref().put(new character("axa"), new character("audio/annodex"));
oFTR.ref().put(new character("axv"), new character("video/annodex"));
oFTR.ref().put(new character("azf"), new character("application/vnd.airzip.filesecure.azf"));
oFTR.ref().put(new character("azs"), new character("application/vnd.airzip.filesecure.azs"));
oFTR.ref().put(new character("azw"), new character("application/vnd.amazon.ebook"));
oFTR.ref().put(new character("bat"), new character("application/x-msdownload"));
oFTR.ref().put(new character("bcpio"), new character("application/x-bcpio"));
oFTR.ref().put(new character("bdf"), new character("application/x-font-bdf"));
oFTR.ref().put(new character("bdm"), new character("application/vnd.syncml.dm+wbxml"));
oFTR.ref().put(new character("bed"), new character("application/vnd.realvnc.bed"));
oFTR.ref().put(new character("bh2"), new character("application/vnd.fujitsu.oasysprs"));
oFTR.ref().put(new character("bin"), new character("application/octet-stream"));
oFTR.ref().put(new character("blb"), new character("application/x-blorb"));
oFTR.ref().put(new character("blorb"), new character("application/x-blorb"));
oFTR.ref().put(new character("bmi"), new character("application/vnd.bmi"));
oFTR.ref().put(new character("bmp"), new character("image/bmp"));
oFTR.ref().put(new character("body"), new character("text/html"));
oFTR.ref().put(new character("book"), new character("application/vnd.framemaker"));
oFTR.ref().put(new character("box"), new character("application/vnd.previewsystems.box"));
oFTR.ref().put(new character("boz"), new character("application/x-bzip2"));
oFTR.ref().put(new character("bpk"), new character("application/octet-stream"));
oFTR.ref().put(new character("btif"), new character("image/prs.btif"));
oFTR.ref().put(new character("bz"), new character("application/x-bzip"));
oFTR.ref().put(new character("bz2"), new character("application/x-bzip2"));
oFTR.ref().put(new character("c"), new character("text/x-c"));
oFTR.ref().put(new character("c11amc"), new character("application/vnd.cluetrust.cartomobile-config"));
oFTR.ref().put(new character("c11amz"), new character("application/vnd.cluetrust.cartomobile-config-pkg"));
oFTR.ref().put(new character("c4d"), new character("application/vnd.clonk.c4group"));
oFTR.ref().put(new character("c4f"), new character("application/vnd.clonk.c4group"));
oFTR.ref().put(new character("c4g"), new character("application/vnd.clonk.c4group"));
oFTR.ref().put(new character("c4p"), new character("application/vnd.clonk.c4group"));
oFTR.ref().put(new character("c4u"), new character("application/vnd.clonk.c4group"));
oFTR.ref().put(new character("cab"), new character("application/vnd.ms-cab-compressed"));
oFTR.ref().put(new character("caf"), new character("audio/x-caf"));
oFTR.ref().put(new character("cap"), new character("application/vnd.tcpdump.pcap"));
oFTR.ref().put(new character("car"), new character("application/vnd.curl.car"));
oFTR.ref().put(new character("cat"), new character("application/vnd.ms-pki.seccat"));
oFTR.ref().put(new character("cb7"), new character("application/x-cbr"));
oFTR.ref().put(new character("cba"), new character("application/x-cbr"));
oFTR.ref().put(new character("cbr"), new character("application/x-cbr"));
oFTR.ref().put(new character("cbt"), new character("application/x-cbr"));
oFTR.ref().put(new character("cbz"), new character("application/x-cbr"));
oFTR.ref().put(new character("cc"), new character("text/x-c"));
oFTR.ref().put(new character("cct"), new character("application/x-director"));
oFTR.ref().put(new character("ccxml"), new character("application/ccxml+xml"));
oFTR.ref().put(new character("cdbcmsg"), new character("application/vnd.contact.cmsg"));
oFTR.ref().put(new character("cdf"), new character("application/x-cdf"));
oFTR.ref().put(new character("cdkey"), new character("application/vnd.mediastation.cdkey"));
oFTR.ref().put(new character("cdmia"), new character("application/cdmi-capability"));
oFTR.ref().put(new character("cdmic"), new character("application/cdmi-container"));
oFTR.ref().put(new character("cdmid"), new character("application/cdmi-domain"));
oFTR.ref().put(new character("cdmio"), new character("application/cdmi-object"));
oFTR.ref().put(new character("cdmiq"), new character("application/cdmi-queue"));
oFTR.ref().put(new character("cdx"), new character("chemical/x-cdx"));
oFTR.ref().put(new character("cdxml"), new character("application/vnd.chemdraw+xml"));
oFTR.ref().put(new character("cdy"), new character("application/vnd.cinderella"));
oFTR.ref().put(new character("cer"), new character("application/pkix-cert"));
oFTR.ref().put(new character("cfs"), new character("application/x-cfs-compressed"));
oFTR.ref().put(new character("cgm"), new character("image/cgm"));
oFTR.ref().put(new character("chat"), new character("application/x-chat"));
oFTR.ref().put(new character("chm"), new character("application/vnd.ms-htmlhelp"));
oFTR.ref().put(new character("chrt"), new character("application/vnd.kde.kchart"));
oFTR.ref().put(new character("cif"), new character("chemical/x-cif"));
oFTR.ref().put(new character("cii"), new character("application/vnd.anser-web-certificate-issue-initiation"));
oFTR.ref().put(new character("cil"), new character("application/vnd.ms-artgalry"));
oFTR.ref().put(new character("cla"), new character("application/vnd.claymore"));
oFTR.ref().put(new character("class"), new character("application/java"));
oFTR.ref().put(new character("clkk"), new character("application/vnd.crick.clicker.keyboard"));
oFTR.ref().put(new character("clkp"), new character("application/vnd.crick.clicker.palette"));
oFTR.ref().put(new character("clkt"), new character("application/vnd.crick.clicker.template"));
oFTR.ref().put(new character("clkw"), new character("application/vnd.crick.clicker.wordbank"));
oFTR.ref().put(new character("clkx"), new character("application/vnd.crick.clicker"));
oFTR.ref().put(new character("clp"), new character("application/x-msclip"));
oFTR.ref().put(new character("cmc"), new character("application/vnd.cosmocaller"));
oFTR.ref().put(new character("cmdf"), new character("chemical/x-cmdf"));
oFTR.ref().put(new character("cml"), new character("chemical/x-cml"));
oFTR.ref().put(new character("cmp"), new character("application/vnd.yellowriver-custom-menu"));
oFTR.ref().put(new character("cmx"), new character("image/x-cmx"));
oFTR.ref().put(new character("cod"), new character("application/vnd.rim.cod"));
oFTR.ref().put(new character("com"), new character("application/x-msdownload"));
oFTR.ref().put(new character("conf"), new character("text/plain"));
oFTR.ref().put(new character("cpio"), new character("application/x-cpio"));
oFTR.ref().put(new character("cpp"), new character("text/x-c"));
oFTR.ref().put(new character("cpt"), new character("application/mac-compactpro"));
oFTR.ref().put(new character("crd"), new character("application/x-mscardfile"));
oFTR.ref().put(new character("crl"), new character("application/pkix-crl"));
oFTR.ref().put(new character("crt"), new character("application/x-x509-ca-cert"));
oFTR.ref().put(new character("cryptonote"), new character("application/vnd.rig.cryptonote"));
oFTR.ref().put(new character("csh"), new character("application/x-csh"));
oFTR.ref().put(new character("csml"), new character("chemical/x-csml"));
oFTR.ref().put(new character("csp"), new character("application/vnd.commonspace"));
oFTR.ref().put(new character("css"), new character("text/css"));
oFTR.ref().put(new character("cst"), new character("application/x-director"));
oFTR.ref().put(new character("csv"), new character("text/csv"));
oFTR.ref().put(new character("cu"), new character("application/cu-seeme"));
oFTR.ref().put(new character("curl"), new character("text/vnd.curl"));
oFTR.ref().put(new character("cww"), new character("application/prs.cww"));
oFTR.ref().put(new character("cxt"), new character("application/x-director"));
oFTR.ref().put(new character("cxx"), new character("text/x-c"));
oFTR.ref().put(new character("dae"), new character("model/vnd.collada+xml"));
oFTR.ref().put(new character("daf"), new character("application/vnd.mobius.daf"));
oFTR.ref().put(new character("dart"), new character("application/vnd.dart"));
oFTR.ref().put(new character("dataless"), new character("application/vnd.fdsn.seed"));
oFTR.ref().put(new character("davmount"), new character("application/davmount+xml"));
oFTR.ref().put(new character("dbk"), new character("application/docbook+xml"));
oFTR.ref().put(new character("dcr"), new character("application/x-director"));
oFTR.ref().put(new character("dcurl"), new character("text/vnd.curl.dcurl"));
oFTR.ref().put(new character("dd2"), new character("application/vnd.oma.dd2+xml"));
oFTR.ref().put(new character("ddd"), new character("application/vnd.fujixerox.ddd"));
oFTR.ref().put(new character("deb"), new character("application/x-debian-package"));
oFTR.ref().put(new character("def"), new character("text/plain"));
oFTR.ref().put(new character("deploy"), new character("application/octet-stream"));
oFTR.ref().put(new character("der"), new character("application/x-x509-ca-cert"));
oFTR.ref().put(new character("dfac"), new character("application/vnd.dreamfactory"));
oFTR.ref().put(new character("dgc"), new character("application/x-dgc-compressed"));
oFTR.ref().put(new character("dib"), new character("image/bmp"));
oFTR.ref().put(new character("dic"), new character("text/x-c"));
oFTR.ref().put(new character("dir"), new character("application/x-director"));
oFTR.ref().put(new character("dis"), new character("application/vnd.mobius.dis"));
oFTR.ref().put(new character("dist"), new character("application/octet-stream"));
oFTR.ref().put(new character("distz"), new character("application/octet-stream"));
oFTR.ref().put(new character("djv"), new character("image/vnd.djvu"));
oFTR.ref().put(new character("djvu"), new character("image/vnd.djvu"));
oFTR.ref().put(new character("dll"), new character("application/x-msdownload"));
oFTR.ref().put(new character("dmg"), new character("application/x-apple-diskimage"));
oFTR.ref().put(new character("dmp"), new character("application/vnd.tcpdump.pcap"));
oFTR.ref().put(new character("dms"), new character("application/octet-stream"));
oFTR.ref().put(new character("dna"), new character("application/vnd.dna"));
oFTR.ref().put(new character("doc"), new character("application/msword"));
oFTR.ref().put(new character("docm"), new character("application/vnd.ms-word.document.macroenabled.12"));
oFTR.ref().put(new character("docx"), new character("application/vnd.openxmlformats-officedocument.wordprocessingml.document"));
oFTR.ref().put(new character("dot"), new character("application/msword"));
oFTR.ref().put(new character("dotm"), new character("application/vnd.ms-word.template.macroenabled.12"));
oFTR.ref().put(new character("dotx"), new character("application/vnd.openxmlformats-officedocument.wordprocessingml.template"));
oFTR.ref().put(new character("dp"), new character("application/vnd.osgi.dp"));
oFTR.ref().put(new character("dpg"), new character("application/vnd.dpgraph"));
oFTR.ref().put(new character("dra"), new character("audio/vnd.dra"));
oFTR.ref().put(new character("dsc"), new character("text/prs.lines.tag"));
oFTR.ref().put(new character("dssc"), new character("application/dssc+der"));
oFTR.ref().put(new character("dtb"), new character("application/x-dtbook+xml"));
oFTR.ref().put(new character("dtd"), new character("application/xml-dtd"));
oFTR.ref().put(new character("dts"), new character("audio/vnd.dts"));
oFTR.ref().put(new character("dtshd"), new character("audio/vnd.dts.hd"));
oFTR.ref().put(new character("dump"), new character("application/octet-stream"));
oFTR.ref().put(new character("dv"), new character("video/x-dv"));
oFTR.ref().put(new character("dvb"), new character("video/vnd.dvb.file"));
oFTR.ref().put(new character("dvi"), new character("application/x-dvi"));
oFTR.ref().put(new character("dwf"), new character("model/vnd.dwf"));
oFTR.ref().put(new character("dwg"), new character("image/vnd.dwg"));
oFTR.ref().put(new character("dxf"), new character("image/vnd.dxf"));
oFTR.ref().put(new character("dxp"), new character("application/vnd.spotfire.dxp"));
oFTR.ref().put(new character("dxr"), new character("application/x-director"));
oFTR.ref().put(new character("ecelp4800"), new character("audio/vnd.nuera.ecelp4800"));
oFTR.ref().put(new character("ecelp7470"), new character("audio/vnd.nuera.ecelp7470"));
oFTR.ref().put(new character("ecelp9600"), new character("audio/vnd.nuera.ecelp9600"));
oFTR.ref().put(new character("ecma"), new character("application/ecmascript"));
oFTR.ref().put(new character("edm"), new character("application/vnd.novadigm.edm"));
oFTR.ref().put(new character("edx"), new character("application/vnd.novadigm.edx"));
oFTR.ref().put(new character("efif"), new character("application/vnd.picsel"));
oFTR.ref().put(new character("ei6"), new character("application/vnd.pg.osasli"));
oFTR.ref().put(new character("elc"), new character("application/octet-stream"));
oFTR.ref().put(new character("emf"), new character("application/x-msmetafile"));
oFTR.ref().put(new character("eml"), new character("message/rfc822"));
oFTR.ref().put(new character("emma"), new character("application/emma+xml"));
oFTR.ref().put(new character("emz"), new character("application/x-msmetafile"));
oFTR.ref().put(new character("eol"), new character("audio/vnd.digital-winds"));
oFTR.ref().put(new character("eot"), new character("application/vnd.ms-fontobject"));
oFTR.ref().put(new character("eps"), new character("application/postscript"));
oFTR.ref().put(new character("epub"), new character("application/epub+zip"));
oFTR.ref().put(new character("es3"), new character("application/vnd.eszigno3+xml"));
oFTR.ref().put(new character("esa"), new character("application/vnd.osgi.subsystem"));
oFTR.ref().put(new character("esf"), new character("application/vnd.epson.esf"));
oFTR.ref().put(new character("et3"), new character("application/vnd.eszigno3+xml"));
oFTR.ref().put(new character("etx"), new character("text/x-setext"));
oFTR.ref().put(new character("eva"), new character("application/x-eva"));
oFTR.ref().put(new character("evy"), new character("application/x-envoy"));
oFTR.ref().put(new character("exe"), new character("application/octet-stream"));
oFTR.ref().put(new character("exi"), new character("application/exi"));
oFTR.ref().put(new character("ext"), new character("application/vnd.novadigm.ext"));
oFTR.ref().put(new character("ez"), new character("application/andrew-inset"));
oFTR.ref().put(new character("ez2"), new character("application/vnd.ezpix-album"));
oFTR.ref().put(new character("ez3"), new character("application/vnd.ezpix-package"));
oFTR.ref().put(new character("f"), new character("text/x-fortran"));
oFTR.ref().put(new character("f4v"), new character("video/x-f4v"));
oFTR.ref().put(new character("f77"), new character("text/x-fortran"));
oFTR.ref().put(new character("f90"), new character("text/x-fortran"));
oFTR.ref().put(new character("fbs"), new character("image/vnd.fastbidsheet"));
oFTR.ref().put(new character("fcdt"), new character("application/vnd.adobe.formscentral.fcdt"));
oFTR.ref().put(new character("fcs"), new character("application/vnd.isac.fcs"));
oFTR.ref().put(new character("fdf"), new character("application/vnd.fdf"));
oFTR.ref().put(new character("fe_launch"), new character("application/vnd.denovo.fcselayout-link"));
oFTR.ref().put(new character("fg5"), new character("application/vnd.fujitsu.oasysgp"));
oFTR.ref().put(new character("fgd"), new character("application/x-director"));
oFTR.ref().put(new character("fh"), new character("image/x-freehand"));
oFTR.ref().put(new character("fh4"), new character("image/x-freehand"));
oFTR.ref().put(new character("fh5"), new character("image/x-freehand"));
oFTR.ref().put(new character("fh7"), new character("image/x-freehand"));
oFTR.ref().put(new character("fhc"), new character("image/x-freehand"));
oFTR.ref().put(new character("fig"), new character("application/x-xfig"));
oFTR.ref().put(new character("flac"), new character("audio/flac"));
oFTR.ref().put(new character("fli"), new character("video/x-fli"));
oFTR.ref().put(new character("flo"), new character("application/vnd.micrografx.flo"));
oFTR.ref().put(new character("flv"), new character("video/x-flv"));
oFTR.ref().put(new character("flw"), new character("application/vnd.kde.kivio"));
oFTR.ref().put(new character("flx"), new character("text/vnd.fmi.flexstor"));
oFTR.ref().put(new character("fly"), new character("text/vnd.fly"));
oFTR.ref().put(new character("fm"), new character("application/vnd.framemaker"));
oFTR.ref().put(new character("fnc"), new character("application/vnd.frogans.fnc"));
oFTR.ref().put(new character("for"), new character("text/x-fortran"));
oFTR.ref().put(new character("fpx"), new character("image/vnd.fpx"));
oFTR.ref().put(new character("frame"), new character("application/vnd.framemaker"));
oFTR.ref().put(new character("fsc"), new character("application/vnd.fsc.weblaunch"));
oFTR.ref().put(new character("fst"), new character("image/vnd.fst"));
oFTR.ref().put(new character("ftc"), new character("application/vnd.fluxtime.clip"));
oFTR.ref().put(new character("fti"), new character("application/vnd.anser-web-funds-transfer-initiation"));
oFTR.ref().put(new character("fvt"), new character("video/vnd.fvt"));
oFTR.ref().put(new character("fxp"), new character("application/vnd.adobe.fxp"));
oFTR.ref().put(new character("fxpl"), new character("application/vnd.adobe.fxp"));
oFTR.ref().put(new character("fzs"), new character("application/vnd.fuzzysheet"));
oFTR.ref().put(new character("g2w"), new character("application/vnd.geoplan"));
oFTR.ref().put(new character("g3"), new character("image/g3fax"));
oFTR.ref().put(new character("g3w"), new character("application/vnd.geospace"));
oFTR.ref().put(new character("gac"), new character("application/vnd.groove-account"));
oFTR.ref().put(new character("gam"), new character("application/x-tads"));
oFTR.ref().put(new character("gbr"), new character("application/rpki-ghostbusters"));
oFTR.ref().put(new character("gca"), new character("application/x-gca-compressed"));
oFTR.ref().put(new character("gdl"), new character("model/vnd.gdl"));
oFTR.ref().put(new character("geo"), new character("application/vnd.dynageo"));
oFTR.ref().put(new character("gex"), new character("application/vnd.geometry-explorer"));
oFTR.ref().put(new character("ggb"), new character("application/vnd.geogebra.file"));
oFTR.ref().put(new character("ggt"), new character("application/vnd.geogebra.tool"));
oFTR.ref().put(new character("ghf"), new character("application/vnd.groove-help"));
oFTR.ref().put(new character("gif"), new character("image/gif"));
oFTR.ref().put(new character("gim"), new character("application/vnd.groove-identity-message"));
oFTR.ref().put(new character("gml"), new character("application/gml+xml"));
oFTR.ref().put(new character("gmx"), new character("application/vnd.gmx"));
oFTR.ref().put(new character("gnumeric"), new character("application/x-gnumeric"));
oFTR.ref().put(new character("gph"), new character("application/vnd.flographit"));
oFTR.ref().put(new character("gpx"), new character("application/gpx+xml"));
oFTR.ref().put(new character("gqf"), new character("application/vnd.grafeq"));
oFTR.ref().put(new character("gqs"), new character("application/vnd.grafeq"));
oFTR.ref().put(new character("gram"), new character("application/srgs"));
oFTR.ref().put(new character("gramps"), new character("application/x-gramps-xml"));
oFTR.ref().put(new character("gre"), new character("application/vnd.geometry-explorer"));
oFTR.ref().put(new character("grv"), new character("application/vnd.groove-injector"));
oFTR.ref().put(new character("grxml"), new character("application/srgs+xml"));
oFTR.ref().put(new character("gsf"), new character("application/x-font-ghostscript"));
oFTR.ref().put(new character("gtar"), new character("application/x-gtar"));
oFTR.ref().put(new character("gtm"), new character("application/vnd.groove-tool-message"));
oFTR.ref().put(new character("gtw"), new character("model/vnd.gtw"));
oFTR.ref().put(new character("gv"), new character("text/vnd.graphviz"));
oFTR.ref().put(new character("gxf"), new character("application/gxf"));
oFTR.ref().put(new character("gxt"), new character("application/vnd.geonext"));
oFTR.ref().put(new character("gz"), new character("application/x-gzip"));
oFTR.ref().put(new character("h"), new character("text/x-c"));
oFTR.ref().put(new character("h261"), new character("video/h261"));
oFTR.ref().put(new character("h263"), new character("video/h263"));
oFTR.ref().put(new character("h264"), new character("video/h264"));
oFTR.ref().put(new character("hal"), new character("application/vnd.hal+xml"));
oFTR.ref().put(new character("hbci"), new character("application/vnd.hbci"));
oFTR.ref().put(new character("hdf"), new character("application/x-hdf"));
oFTR.ref().put(new character("hh"), new character("text/x-c"));
oFTR.ref().put(new character("hlp"), new character("application/winhlp"));
oFTR.ref().put(new character("hpgl"), new character("application/vnd.hp-hpgl"));
oFTR.ref().put(new character("hpid"), new character("application/vnd.hp-hpid"));
oFTR.ref().put(new character("hps"), new character("application/vnd.hp-hps"));
oFTR.ref().put(new character("hqx"), new character("application/mac-binhex40"));
oFTR.ref().put(new character("htc"), new character("text/x-component"));
oFTR.ref().put(new character("htke"), new character("application/vnd.kenameaapp"));
oFTR.ref().put(new character("htm"), new character("text/html"));
oFTR.ref().put(new character("html"), new character("text/html"));
oFTR.ref().put(new character("hvd"), new character("application/vnd.yamaha.hv-dic"));
oFTR.ref().put(new character("hvp"), new character("application/vnd.yamaha.hv-voice"));
oFTR.ref().put(new character("hvs"), new character("application/vnd.yamaha.hv-script"));
oFTR.ref().put(new character("i2g"), new character("application/vnd.intergeo"));
oFTR.ref().put(new character("icc"), new character("application/vnd.iccprofile"));
oFTR.ref().put(new character("ice"), new character("x-conference/x-cooltalk"));
oFTR.ref().put(new character("icm"), new character("application/vnd.iccprofile"));
oFTR.ref().put(new character("ico"), new character("image/x-icon"));
oFTR.ref().put(new character("ics"), new character("text/calendar"));
oFTR.ref().put(new character("ief"), new character("image/ief"));
oFTR.ref().put(new character("ifb"), new character("text/calendar"));
oFTR.ref().put(new character("ifm"), new character("application/vnd.shana.informed.formdata"));
oFTR.ref().put(new character("iges"), new character("model/iges"));
oFTR.ref().put(new character("igl"), new character("application/vnd.igloader"));
oFTR.ref().put(new character("igm"), new character("application/vnd.insors.igm"));
oFTR.ref().put(new character("igs"), new character("model/iges"));
oFTR.ref().put(new character("igx"), new character("application/vnd.micrografx.igx"));
oFTR.ref().put(new character("iif"), new character("application/vnd.shana.informed.interchange"));
oFTR.ref().put(new character("imp"), new character("application/vnd.accpac.simply.imp"));
oFTR.ref().put(new character("ims"), new character("application/vnd.ms-ims"));
oFTR.ref().put(new character("in"), new character("text/plain"));
oFTR.ref().put(new character("ink"), new character("application/inkml+xml"));
oFTR.ref().put(new character("inkml"), new character("application/inkml+xml"));
oFTR.ref().put(new character("install"), new character("application/x-install-instructions"));
oFTR.ref().put(new character("iota"), new character("application/vnd.astraea-software.iota"));
oFTR.ref().put(new character("ipfix"), new character("application/ipfix"));
oFTR.ref().put(new character("ipk"), new character("application/vnd.shana.informed.package"));
oFTR.ref().put(new character("irm"), new character("application/vnd.ibm.rights-management"));
oFTR.ref().put(new character("irp"), new character("application/vnd.irepository.package+xml"));
oFTR.ref().put(new character("iso"), new character("application/x-iso9660-image"));
oFTR.ref().put(new character("itp"), new character("application/vnd.shana.informed.formtemplate"));
oFTR.ref().put(new character("ivp"), new character("application/vnd.immervision-ivp"));
oFTR.ref().put(new character("ivu"), new character("application/vnd.immervision-ivu"));
oFTR.ref().put(new character("jad"), new character("text/vnd.sun.j2me.app-descriptor"));
oFTR.ref().put(new character("jam"), new character("application/vnd.jam"));
oFTR.ref().put(new character("jar"), new character("application/java-archive"));
oFTR.ref().put(new character("java"), new character("text/x-java-source"));
oFTR.ref().put(new character("jisp"), new character("application/vnd.jisp"));
oFTR.ref().put(new character("jlt"), new character("application/vnd.hp-jlyt"));
oFTR.ref().put(new character("jnlp"), new character("application/x-java-jnlp-file"));
oFTR.ref().put(new character("joda"), new character("application/vnd.joost.joda-archive"));
oFTR.ref().put(new character("jpe"), new character("image/jpeg"));
oFTR.ref().put(new character("jpeg"), new character("image/jpeg"));
oFTR.ref().put(new character("jpg"), new character("image/jpeg"));
oFTR.ref().put(new character("jpgm"), new character("video/jpm"));
oFTR.ref().put(new character("jpgv"), new character("video/jpeg"));
oFTR.ref().put(new character("jpm"), new character("video/jpm"));
oFTR.ref().put(new character("js"), new character("application/javascript"));
oFTR.ref().put(new character("jsf"), new character("text/plain"));
oFTR.ref().put(new character("json"), new character("application/json"));
oFTR.ref().put(new character("jsonml"), new character("application/jsonml+json"));
oFTR.ref().put(new character("jspf"), new character("text/plain"));
oFTR.ref().put(new character("kar"), new character("audio/midi"));
oFTR.ref().put(new character("karbon"), new character("application/vnd.kde.karbon"));
oFTR.ref().put(new character("kfo"), new character("application/vnd.kde.kformula"));
oFTR.ref().put(new character("kia"), new character("application/vnd.kidspiration"));
oFTR.ref().put(new character("kml"), new character("application/vnd.google-earth.kml+xml"));
oFTR.ref().put(new character("kmz"), new character("application/vnd.google-earth.kmz"));
oFTR.ref().put(new character("kne"), new character("application/vnd.kinar"));
oFTR.ref().put(new character("knp"), new character("application/vnd.kinar"));
oFTR.ref().put(new character("kon"), new character("application/vnd.kde.kontour"));
oFTR.ref().put(new character("kpr"), new character("application/vnd.kde.kpresenter"));
oFTR.ref().put(new character("kpt"), new character("application/vnd.kde.kpresenter"));
oFTR.ref().put(new character("kpxx"), new character("application/vnd.ds-keypoint"));
oFTR.ref().put(new character("ksp"), new character("application/vnd.kde.kspread"));
oFTR.ref().put(new character("ktr"), new character("application/vnd.kahootz"));
oFTR.ref().put(new character("ktx"), new character("image/ktx"));
oFTR.ref().put(new character("ktz"), new character("application/vnd.kahootz"));
oFTR.ref().put(new character("kwd"), new character("application/vnd.kde.kword"));
oFTR.ref().put(new character("kwt"), new character("application/vnd.kde.kword"));
oFTR.ref().put(new character("lasxml"), new character("application/vnd.las.las+xml"));
oFTR.ref().put(new character("latex"), new character("application/x-latex"));
oFTR.ref().put(new character("lbd"), new character("application/vnd.llamagraphics.life-balance.desktop"));
oFTR.ref().put(new character("lbe"), new character("application/vnd.llamagraphics.life-balance.exchange+xml"));
oFTR.ref().put(new character("les"), new character("application/vnd.hhe.lesson-player"));
oFTR.ref().put(new character("lha"), new character("application/x-lzh-compressed"));
oFTR.ref().put(new character("link66"), new character("application/vnd.route66.link66+xml"));
oFTR.ref().put(new character("list"), new character("text/plain"));
oFTR.ref().put(new character("list3820"), new character("application/vnd.ibm.modcap"));
oFTR.ref().put(new character("listafp"), new character("application/vnd.ibm.modcap"));
oFTR.ref().put(new character("lnk"), new character("application/x-ms-shortcut"));
oFTR.ref().put(new character("log"), new character("text/plain"));
oFTR.ref().put(new character("lostxml"), new character("application/lost+xml"));
oFTR.ref().put(new character("lrf"), new character("application/octet-stream"));
oFTR.ref().put(new character("lrm"), new character("application/vnd.ms-lrm"));
oFTR.ref().put(new character("ltf"), new character("application/vnd.frogans.ltf"));
oFTR.ref().put(new character("lvp"), new character("audio/vnd.lucent.voice"));
oFTR.ref().put(new character("lwp"), new character("application/vnd.lotus-wordpro"));
oFTR.ref().put(new character("lzh"), new character("application/x-lzh-compressed"));
oFTR.ref().put(new character("m13"), new character("application/x-msmediaview"));
oFTR.ref().put(new character("m14"), new character("application/x-msmediaview"));
oFTR.ref().put(new character("m1v"), new character("video/mpeg"));
oFTR.ref().put(new character("m21"), new character("application/mp21"));
oFTR.ref().put(new character("m2a"), new character("audio/mpeg"));
oFTR.ref().put(new character("m2v"), new character("video/mpeg"));
oFTR.ref().put(new character("m3a"), new character("audio/mpeg"));
oFTR.ref().put(new character("m3u"), new character("audio/x-mpegurl"));
oFTR.ref().put(new character("m3u8"), new character("application/vnd.apple.mpegurl"));
oFTR.ref().put(new character("m4a"), new character("audio/mp4"));
oFTR.ref().put(new character("m4b"), new character("audio/mp4"));
oFTR.ref().put(new character("m4r"), new character("audio/mp4"));
oFTR.ref().put(new character("m4u"), new character("video/vnd.mpegurl"));
oFTR.ref().put(new character("m4v"), new character("video/mp4"));
oFTR.ref().put(new character("ma"), new character("application/mathematica"));
oFTR.ref().put(new character("mac"), new character("image/x-macpaint"));
oFTR.ref().put(new character("mads"), new character("application/mads+xml"));
oFTR.ref().put(new character("mag"), new character("application/vnd.ecowin.chart"));
oFTR.ref().put(new character("maker"), new character("application/vnd.framemaker"));
oFTR.ref().put(new character("man"), new character("text/troff"));
oFTR.ref().put(new character("mar"), new character("application/octet-stream"));
oFTR.ref().put(new character("mathml"), new character("application/mathml+xml"));
oFTR.ref().put(new character("mb"), new character("application/mathematica"));
oFTR.ref().put(new character("mbk"), new character("application/vnd.mobius.mbk"));
oFTR.ref().put(new character("mbox"), new character("application/mbox"));
oFTR.ref().put(new character("mc1"), new character("application/vnd.medcalcdata"));
oFTR.ref().put(new character("mcd"), new character("application/vnd.mcd"));
oFTR.ref().put(new character("mcurl"), new character("text/vnd.curl.mcurl"));
oFTR.ref().put(new character("mdb"), new character("application/x-msaccess"));
oFTR.ref().put(new character("mdi"), new character("image/vnd.ms-modi"));
oFTR.ref().put(new character("me"), new character("text/troff"));
oFTR.ref().put(new character("mesh"), new character("model/mesh"));
oFTR.ref().put(new character("meta4"), new character("application/metalink4+xml"));
oFTR.ref().put(new character("metalink"), new character("application/metalink+xml"));
oFTR.ref().put(new character("mets"), new character("application/mets+xml"));
oFTR.ref().put(new character("mfm"), new character("application/vnd.mfmp"));
oFTR.ref().put(new character("mft"), new character("application/rpki-manifest"));
oFTR.ref().put(new character("mgp"), new character("application/vnd.osgeo.mapguide.package"));
oFTR.ref().put(new character("mgz"), new character("application/vnd.proteus.magazine"));
oFTR.ref().put(new character("mid"), new character("audio/midi"));
oFTR.ref().put(new character("midi"), new character("audio/midi"));
oFTR.ref().put(new character("mie"), new character("application/x-mie"));
oFTR.ref().put(new character("mif"), new character("application/x-mif"));
oFTR.ref().put(new character("mime"), new character("message/rfc822"));
oFTR.ref().put(new character("mj2"), new character("video/mj2"));
oFTR.ref().put(new character("mjp2"), new character("video/mj2"));
oFTR.ref().put(new character("mk3d"), new character("video/x-matroska"));
oFTR.ref().put(new character("mka"), new character("audio/x-matroska"));
oFTR.ref().put(new character("mks"), new character("video/x-matroska"));
oFTR.ref().put(new character("mkv"), new character("video/x-matroska"));
oFTR.ref().put(new character("mlp"), new character("application/vnd.dolby.mlp"));
oFTR.ref().put(new character("mmd"), new character("application/vnd.chipnuts.karaoke-mmd"));
oFTR.ref().put(new character("mmf"), new character("application/vnd.smaf"));
oFTR.ref().put(new character("mmr"), new character("image/vnd.fujixerox.edmics-mmr"));
oFTR.ref().put(new character("mng"), new character("video/x-mng"));
oFTR.ref().put(new character("mny"), new character("application/x-msmoney"));
oFTR.ref().put(new character("mobi"), new character("application/x-mobipocket-ebook"));
oFTR.ref().put(new character("mods"), new character("application/mods+xml"));
oFTR.ref().put(new character("mov"), new character("video/quicktime"));
oFTR.ref().put(new character("movie"), new character("video/x-sgi-movie"));
oFTR.ref().put(new character("mp1"), new character("audio/mpeg"));
oFTR.ref().put(new character("mp2"), new character("audio/mpeg"));
oFTR.ref().put(new character("mp21"), new character("application/mp21"));
oFTR.ref().put(new character("mp2a"), new character("audio/mpeg"));
oFTR.ref().put(new character("mp3"), new character("audio/mpeg"));
oFTR.ref().put(new character("mp4"), new character("video/mp4"));
oFTR.ref().put(new character("mp4a"), new character("audio/mp4"));
oFTR.ref().put(new character("mp4s"), new character("application/mp4"));
oFTR.ref().put(new character("mp4v"), new character("video/mp4"));
oFTR.ref().put(new character("mpa"), new character("audio/mpeg"));
oFTR.ref().put(new character("mpc"), new character("application/vnd.mophun.certificate"));
oFTR.ref().put(new character("mpe"), new character("video/mpeg"));
oFTR.ref().put(new character("mpeg"), new character("video/mpeg"));
oFTR.ref().put(new character("mpega"), new character("audio/x-mpeg"));
oFTR.ref().put(new character("mpg"), new character("video/mpeg"));
oFTR.ref().put(new character("mpg4"), new character("video/mp4"));
oFTR.ref().put(new character("mpga"), new character("audio/mpeg"));
oFTR.ref().put(new character("mpkg"), new character("application/vnd.apple.installer+xml"));
oFTR.ref().put(new character("mpm"), new character("application/vnd.blueice.multipass"));
oFTR.ref().put(new character("mpn"), new character("application/vnd.mophun.application"));
oFTR.ref().put(new character("mpp"), new character("application/vnd.ms-project"));
oFTR.ref().put(new character("mpt"), new character("application/vnd.ms-project"));
oFTR.ref().put(new character("mpv2"), new character("video/mpeg2"));
oFTR.ref().put(new character("mpy"), new character("application/vnd.ibm.minipay"));
oFTR.ref().put(new character("mqy"), new character("application/vnd.mobius.mqy"));
oFTR.ref().put(new character("mrc"), new character("application/marc"));
oFTR.ref().put(new character("mrcx"), new character("application/marcxml+xml"));
oFTR.ref().put(new character("ms"), new character("text/troff"));
oFTR.ref().put(new character("mscml"), new character("application/mediaservercontrol+xml"));
oFTR.ref().put(new character("mseed"), new character("application/vnd.fdsn.mseed"));
oFTR.ref().put(new character("mseq"), new character("application/vnd.mseq"));
oFTR.ref().put(new character("msf"), new character("application/vnd.epson.msf"));
oFTR.ref().put(new character("msh"), new character("model/mesh"));
oFTR.ref().put(new character("msi"), new character("application/x-msdownload"));
oFTR.ref().put(new character("msl"), new character("application/vnd.mobius.msl"));
oFTR.ref().put(new character("msty"), new character("application/vnd.muvee.style"));
oFTR.ref().put(new character("mts"), new character("model/vnd.mts"));
oFTR.ref().put(new character("mus"), new character("application/vnd.musician"));
oFTR.ref().put(new character("musicxml"), new character("application/vnd.recordare.musicxml+xml"));
oFTR.ref().put(new character("mvb"), new character("application/x-msmediaview"));
oFTR.ref().put(new character("mwf"), new character("application/vnd.mfer"));
oFTR.ref().put(new character("mxf"), new character("application/mxf"));
oFTR.ref().put(new character("mxl"), new character("application/vnd.recordare.musicxml"));
oFTR.ref().put(new character("mxml"), new character("application/xv+xml"));
oFTR.ref().put(new character("mxs"), new character("application/vnd.triscape.mxs"));
oFTR.ref().put(new character("mxu"), new character("video/vnd.mpegurl"));
oFTR.ref().put(new character("n-gage"), new character("application/vnd.nokia.n-gage.symbian.install"));
oFTR.ref().put(new character("n3"), new character("text/n3"));
oFTR.ref().put(new character("nb"), new character("application/mathematica"));
oFTR.ref().put(new character("nbp"), new character("application/vnd.wolfram.player"));
oFTR.ref().put(new character("nc"), new character("application/x-netcdf"));
oFTR.ref().put(new character("ncx"), new character("application/x-dtbncx+xml"));
oFTR.ref().put(new character("nfo"), new character("text/x-nfo"));
oFTR.ref().put(new character("ngdat"), new character("application/vnd.nokia.n-gage.data"));
oFTR.ref().put(new character("nitf"), new character("application/vnd.nitf"));
oFTR.ref().put(new character("nlu"), new character("application/vnd.neurolanguage.nlu"));
oFTR.ref().put(new character("nml"), new character("application/vnd.enliven"));
oFTR.ref().put(new character("nnd"), new character("application/vnd.noblenet-directory"));
oFTR.ref().put(new character("nns"), new character("application/vnd.noblenet-sealer"));
oFTR.ref().put(new character("nnw"), new character("application/vnd.noblenet-web"));
oFTR.ref().put(new character("npx"), new character("image/vnd.net-fpx"));
oFTR.ref().put(new character("nsc"), new character("application/x-conference"));
oFTR.ref().put(new character("nsf"), new character("application/vnd.lotus-notes"));
oFTR.ref().put(new character("ntf"), new character("application/vnd.nitf"));
oFTR.ref().put(new character("nzb"), new character("application/x-nzb"));
oFTR.ref().put(new character("oa2"), new character("application/vnd.fujitsu.oasys2"));
oFTR.ref().put(new character("oa3"), new character("application/vnd.fujitsu.oasys3"));
oFTR.ref().put(new character("oas"), new character("application/vnd.fujitsu.oasys"));
oFTR.ref().put(new character("obd"), new character("application/x-msbinder"));
oFTR.ref().put(new character("obj"), new character("application/x-tgif"));
oFTR.ref().put(new character("oda"), new character("application/oda"));
oFTR.ref().put(new character("odb"), new character("application/vnd.oasis.opendocument.database"));
oFTR.ref().put(new character("odc"), new character("application/vnd.oasis.opendocument.chart"));
oFTR.ref().put(new character("odf"), new character("application/vnd.oasis.opendocument.formula"));
oFTR.ref().put(new character("odft"), new character("application/vnd.oasis.opendocument.formula-template"));
oFTR.ref().put(new character("odg"), new character("application/vnd.oasis.opendocument.graphics"));
oFTR.ref().put(new character("odi"), new character("application/vnd.oasis.opendocument.image"));
oFTR.ref().put(new character("odm"), new character("application/vnd.oasis.opendocument.text-master"));
oFTR.ref().put(new character("odp"), new character("application/vnd.oasis.opendocument.presentation"));
oFTR.ref().put(new character("ods"), new character("application/vnd.oasis.opendocument.spreadsheet"));
oFTR.ref().put(new character("odt"), new character("application/vnd.oasis.opendocument.text"));
oFTR.ref().put(new character("oga"), new character("audio/ogg"));
oFTR.ref().put(new character("ogg"), new character("audio/ogg"));
oFTR.ref().put(new character("ogv"), new character("video/ogg"));
oFTR.ref().put(new character("ogx"), new character("application/ogg"));
oFTR.ref().put(new character("omdoc"), new character("application/omdoc+xml"));
oFTR.ref().put(new character("onepkg"), new character("application/onenote"));
oFTR.ref().put(new character("onetmp"), new character("application/onenote"));
oFTR.ref().put(new character("onetoc"), new character("application/onenote"));
oFTR.ref().put(new character("onetoc2"), new character("application/onenote"));
oFTR.ref().put(new character("opf"), new character("application/oebps-package+xml"));
oFTR.ref().put(new character("opml"), new character("text/x-opml"));
oFTR.ref().put(new character("oprc"), new character("application/vnd.palm"));
oFTR.ref().put(new character("org"), new character("application/vnd.lotus-organizer"));
oFTR.ref().put(new character("osf"), new character("application/vnd.yamaha.openscoreformat"));
oFTR.ref().put(new character("osfpvg"), new character("application/vnd.yamaha.openscoreformat.osfpvg+xml"));
oFTR.ref().put(new character("otc"), new character("application/vnd.oasis.opendocument.chart-template"));
oFTR.ref().put(new character("otf"), new character("application/x-font-otf"));
oFTR.ref().put(new character("otg"), new character("application/vnd.oasis.opendocument.graphics-template"));
oFTR.ref().put(new character("oth"), new character("application/vnd.oasis.opendocument.text-web"));
oFTR.ref().put(new character("oti"), new character("application/vnd.oasis.opendocument.image-template"));
oFTR.ref().put(new character("otp"), new character("application/vnd.oasis.opendocument.presentation-template"));
oFTR.ref().put(new character("ots"), new character("application/vnd.oasis.opendocument.spreadsheet-template"));
oFTR.ref().put(new character("ott"), new character("application/vnd.oasis.opendocument.text-template"));
oFTR.ref().put(new character("oxps"), new character("application/oxps"));
oFTR.ref().put(new character("oxt"), new character("application/vnd.openofficeorg.extension"));
oFTR.ref().put(new character("p"), new character("text/x-pascal"));
oFTR.ref().put(new character("p10"), new character("application/pkcs10"));
oFTR.ref().put(new character("p12"), new character("application/x-pkcs12"));
oFTR.ref().put(new character("p7b"), new character("application/x-pkcs7-certificates"));
oFTR.ref().put(new character("p7c"), new character("application/pkcs7-mime"));
oFTR.ref().put(new character("p7m"), new character("application/pkcs7-mime"));
oFTR.ref().put(new character("p7r"), new character("application/x-pkcs7-certreqresp"));
oFTR.ref().put(new character("p7s"), new character("application/pkcs7-signature"));
oFTR.ref().put(new character("p8"), new character("application/pkcs8"));
oFTR.ref().put(new character("pas"), new character("text/x-pascal"));
oFTR.ref().put(new character("paw"), new character("application/vnd.pawaafile"));
oFTR.ref().put(new character("pbd"), new character("application/vnd.powerbuilder6"));
oFTR.ref().put(new character("pbm"), new character("image/x-portable-bitmap"));
oFTR.ref().put(new character("pcap"), new character("application/vnd.tcpdump.pcap"));
oFTR.ref().put(new character("pcf"), new character("application/x-font-pcf"));
oFTR.ref().put(new character("pcl"), new character("application/vnd.hp-pcl"));
oFTR.ref().put(new character("pclxl"), new character("application/vnd.hp-pclxl"));
oFTR.ref().put(new character("pct"), new character("image/pict"));
oFTR.ref().put(new character("pcurl"), new character("application/vnd.curl.pcurl"));
oFTR.ref().put(new character("pcx"), new character("image/x-pcx"));
oFTR.ref().put(new character("pdb"), new character("application/vnd.palm"));
oFTR.ref().put(new character("pdf"), new character("application/pdf"));
oFTR.ref().put(new character("pfa"), new character("application/x-font-type1"));
oFTR.ref().put(new character("pfb"), new character("application/x-font-type1"));
oFTR.ref().put(new character("pfm"), new character("application/x-font-type1"));
oFTR.ref().put(new character("pfr"), new character("application/font-tdpfr"));
oFTR.ref().put(new character("pfx"), new character("application/x-pkcs12"));
oFTR.ref().put(new character("pgm"), new character("image/x-portable-graymap"));
oFTR.ref().put(new character("pgn"), new character("application/x-chess-pgn"));
oFTR.ref().put(new character("pgp"), new character("application/pgp-encrypted"));
oFTR.ref().put(new character("pic"), new character("image/pict"));
oFTR.ref().put(new character("pict"), new character("image/pict"));
oFTR.ref().put(new character("pkg"), new character("application/octet-stream"));
oFTR.ref().put(new character("pki"), new character("application/pkixcmp"));
oFTR.ref().put(new character("pkipath"), new character("application/pkix-pkipath"));
oFTR.ref().put(new character("plb"), new character("application/vnd.3gpp.pic-bw-large"));
oFTR.ref().put(new character("plc"), new character("application/vnd.mobius.plc"));
oFTR.ref().put(new character("plf"), new character("application/vnd.pocketlearn"));
oFTR.ref().put(new character("pls"), new character("audio/x-scpls"));
oFTR.ref().put(new character("pml"), new character("application/vnd.ctc-posml"));
oFTR.ref().put(new character("png"), new character("image/png"));
oFTR.ref().put(new character("pnm"), new character("image/x-portable-anymap"));
oFTR.ref().put(new character("pnt"), new character("image/x-macpaint"));
oFTR.ref().put(new character("portpkg"), new character("application/vnd.macports.portpkg"));
oFTR.ref().put(new character("pot"), new character("application/vnd.ms-powerpoint"));
oFTR.ref().put(new character("potm"), new character("application/vnd.ms-powerpoint.template.macroenabled.12"));
oFTR.ref().put(new character("potx"), new character("application/vnd.openxmlformats-officedocument.presentationml.template"));
oFTR.ref().put(new character("ppam"), new character("application/vnd.ms-powerpoint.addin.macroenabled.12"));
oFTR.ref().put(new character("ppd"), new character("application/vnd.cups-ppd"));
oFTR.ref().put(new character("ppm"), new character("image/x-portable-pixmap"));
oFTR.ref().put(new character("pps"), new character("application/vnd.ms-powerpoint"));
oFTR.ref().put(new character("ppsm"), new character("application/vnd.ms-powerpoint.slideshow.macroenabled.12"));
oFTR.ref().put(new character("ppsx"), new character("application/vnd.openxmlformats-officedocument.presentationml.slideshow"));
oFTR.ref().put(new character("ppt"), new character("application/vnd.ms-powerpoint"));
oFTR.ref().put(new character("pptm"), new character("application/vnd.ms-powerpoint.presentation.macroenabled.12"));
oFTR.ref().put(new character("pptx"), new character("application/vnd.openxmlformats-officedocument.presentationml.presentation"));
oFTR.ref().put(new character("pqa"), new character("application/vnd.palm"));
oFTR.ref().put(new character("prc"), new character("application/x-mobipocket-ebook"));
oFTR.ref().put(new character("pre"), new character("application/vnd.lotus-freelance"));
oFTR.ref().put(new character("prf"), new character("application/pics-rules"));
oFTR.ref().put(new character("ps"), new character("application/postscript"));
oFTR.ref().put(new character("psb"), new character("application/vnd.3gpp.pic-bw-small"));
oFTR.ref().put(new character("psd"), new character("image/vnd.adobe.photoshop"));
oFTR.ref().put(new character("psf"), new character("application/x-font-linux-psf"));
oFTR.ref().put(new character("pskcxml"), new character("application/pskc+xml"));
oFTR.ref().put(new character("ptid"), new character("application/vnd.pvi.ptid1"));
oFTR.ref().put(new character("pub"), new character("application/x-mspublisher"));
oFTR.ref().put(new character("pvb"), new character("application/vnd.3gpp.pic-bw-var"));
oFTR.ref().put(new character("pwn"), new character("application/vnd.3m.post-it-notes"));
oFTR.ref().put(new character("pya"), new character("audio/vnd.ms-playready.media.pya"));
oFTR.ref().put(new character("pyv"), new character("video/vnd.ms-playready.media.pyv"));
oFTR.ref().put(new character("qam"), new character("application/vnd.epson.quickanime"));
oFTR.ref().put(new character("qbo"), new character("application/vnd.intu.qbo"));
oFTR.ref().put(new character("qfx"), new character("application/vnd.intu.qfx"));
oFTR.ref().put(new character("qps"), new character("application/vnd.publishare-delta-tree"));
oFTR.ref().put(new character("qt"), new character("video/quicktime"));
oFTR.ref().put(new character("qti"), new character("image/x-quicktime"));
oFTR.ref().put(new character("qtif"), new character("image/x-quicktime"));
oFTR.ref().put(new character("qwd"), new character("application/vnd.quark.quarkxpress"));
oFTR.ref().put(new character("qwt"), new character("application/vnd.quark.quarkxpress"));
oFTR.ref().put(new character("qxb"), new character("application/vnd.quark.quarkxpress"));
oFTR.ref().put(new character("qxd"), new character("application/vnd.quark.quarkxpress"));
oFTR.ref().put(new character("qxl"), new character("application/vnd.quark.quarkxpress"));
oFTR.ref().put(new character("qxt"), new character("application/vnd.quark.quarkxpress"));
oFTR.ref().put(new character("ra"), new character("audio/x-pn-realaudio"));
oFTR.ref().put(new character("ram"), new character("audio/x-pn-realaudio"));
oFTR.ref().put(new character("rar"), new character("application/x-rar-compressed"));
oFTR.ref().put(new character("ras"), new character("image/x-cmu-raster"));
oFTR.ref().put(new character("rcprofile"), new character("application/vnd.ipunplugged.rcprofile"));
oFTR.ref().put(new character("rdf"), new character("application/rdf+xml"));
oFTR.ref().put(new character("rdz"), new character("application/vnd.data-vision.rdz"));
oFTR.ref().put(new character("rep"), new character("application/vnd.businessobjects"));
oFTR.ref().put(new character("res"), new character("application/x-dtbresource+xml"));
oFTR.ref().put(new character("rgb"), new character("image/x-rgb"));
oFTR.ref().put(new character("rif"), new character("application/reginfo+xml"));
oFTR.ref().put(new character("rip"), new character("audio/vnd.rip"));
oFTR.ref().put(new character("ris"), new character("application/x-research-info-systems"));
oFTR.ref().put(new character("rl"), new character("application/resource-lists+xml"));
oFTR.ref().put(new character("rlc"), new character("image/vnd.fujixerox.edmics-rlc"));
oFTR.ref().put(new character("rld"), new character("application/resource-lists-diff+xml"));
oFTR.ref().put(new character("rm"), new character("application/vnd.rn-realmedia"));
oFTR.ref().put(new character("rmi"), new character("audio/midi"));
oFTR.ref().put(new character("rmp"), new character("audio/x-pn-realaudio-plugin"));
oFTR.ref().put(new character("rms"), new character("application/vnd.jcp.javame.midlet-rms"));
oFTR.ref().put(new character("rmvb"), new character("application/vnd.rn-realmedia-vbr"));
oFTR.ref().put(new character("rnc"), new character("application/relax-ng-compact-syntax"));
oFTR.ref().put(new character("roa"), new character("application/rpki-roa"));
oFTR.ref().put(new character("roff"), new character("text/troff"));
oFTR.ref().put(new character("rp9"), new character("application/vnd.cloanto.rp9"));
oFTR.ref().put(new character("rpss"), new character("application/vnd.nokia.radio-presets"));
oFTR.ref().put(new character("rpst"), new character("application/vnd.nokia.radio-preset"));
oFTR.ref().put(new character("rq"), new character("application/sparql-query"));
oFTR.ref().put(new character("rs"), new character("application/rls-services+xml"));
oFTR.ref().put(new character("rsd"), new character("application/rsd+xml"));
oFTR.ref().put(new character("rss"), new character("application/rss+xml"));
oFTR.ref().put(new character("rtf"), new character("application/rtf"));
oFTR.ref().put(new character("rtx"), new character("text/richtext"));
oFTR.ref().put(new character("s"), new character("text/x-asm"));
oFTR.ref().put(new character("s3m"), new character("audio/s3m"));
oFTR.ref().put(new character("saf"), new character("application/vnd.yamaha.smaf-audio"));
oFTR.ref().put(new character("sbml"), new character("application/sbml+xml"));
oFTR.ref().put(new character("sc"), new character("application/vnd.ibm.secure-container"));
oFTR.ref().put(new character("scd"), new character("application/x-msschedule"));
oFTR.ref().put(new character("scm"), new character("application/vnd.lotus-screencam"));
oFTR.ref().put(new character("scq"), new character("application/scvp-cv-request"));
oFTR.ref().put(new character("scs"), new character("application/scvp-cv-response"));
oFTR.ref().put(new character("scurl"), new character("text/vnd.curl.scurl"));
oFTR.ref().put(new character("sda"), new character("application/vnd.stardivision.draw"));
oFTR.ref().put(new character("sdc"), new character("application/vnd.stardivision.calc"));
oFTR.ref().put(new character("sdd"), new character("application/vnd.stardivision.impress"));
oFTR.ref().put(new character("sdkd"), new character("application/vnd.solent.sdkm+xml"));
oFTR.ref().put(new character("sdkm"), new character("application/vnd.solent.sdkm+xml"));
oFTR.ref().put(new character("sdp"), new character("application/sdp"));
oFTR.ref().put(new character("sdw"), new character("application/vnd.stardivision.writer"));
oFTR.ref().put(new character("see"), new character("application/vnd.seemail"));
oFTR.ref().put(new character("seed"), new character("application/vnd.fdsn.seed"));
oFTR.ref().put(new character("sema"), new character("application/vnd.sema"));
oFTR.ref().put(new character("semd"), new character("application/vnd.semd"));
oFTR.ref().put(new character("semf"), new character("application/vnd.semf"));
oFTR.ref().put(new character("ser"), new character("application/java-serialized-object"));
oFTR.ref().put(new character("setpay"), new character("application/set-payment-initiation"));
oFTR.ref().put(new character("setreg"), new character("application/set-registration-initiation"));
oFTR.ref().put(new character("sfd-hdstx"), new character("application/vnd.hydrostatix.sof-data"));
oFTR.ref().put(new character("sfs"), new character("application/vnd.spotfire.sfs"));
oFTR.ref().put(new character("sfv"), new character("text/x-sfv"));
oFTR.ref().put(new character("sgi"), new character("image/sgi"));
oFTR.ref().put(new character("sgl"), new character("application/vnd.stardivision.writer-global"));
oFTR.ref().put(new character("sgm"), new character("text/sgml"));
oFTR.ref().put(new character("sgml"), new character("text/sgml"));
oFTR.ref().put(new character("sh"), new character("application/x-sh"));
oFTR.ref().put(new character("shar"), new character("application/x-shar"));
oFTR.ref().put(new character("shf"), new character("application/shf+xml"));
oFTR.ref().put(new character("sid"), new character("image/x-mrsid-image"));
oFTR.ref().put(new character("sig"), new character("application/pgp-signature"));
oFTR.ref().put(new character("sil"), new character("audio/silk"));
oFTR.ref().put(new character("silo"), new character("model/mesh"));
oFTR.ref().put(new character("sis"), new character("application/vnd.symbian.install"));
oFTR.ref().put(new character("sisx"), new character("application/vnd.symbian.install"));
oFTR.ref().put(new character("sit"), new character("application/x-stuffit"));
oFTR.ref().put(new character("sitx"), new character("application/x-stuffitx"));
oFTR.ref().put(new character("skd"), new character("application/vnd.koan"));
oFTR.ref().put(new character("skm"), new character("application/vnd.koan"));
oFTR.ref().put(new character("skp"), new character("application/vnd.koan"));
oFTR.ref().put(new character("skt"), new character("application/vnd.koan"));
oFTR.ref().put(new character("sldm"), new character("application/vnd.ms-powerpoint.slide.macroenabled.12"));
oFTR.ref().put(new character("sldx"), new character("application/vnd.openxmlformats-officedocument.presentationml.slide"));
oFTR.ref().put(new character("slt"), new character("application/vnd.epson.salt"));
oFTR.ref().put(new character("sm"), new character("application/vnd.stepmania.stepchart"));
oFTR.ref().put(new character("smf"), new character("application/vnd.stardivision.math"));
oFTR.ref().put(new character("smi"), new character("application/smil+xml"));
oFTR.ref().put(new character("smil"), new character("application/smil+xml"));
oFTR.ref().put(new character("smv"), new character("video/x-smv"));
oFTR.ref().put(new character("smzip"), new character("application/vnd.stepmania.package"));
oFTR.ref().put(new character("snd"), new character("audio/basic"));
oFTR.ref().put(new character("snf"), new character("application/x-font-snf"));
oFTR.ref().put(new character("so"), new character("application/octet-stream"));
oFTR.ref().put(new character("spc"), new character("application/x-pkcs7-certificates"));
oFTR.ref().put(new character("spf"), new character("application/vnd.yamaha.smaf-phrase"));
oFTR.ref().put(new character("spl"), new character("application/x-futuresplash"));
oFTR.ref().put(new character("spot"), new character("text/vnd.in3d.spot"));
oFTR.ref().put(new character("spp"), new character("application/scvp-vp-response"));
oFTR.ref().put(new character("spq"), new character("application/scvp-vp-request"));
oFTR.ref().put(new character("spx"), new character("audio/ogg"));
oFTR.ref().put(new character("sql"), new character("application/x-sql"));
oFTR.ref().put(new character("src"), new character("application/x-wais-source"));
oFTR.ref().put(new character("srt"), new character("application/x-subrip"));
oFTR.ref().put(new character("sru"), new character("application/sru+xml"));
oFTR.ref().put(new character("srx"), new character("application/sparql-results+xml"));
oFTR.ref().put(new character("ssdl"), new character("application/ssdl+xml"));
oFTR.ref().put(new character("sse"), new character("application/vnd.kodak-descriptor"));
oFTR.ref().put(new character("ssf"), new character("application/vnd.epson.ssf"));
oFTR.ref().put(new character("ssml"), new character("application/ssml+xml"));
oFTR.ref().put(new character("st"), new character("application/vnd.sailingtracker.track"));
oFTR.ref().put(new character("stc"), new character("application/vnd.sun.xml.calc.template"));
oFTR.ref().put(new character("std"), new character("application/vnd.sun.xml.draw.template"));
oFTR.ref().put(new character("stf"), new character("application/vnd.wt.stf"));
oFTR.ref().put(new character("sti"), new character("application/vnd.sun.xml.impress.template"));
oFTR.ref().put(new character("stk"), new character("application/hyperstudio"));
oFTR.ref().put(new character("stl"), new character("application/vnd.ms-pki.stl"));
oFTR.ref().put(new character("str"), new character("application/vnd.pg.format"));
oFTR.ref().put(new character("stw"), new character("application/vnd.sun.xml.writer.template"));
oFTR.ref().put(new character("sub"), new character("text/vnd.dvb.subtitle"));
oFTR.ref().put(new character("sus"), new character("application/vnd.sus-calendar"));
oFTR.ref().put(new character("susp"), new character("application/vnd.sus-calendar"));
oFTR.ref().put(new character("sv4cpio"), new character("application/x-sv4cpio"));
oFTR.ref().put(new character("sv4crc"), new character("application/x-sv4crc"));
oFTR.ref().put(new character("svc"), new character("application/vnd.dvb.service"));
oFTR.ref().put(new character("svd"), new character("application/vnd.svd"));
oFTR.ref().put(new character("svg"), new character("image/svg+xml"));
oFTR.ref().put(new character("svgz"), new character("image/svg+xml"));
oFTR.ref().put(new character("swa"), new character("application/x-director"));
oFTR.ref().put(new character("swf"), new character("application/x-shockwave-flash"));
oFTR.ref().put(new character("swi"), new character("application/vnd.aristanetworks.swi"));
oFTR.ref().put(new character("sxc"), new character("application/vnd.sun.xml.calc"));
oFTR.ref().put(new character("sxd"), new character("application/vnd.sun.xml.draw"));
oFTR.ref().put(new character("sxg"), new character("application/vnd.sun.xml.writer.global"));
oFTR.ref().put(new character("sxi"), new character("application/vnd.sun.xml.impress"));
oFTR.ref().put(new character("sxm"), new character("application/vnd.sun.xml.math"));
oFTR.ref().put(new character("sxw"), new character("application/vnd.sun.xml.writer"));
oFTR.ref().put(new character("t"), new character("text/troff"));
oFTR.ref().put(new character("t3"), new character("application/x-t3vm-image"));
oFTR.ref().put(new character("taglet"), new character("application/vnd.mynfc"));
oFTR.ref().put(new character("tao"), new character("application/vnd.tao.intent-module-archive"));
oFTR.ref().put(new character("tar"), new character("application/x-tar"));
oFTR.ref().put(new character("tcap"), new character("application/vnd.3gpp2.tcap"));
oFTR.ref().put(new character("tcl"), new character("application/x-tcl"));
oFTR.ref().put(new character("teacher"), new character("application/vnd.smart.teacher"));
oFTR.ref().put(new character("tei"), new character("application/tei+xml"));
oFTR.ref().put(new character("teicorpus"), new character("application/tei+xml"));
oFTR.ref().put(new character("tex"), new character("application/x-tex"));
oFTR.ref().put(new character("texi"), new character("application/x-texinfo"));
oFTR.ref().put(new character("texinfo"), new character("application/x-texinfo"));
oFTR.ref().put(new character("text"), new character("text/plain"));
oFTR.ref().put(new character("tfi"), new character("application/thraud+xml"));
oFTR.ref().put(new character("tfm"), new character("application/x-tex-tfm"));
oFTR.ref().put(new character("tga"), new character("image/x-tga"));
oFTR.ref().put(new character("thmx"), new character("application/vnd.ms-officetheme"));
oFTR.ref().put(new character("tif"), new character("image/tiff"));
oFTR.ref().put(new character("tiff"), new character("image/tiff"));
oFTR.ref().put(new character("tmo"), new character("application/vnd.tmobile-livetv"));
oFTR.ref().put(new character("torrent"), new character("application/x-bittorrent"));
oFTR.ref().put(new character("tpl"), new character("application/vnd.groove-tool-template"));
oFTR.ref().put(new character("tpt"), new character("application/vnd.trid.tpt"));
oFTR.ref().put(new character("tr"), new character("text/troff"));
oFTR.ref().put(new character("tra"), new character("application/vnd.trueapp"));
oFTR.ref().put(new character("trm"), new character("application/x-msterminal"));
oFTR.ref().put(new character("tsd"), new character("application/timestamped-data"));
oFTR.ref().put(new character("tsv"), new character("text/tab-separated-values"));
oFTR.ref().put(new character("ttc"), new character("application/x-font-ttf"));
oFTR.ref().put(new character("ttf"), new character("application/x-font-ttf"));
oFTR.ref().put(new character("ttl"), new character("text/turtle"));
oFTR.ref().put(new character("twd"), new character("application/vnd.simtech-mindmapper"));
oFTR.ref().put(new character("twds"), new character("application/vnd.simtech-mindmapper"));
oFTR.ref().put(new character("txd"), new character("application/vnd.genomatix.tuxedo"));
oFTR.ref().put(new character("txf"), new character("application/vnd.mobius.txf"));
oFTR.ref().put(new character("txt"), new character("text/plain"));
oFTR.ref().put(new character("u32"), new character("application/x-authorware-bin"));
oFTR.ref().put(new character("udeb"), new character("application/x-debian-package"));
oFTR.ref().put(new character("ufd"), new character("application/vnd.ufdl"));
oFTR.ref().put(new character("ufdl"), new character("application/vnd.ufdl"));
oFTR.ref().put(new character("ulw"), new character("audio/basic"));
oFTR.ref().put(new character("ulx"), new character("application/x-glulx"));
oFTR.ref().put(new character("umj"), new character("application/vnd.umajin"));
oFTR.ref().put(new character("unityweb"), new character("application/vnd.unity"));
oFTR.ref().put(new character("uoml"), new character("application/vnd.uoml+xml"));
oFTR.ref().put(new character("uri"), new character("text/uri-list"));
oFTR.ref().put(new character("uris"), new character("text/uri-list"));
oFTR.ref().put(new character("urls"), new character("text/uri-list"));
oFTR.ref().put(new character("ustar"), new character("application/x-ustar"));
oFTR.ref().put(new character("utz"), new character("application/vnd.uiq.theme"));
oFTR.ref().put(new character("uu"), new character("text/x-uuencode"));
oFTR.ref().put(new character("uva"), new character("audio/vnd.dece.audio"));
oFTR.ref().put(new character("uvd"), new character("application/vnd.dece.data"));
oFTR.ref().put(new character("uvf"), new character("application/vnd.dece.data"));
oFTR.ref().put(new character("uvg"), new character("image/vnd.dece.graphic"));
oFTR.ref().put(new character("uvh"), new character("video/vnd.dece.hd"));
oFTR.ref().put(new character("uvi"), new character("image/vnd.dece.graphic"));
oFTR.ref().put(new character("uvm"), new character("video/vnd.dece.mobile"));
oFTR.ref().put(new character("uvp"), new character("video/vnd.dece.pd"));
oFTR.ref().put(new character("uvs"), new character("video/vnd.dece.sd"));
oFTR.ref().put(new character("uvt"), new character("application/vnd.dece.ttml+xml"));
oFTR.ref().put(new character("uvu"), new character("video/vnd.uvvu.mp4"));
oFTR.ref().put(new character("uvv"), new character("video/vnd.dece.video"));
oFTR.ref().put(new character("uvva"), new character("audio/vnd.dece.audio"));
oFTR.ref().put(new character("uvvd"), new character("application/vnd.dece.data"));
oFTR.ref().put(new character("uvvf"), new character("application/vnd.dece.data"));
oFTR.ref().put(new character("uvvg"), new character("image/vnd.dece.graphic"));
oFTR.ref().put(new character("uvvh"), new character("video/vnd.dece.hd"));
oFTR.ref().put(new character("uvvi"), new character("image/vnd.dece.graphic"));
oFTR.ref().put(new character("uvvm"), new character("video/vnd.dece.mobile"));
oFTR.ref().put(new character("uvvp"), new character("video/vnd.dece.pd"));
oFTR.ref().put(new character("uvvs"), new character("video/vnd.dece.sd"));
oFTR.ref().put(new character("uvvt"), new character("application/vnd.dece.ttml+xml"));
oFTR.ref().put(new character("uvvu"), new character("video/vnd.uvvu.mp4"));
oFTR.ref().put(new character("uvvv"), new character("video/vnd.dece.video"));
oFTR.ref().put(new character("uvvx"), new character("application/vnd.dece.unspecified"));
oFTR.ref().put(new character("uvvz"), new character("application/vnd.dece.zip"));
oFTR.ref().put(new character("uvx"), new character("application/vnd.dece.unspecified"));
oFTR.ref().put(new character("uvz"), new character("application/vnd.dece.zip"));
oFTR.ref().put(new character("vcard"), new character("text/vcard"));
oFTR.ref().put(new character("vcd"), new character("application/x-cdlink"));
oFTR.ref().put(new character("vcf"), new character("text/x-vcard"));
oFTR.ref().put(new character("vcg"), new character("application/vnd.groove-vcard"));
oFTR.ref().put(new character("vcs"), new character("text/x-vcalendar"));
oFTR.ref().put(new character("vcx"), new character("application/vnd.vcx"));
oFTR.ref().put(new character("vis"), new character("application/vnd.visionary"));
oFTR.ref().put(new character("viv"), new character("video/vnd.vivo"));
oFTR.ref().put(new character("vob"), new character("video/x-ms-vob"));
oFTR.ref().put(new character("vor"), new character("application/vnd.stardivision.writer"));
oFTR.ref().put(new character("vox"), new character("application/x-authorware-bin"));
oFTR.ref().put(new character("vrml"), new character("model/vrml"));
oFTR.ref().put(new character("vsd"), new character("application/vnd.visio"));
oFTR.ref().put(new character("vsf"), new character("application/vnd.vsf"));
oFTR.ref().put(new character("vss"), new character("application/vnd.visio"));
oFTR.ref().put(new character("vst"), new character("application/vnd.visio"));
oFTR.ref().put(new character("vsw"), new character("application/vnd.visio"));
oFTR.ref().put(new character("vtu"), new character("model/vnd.vtu"));
oFTR.ref().put(new character("vxml"), new character("application/voicexml+xml"));
oFTR.ref().put(new character("w3d"), new character("application/x-director"));
oFTR.ref().put(new character("wad"), new character("application/x-doom"));
oFTR.ref().put(new character("wav"), new character("audio/x-wav"));
oFTR.ref().put(new character("wax"), new character("audio/x-ms-wax"));
oFTR.ref().put(new character("wbmp"), new character("image/vnd.wap.wbmp"));
oFTR.ref().put(new character("wbs"), new character("application/vnd.criticaltools.wbs+xml"));
oFTR.ref().put(new character("wbxml"), new character("application/vnd.wap.wbxml"));
oFTR.ref().put(new character("wcm"), new character("application/vnd.ms-works"));
oFTR.ref().put(new character("wdb"), new character("application/vnd.ms-works"));
oFTR.ref().put(new character("wdp"), new character("image/vnd.ms-photo"));
oFTR.ref().put(new character("weba"), new character("audio/webm"));
oFTR.ref().put(new character("webm"), new character("video/webm"));
oFTR.ref().put(new character("webp"), new character("image/webp"));
oFTR.ref().put(new character("wg"), new character("application/vnd.pmi.widget"));
oFTR.ref().put(new character("wgt"), new character("application/widget"));
oFTR.ref().put(new character("wks"), new character("application/vnd.ms-works"));
oFTR.ref().put(new character("wm"), new character("video/x-ms-wm"));
oFTR.ref().put(new character("wma"), new character("audio/x-ms-wma"));
oFTR.ref().put(new character("wmd"), new character("application/x-ms-wmd"));
oFTR.ref().put(new character("wmf"), new character("application/x-msmetafile"));
oFTR.ref().put(new character("wml"), new character("text/vnd.wap.wml"));
oFTR.ref().put(new character("wmlc"), new character("application/vnd.wap.wmlc"));
oFTR.ref().put(new character("wmls"), new character("text/vnd.wap.wmlscript"));
oFTR.ref().put(new character("wmlsc"), new character("application/vnd.wap.wmlscriptc"));
oFTR.ref().put(new character("wmv"), new character("video/x-ms-wmv"));
oFTR.ref().put(new character("wmx"), new character("video/x-ms-wmx"));
oFTR.ref().put(new character("wmz"), new character("application/x-msmetafile"));
oFTR.ref().put(new character("woff"), new character("application/x-font-woff"));
oFTR.ref().put(new character("wpd"), new character("application/vnd.wordperfect"));
oFTR.ref().put(new character("wpl"), new character("application/vnd.ms-wpl"));
oFTR.ref().put(new character("wps"), new character("application/vnd.ms-works"));
oFTR.ref().put(new character("wqd"), new character("application/vnd.wqd"));
oFTR.ref().put(new character("wri"), new character("application/x-mswrite"));
oFTR.ref().put(new character("wrl"), new character("model/vrml"));
oFTR.ref().put(new character("wsdl"), new character("application/wsdl+xml"));
oFTR.ref().put(new character("wspolicy"), new character("application/wspolicy+xml"));
oFTR.ref().put(new character("wtb"), new character("application/vnd.webturbo"));
oFTR.ref().put(new character("wvx"), new character("video/x-ms-wvx"));
oFTR.ref().put(new character("x32"), new character("application/x-authorware-bin"));
oFTR.ref().put(new character("x3d"), new character("model/x3d+xml"));
oFTR.ref().put(new character("x3db"), new character("model/x3d+binary"));
oFTR.ref().put(new character("x3dbz"), new character("model/x3d+binary"));
oFTR.ref().put(new character("x3dv"), new character("model/x3d+vrml"));
oFTR.ref().put(new character("x3dvz"), new character("model/x3d+vrml"));
oFTR.ref().put(new character("x3dz"), new character("model/x3d+xml"));
oFTR.ref().put(new character("xaml"), new character("application/xaml+xml"));
oFTR.ref().put(new character("xap"), new character("application/x-silverlight-app"));
oFTR.ref().put(new character("xar"), new character("application/vnd.xara"));
oFTR.ref().put(new character("xbap"), new character("application/x-ms-xbap"));
oFTR.ref().put(new character("xbd"), new character("application/vnd.fujixerox.docuworks.binder"));
oFTR.ref().put(new character("xbm"), new character("image/x-xbitmap"));
oFTR.ref().put(new character("xdf"), new character("application/xcap-diff+xml"));
oFTR.ref().put(new character("xdm"), new character("application/vnd.syncml.dm+xml"));
oFTR.ref().put(new character("xdp"), new character("application/vnd.adobe.xdp+xml"));
oFTR.ref().put(new character("xdssc"), new character("application/dssc+xml"));
oFTR.ref().put(new character("xdw"), new character("application/vnd.fujixerox.docuworks"));
oFTR.ref().put(new character("xenc"), new character("application/xenc+xml"));
oFTR.ref().put(new character("xer"), new character("application/patch-ops-error+xml"));
oFTR.ref().put(new character("xfdf"), new character("application/vnd.adobe.xfdf"));
oFTR.ref().put(new character("xfdl"), new character("application/vnd.xfdl"));
oFTR.ref().put(new character("xht"), new character("application/xhtml+xml"));
oFTR.ref().put(new character("xhtml"), new character("application/xhtml+xml"));
oFTR.ref().put(new character("xhvml"), new character("application/xv+xml"));
oFTR.ref().put(new character("xif"), new character("image/vnd.xiff"));
oFTR.ref().put(new character("xla"), new character("application/vnd.ms-excel"));
oFTR.ref().put(new character("xlam"), new character("application/vnd.ms-excel.addin.macroenabled.12"));
oFTR.ref().put(new character("xlc"), new character("application/vnd.ms-excel"));
oFTR.ref().put(new character("xlf"), new character("application/x-xliff+xml"));
oFTR.ref().put(new character("xlm"), new character("application/vnd.ms-excel"));
oFTR.ref().put(new character("xls"), new character("application/vnd.ms-excel"));
oFTR.ref().put(new character("xlsb"), new character("application/vnd.ms-excel.sheet.binary.macroenabled.12"));
oFTR.ref().put(new character("xlsm"), new character("application/vnd.ms-excel.sheet.macroenabled.12"));
oFTR.ref().put(new character("xlsx"), new character("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"));
oFTR.ref().put(new character("xlt"), new character("application/vnd.ms-excel"));
oFTR.ref().put(new character("xltm"), new character("application/vnd.ms-excel.template.macroenabled.12"));
oFTR.ref().put(new character("xltx"), new character("application/vnd.openxmlformats-officedocument.spreadsheetml.template"));
oFTR.ref().put(new character("xlw"), new character("application/vnd.ms-excel"));
oFTR.ref().put(new character("xm"), new character("audio/xm"));
oFTR.ref().put(new character("xml"), new character("application/xml"));
oFTR.ref().put(new character("xo"), new character("application/vnd.olpc-sugar"));
oFTR.ref().put(new character("xop"), new character("application/xop+xml"));
oFTR.ref().put(new character("xpi"), new character("application/x-xpinstall"));
oFTR.ref().put(new character("xpl"), new character("application/xproc+xml"));
oFTR.ref().put(new character("xpm"), new character("image/x-xpixmap"));
oFTR.ref().put(new character("xpr"), new character("application/vnd.is-xpr"));
oFTR.ref().put(new character("xps"), new character("application/vnd.ms-xpsdocument"));
oFTR.ref().put(new character("xpw"), new character("application/vnd.intercon.formnet"));
oFTR.ref().put(new character("xpx"), new character("application/vnd.intercon.formnet"));
oFTR.ref().put(new character("xsl"), new character("application/xml"));
oFTR.ref().put(new character("xslt"), new character("application/xslt+xml"));
oFTR.ref().put(new character("xsm"), new character("application/vnd.syncml+xml"));
oFTR.ref().put(new character("xspf"), new character("application/xspf+xml"));
oFTR.ref().put(new character("xul"), new character("application/vnd.mozilla.xul+xml"));
oFTR.ref().put(new character("xvm"), new character("application/xv+xml"));
oFTR.ref().put(new character("xvml"), new character("application/xv+xml"));
oFTR.ref().put(new character("xwd"), new character("image/x-xwindowdump"));
oFTR.ref().put(new character("xyz"), new character("chemical/x-xyz"));
oFTR.ref().put(new character("xz"), new character("application/x-xz"));
oFTR.ref().put(new character("yang"), new character("application/yang"));
oFTR.ref().put(new character("yin"), new character("application/yin+xml"));
oFTR.ref().put(new character("z"), new character("application/x-compress"));
oFTR.ref().put(new character("z1"), new character("application/x-zmachine"));
oFTR.ref().put(new character("z2"), new character("application/x-zmachine"));
oFTR.ref().put(new character("z3"), new character("application/x-zmachine"));
oFTR.ref().put(new character("z4"), new character("application/x-zmachine"));
oFTR.ref().put(new character("z5"), new character("application/x-zmachine"));
oFTR.ref().put(new character("z6"), new character("application/x-zmachine"));
oFTR.ref().put(new character("z7"), new character("application/x-zmachine"));
oFTR.ref().put(new character("z8"), new character("application/x-zmachine"));
oFTR.ref().put(new character("zaz"), new character("application/vnd.zzazz.deck+xml"));
oFTR.ref().put(new character("zip"), new character("application/zip"));
oFTR.ref().put(new character("zir"), new character("application/vnd.zul"));
oFTR.ref().put(new character("zirz"), new character("application/vnd.zul"));
oFTR.ref().put(new character("zmm"), new character("application/vnd.handheld-entertainment+xml"));
}));
}
}