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"));
      }));     
   }
}