/* ====================================================================
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You under the Apache License, Version 2.0
 (the "License"); you may not use this file except in compliance with
 the License.  You may obtain a copy of the License at

 http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
 ==================================================================== */

package org.apache.poi.ddf;

import java.util.HashMap;
import java.util.Map;

/**
 * Provides a list of all known escher properties including the description and
 * type.
 *
 * @author Glen Stampoultzis (glens at apache.org)
 */
public final class EscherProperties {

	// Property constants
	public static final short TRANSFORM__ROTATION = 4;
	public static final short PROTECTION__LOCKROTATION = 119;
	public static final short PROTECTION__LOCKASPECTRATIO = 120;
	public static final short PROTECTION__LOCKPOSITION = 121;
	public static final short PROTECTION__LOCKAGAINSTSELECT = 122;
	public static final short PROTECTION__LOCKCROPPING = 123;
	public static final short PROTECTION__LOCKVERTICES = 124;
	public static final short PROTECTION__LOCKTEXT = 125;
	public static final short PROTECTION__LOCKADJUSTHANDLES = 126;
	public static final short PROTECTION__LOCKAGAINSTGROUPING = 127;
	public static final short TEXT__TEXTID = 128;
	public static final short TEXT__TEXTLEFT = 129;
	public static final short TEXT__TEXTTOP = 130;
	public static final short TEXT__TEXTRIGHT = 131;
	public static final short TEXT__TEXTBOTTOM = 132;
	public static final short TEXT__WRAPTEXT = 133;
	public static final short TEXT__SCALETEXT = 134;
	public static final short TEXT__ANCHORTEXT = 135;
	public static final short TEXT__TEXTFLOW = 136;
	public static final short TEXT__FONTROTATION = 137;
	public static final short TEXT__IDOFNEXTSHAPE = 138;
	public static final short TEXT__BIDIR = 139;
	public static final short TEXT__SINGLECLICKSELECTS = 187;
	public static final short TEXT__USEHOSTMARGINS = 188;
	public static final short TEXT__ROTATETEXTWITHSHAPE = 189;
	public static final short TEXT__SIZESHAPETOFITTEXT = 190;
	public static final short TEXT__SIZE_TEXT_TO_FIT_SHAPE = 191;
	public static final short GEOTEXT__UNICODE = 192;
	public static final short GEOTEXT__RTFTEXT = 193;
	public static final short GEOTEXT__ALIGNMENTONCURVE = 194;
	public static final short GEOTEXT__DEFAULTPOINTSIZE = 195;
	public static final short GEOTEXT__TEXTSPACING = 196;
	public static final short GEOTEXT__FONTFAMILYNAME = 197;
	public static final short GEOTEXT__REVERSEROWORDER = 240;
	public static final short GEOTEXT__HASTEXTEFFECT = 241;
	public static final short GEOTEXT__ROTATECHARACTERS = 242;
	public static final short GEOTEXT__KERNCHARACTERS = 243;
	public static final short GEOTEXT__TIGHTORTRACK = 244;
	public static final short GEOTEXT__STRETCHTOFITSHAPE = 245;
	public static final short GEOTEXT__CHARBOUNDINGBOX = 246;
	public static final short GEOTEXT__SCALETEXTONPATH = 247;
	public static final short GEOTEXT__STRETCHCHARHEIGHT = 248;
	public static final short GEOTEXT__NOMEASUREALONGPATH = 249;
	public static final short GEOTEXT__BOLDFONT = 250;
	public static final short GEOTEXT__ITALICFONT = 251;
	public static final short GEOTEXT__UNDERLINEFONT = 252;
	public static final short GEOTEXT__SHADOWFONT = 253;
	public static final short GEOTEXT__SMALLCAPSFONT = 254;
	public static final short GEOTEXT__STRIKETHROUGHFONT = 255;
	public static final short BLIP__CROPFROMTOP = 256;
	public static final short BLIP__CROPFROMBOTTOM = 257;
	public static final short BLIP__CROPFROMLEFT = 258;
	public static final short BLIP__CROPFROMRIGHT = 259;
	public static final short BLIP__BLIPTODISPLAY = 260;
	public static final short BLIP__BLIPFILENAME = 261;
	public static final short BLIP__BLIPFLAGS = 262;
	public static final short BLIP__TRANSPARENTCOLOR = 263;
	public static final short BLIP__CONTRASTSETTING = 264;
	public static final short BLIP__BRIGHTNESSSETTING = 265;
	public static final short BLIP__GAMMA = 266;
	public static final short BLIP__PICTUREID = 267;
	public static final short BLIP__DOUBLEMOD = 268;
	public static final short BLIP__PICTUREFILLMOD = 269;
	public static final short BLIP__PICTURELINE = 270;
	public static final short BLIP__PRINTBLIP = 271;
	public static final short BLIP__PRINTBLIPFILENAME = 272;
	public static final short BLIP__PRINTFLAGS = 273;
	public static final short BLIP__NOHITTESTPICTURE = 316;
	public static final short BLIP__PICTUREGRAY = 317;
	public static final short BLIP__PICTUREBILEVEL = 318;
	public static final short BLIP__PICTUREACTIVE = 319;
	public static final short GEOMETRY__LEFT = 320;
	public static final short GEOMETRY__TOP = 321;
	public static final short GEOMETRY__RIGHT = 322;
	public static final short GEOMETRY__BOTTOM = 323;
	public static final short GEOMETRY__SHAPEPATH = 324;
	public static final short GEOMETRY__VERTICES = 325;
	public static final short GEOMETRY__SEGMENTINFO = 326;
	public static final short GEOMETRY__ADJUSTVALUE = 327;
	public static final short GEOMETRY__ADJUST2VALUE = 328;
	public static final short GEOMETRY__ADJUST3VALUE = 329;
	public static final short GEOMETRY__ADJUST4VALUE = 330;
	public static final short GEOMETRY__ADJUST5VALUE = 331;
	public static final short GEOMETRY__ADJUST6VALUE = 332;
	public static final short GEOMETRY__ADJUST7VALUE = 333;
	public static final short GEOMETRY__ADJUST8VALUE = 334;
	public static final short GEOMETRY__ADJUST9VALUE = 335;
	public static final short GEOMETRY__ADJUST10VALUE = 336;
	public static final short GEOMETRY__SHADOWok = 378;
	public static final short GEOMETRY__3DOK = 379;
	public static final short GEOMETRY__LINEOK = 380;
	public static final short GEOMETRY__GEOTEXTOK = 381;
	public static final short GEOMETRY__FILLSHADESHAPEOK = 382;
	public static final short GEOMETRY__FILLOK = 383;
	public static final short FILL__FILLTYPE = 384;
	public static final short FILL__FILLCOLOR = 385;
	public static final short FILL__FILLOPACITY = 386;
	public static final short FILL__FILLBACKCOLOR = 387;
	public static final short FILL__BACKOPACITY = 388;
	public static final short FILL__CRMOD = 389;
	public static final short FILL__PATTERNTEXTURE = 390;
	public static final short FILL__BLIPFILENAME = 391;
	public static final short FILL__BLIPFLAGS = 392;
	public static final short FILL__WIDTH = 393;
	public static final short FILL__HEIGHT = 394;
	public static final short FILL__ANGLE = 395;
	public static final short FILL__FOCUS = 396;
	public static final short FILL__TOLEFT = 397;
	public static final short FILL__TOTOP = 398;
	public static final short FILL__TORIGHT = 399;
	public static final short FILL__TOBOTTOM = 400;
	public static final short FILL__RECTLEFT = 401;
	public static final short FILL__RECTTOP = 402;
	public static final short FILL__RECTRIGHT = 403;
	public static final short FILL__RECTBOTTOM = 404;
	public static final short FILL__DZTYPE = 405;
	public static final short FILL__SHADEPRESET = 406;
	public static final short FILL__SHADECOLORS = 407;
	public static final short FILL__ORIGINX = 408;
	public static final short FILL__ORIGINY = 409;
	public static final short FILL__SHAPEORIGINX = 410;
	public static final short FILL__SHAPEORIGINY = 411;
	public static final short FILL__SHADETYPE = 412;
	public static final short FILL__FILLED = 443;
	public static final short FILL__HITTESTFILL = 444;
	public static final short FILL__SHAPE = 445;
	public static final short FILL__USERECT = 446;
	public static final short FILL__NOFILLHITTEST = 447;
	public static final short LINESTYLE__COLOR = 448;
	public static final short LINESTYLE__OPACITY = 449;
	public static final short LINESTYLE__BACKCOLOR = 450;
	public static final short LINESTYLE__CRMOD = 451;
	public static final short LINESTYLE__LINETYPE = 452;
	public static final short LINESTYLE__FILLBLIP = 453;
	public static final short LINESTYLE__FILLBLIPNAME = 454;
	public static final short LINESTYLE__FILLBLIPFLAGS = 455;
	public static final short LINESTYLE__FILLWIDTH = 456;
	public static final short LINESTYLE__FILLHEIGHT = 457;
	public static final short LINESTYLE__FILLDZTYPE = 458;
	public static final short LINESTYLE__LINEWIDTH = 459;
	public static final short LINESTYLE__LINEMITERLIMIT = 460;
	public static final short LINESTYLE__LINESTYLE = 461;
	public static final short LINESTYLE__LINEDASHING = 462;
	public static final short LINESTYLE__LINEDASHSTYLE = 463;
	public static final short LINESTYLE__LINESTARTARROWHEAD = 464;
	public static final short LINESTYLE__LINEENDARROWHEAD = 465;
	public static final short LINESTYLE__LINESTARTARROWWIDTH = 466;
	public static final short LINESTYLE__LINESTARTARROWLENGTH = 467;
	public static final short LINESTYLE__LINEENDARROWWIDTH = 468;
	public static final short LINESTYLE__LINEENDARROWLENGTH = 469;
	public static final short LINESTYLE__LINEJOINSTYLE = 470;
	public static final short LINESTYLE__LINEENDCAPSTYLE = 471;
	public static final short LINESTYLE__ARROWHEADSOK = 507;
	public static final short LINESTYLE__ANYLINE = 508;
	public static final short LINESTYLE__HITLINETEST = 509;
	public static final short LINESTYLE__LINEFILLSHAPE = 510;
	public static final short LINESTYLE__NOLINEDRAWDASH = 511;
	public static final short LINESTYLE__NOLINEDRAWDASH_LEFT = 0x057F;
	public static final short LINESTYLE__NOLINEDRAWDASH_TOP = 0x05BF;
	public static final short LINESTYLE__NOLINEDRAWDASH_BOTTOM = 0x063F;
	public static final short LINESTYLE__NOLINEDRAWDASH_RIGHT = 0x05FF;
	public static final short SHADOWSTYLE__TYPE = 512;
	public static final short SHADOWSTYLE__COLOR = 513;
	public static final short SHADOWSTYLE__HIGHLIGHT = 514;
	public static final short SHADOWSTYLE__CRMOD = 515;
	public static final short SHADOWSTYLE__OPACITY = 516;
	public static final short SHADOWSTYLE__OFFSETX = 517;
	public static final short SHADOWSTYLE__OFFSETY = 518;
	public static final short SHADOWSTYLE__SECONDOFFSETX = 519;
	public static final short SHADOWSTYLE__SECONDOFFSETY = 520;
	public static final short SHADOWSTYLE__SCALEXTOX = 521;
	public static final short SHADOWSTYLE__SCALEYTOX = 522;
	public static final short SHADOWSTYLE__SCALEXTOY = 523;
	public static final short SHADOWSTYLE__SCALEYTOY = 524;
	public static final short SHADOWSTYLE__PERSPECTIVEX = 525;
	public static final short SHADOWSTYLE__PERSPECTIVEY = 526;
	public static final short SHADOWSTYLE__WEIGHT = 527;
	public static final short SHADOWSTYLE__ORIGINX = 528;
	public static final short SHADOWSTYLE__ORIGINY = 529;
	public static final short SHADOWSTYLE__SHADOW = 574;
	public static final short SHADOWSTYLE__SHADOWOBSURED = 575;
	public static final short PERSPECTIVE__TYPE = 576;
	public static final short PERSPECTIVE__OFFSETX = 577;
	public static final short PERSPECTIVE__OFFSETY = 578;
	public static final short PERSPECTIVE__SCALEXTOX = 579;
	public static final short PERSPECTIVE__SCALEYTOX = 580;
	public static final short PERSPECTIVE__SCALEXTOY = 581;
	public static final short PERSPECTIVE__SCALEYTOY = 582;
	public static final short PERSPECTIVE__PERSPECTIVEX = 583;
	public static final short PERSPECTIVE__PERSPECTIVEY = 584;
	public static final short PERSPECTIVE__WEIGHT = 585;
	public static final short PERSPECTIVE__ORIGINX = 586;
	public static final short PERSPECTIVE__ORIGINY = 587;
	public static final short PERSPECTIVE__PERSPECTIVEON = 639;
	public static final short THREED__SPECULARAMOUNT = 640;
	public static final short THREED__DIFFUSEAMOUNT = 661;
	public static final short THREED__SHININESS = 662;
	public static final short THREED__EDGETHICKNESS = 663;
	public static final short THREED__EXTRUDEFORWARD = 664;
	public static final short THREED__EXTRUDEBACKWARD = 665;
	public static final short THREED__EXTRUDEPLANE = 666;
	public static final short THREED__EXTRUSIONCOLOR = 667;
	public static final short THREED__CRMOD = 648;
	public static final short THREED__3DEFFECT = 700;
	public static final short THREED__METALLIC = 701;
	public static final short THREED__USEEXTRUSIONCOLOR = 702;
	public static final short THREED__LIGHTFACE = 703;
	public static final short THREEDSTYLE__YROTATIONANGLE = 704;
	public static final short THREEDSTYLE__XROTATIONANGLE = 705;
	public static final short THREEDSTYLE__ROTATIONAXISX = 706;
	public static final short THREEDSTYLE__ROTATIONAXISY = 707;
	public static final short THREEDSTYLE__ROTATIONAXISZ = 708;
	public static final short THREEDSTYLE__ROTATIONANGLE = 709;
	public static final short THREEDSTYLE__ROTATIONCENTERX = 710;
	public static final short THREEDSTYLE__ROTATIONCENTERY = 711;
	public static final short THREEDSTYLE__ROTATIONCENTERZ = 712;
	public static final short THREEDSTYLE__RENDERMODE = 713;
	public static final short THREEDSTYLE__TOLERANCE = 714;
	public static final short THREEDSTYLE__XVIEWPOINT = 715;
	public static final short THREEDSTYLE__YVIEWPOINT = 716;
	public static final short THREEDSTYLE__ZVIEWPOINT = 717;
	public static final short THREEDSTYLE__ORIGINX = 718;
	public static final short THREEDSTYLE__ORIGINY = 719;
	public static final short THREEDSTYLE__SKEWANGLE = 720;
	public static final short THREEDSTYLE__SKEWAMOUNT = 721;
	public static final short THREEDSTYLE__AMBIENTINTENSITY = 722;
	public static final short THREEDSTYLE__KEYX = 723;
	public static final short THREEDSTYLE__KEYY = 724;
	public static final short THREEDSTYLE__KEYZ = 725;
	public static final short THREEDSTYLE__KEYINTENSITY = 726;
	public static final short THREEDSTYLE__FILLX = 727;
	public static final short THREEDSTYLE__FILLY = 728;
	public static final short THREEDSTYLE__FILLZ = 729;
	public static final short THREEDSTYLE__FILLINTENSITY = 730;
	public static final short THREEDSTYLE__CONSTRAINROTATION = 763;
	public static final short THREEDSTYLE__ROTATIONCENTERAUTO = 764;
	public static final short THREEDSTYLE__PARALLEL = 765;
	public static final short THREEDSTYLE__KEYHARSH = 766;
	public static final short THREEDSTYLE__FILLHARSH = 767;
	public static final short SHAPE__MASTER = 769;
	public static final short SHAPE__CONNECTORSTYLE = 771;
	public static final short SHAPE__BLACKANDWHITESETTINGS = 772;
	public static final short SHAPE__WMODEPUREBW = 773;
	public static final short SHAPE__WMODEBW = 774;
	public static final short SHAPE__OLEICON = 826;
	public static final short SHAPE__PREFERRELATIVERESIZE = 827;
	public static final short SHAPE__LOCKSHAPETYPE = 828;
	public static final short SHAPE__DELETEATTACHEDOBJECT = 830;
	public static final short SHAPE__BACKGROUNDSHAPE = 831;
	public static final short CALLOUT__CALLOUTTYPE = 832;
	public static final short CALLOUT__XYCALLOUTGAP = 833;
	public static final short CALLOUT__CALLOUTANGLE = 834;
	public static final short CALLOUT__CALLOUTDROPTYPE = 835;
	public static final short CALLOUT__CALLOUTDROPSPECIFIED = 836;
	public static final short CALLOUT__CALLOUTLENGTHSPECIFIED = 837;
	public static final short CALLOUT__ISCALLOUT = 889;
	public static final short CALLOUT__CALLOUTACCENTBAR = 890;
	public static final short CALLOUT__CALLOUTTEXTBORDER = 891;
	public static final short CALLOUT__CALLOUTMINUSX = 892;
	public static final short CALLOUT__CALLOUTMINUSY = 893;
	public static final short CALLOUT__DROPAUTO = 894;
	public static final short CALLOUT__LENGTHSPECIFIED = 895;
	public static final short GROUPSHAPE__SHAPENAME = 0x0380;
	public static final short GROUPSHAPE__DESCRIPTION = 0x0381;
    public static final short GROUPSHAPE__HYPERLINK = 0x0382;
	public static final short GROUPSHAPE__WRAPPOLYGONVERTICES = 0x0383;
	public static final short GROUPSHAPE__WRAPDISTLEFT = 0x0384;
	public static final short GROUPSHAPE__WRAPDISTTOP = 0x0385;
	public static final short GROUPSHAPE__WRAPDISTRIGHT = 0x0386;
	public static final short GROUPSHAPE__WRAPDISTBOTTOM = 0x0387;
    public static final short GROUPSHAPE__REGROUPID = 0x0388;
    public static final short GROUPSHAPE__UNUSED906 = 0x038A;
    public static final short GROUPSHAPE__TOOLTIP = 0x038D;
    public static final short GROUPSHAPE__SCRIPT = 0x038E;
    public static final short GROUPSHAPE__POSH = 0x038F;
    public static final short GROUPSHAPE__POSRELH = 0x0390;
    public static final short GROUPSHAPE__POSV = 0x0391;
    public static final short GROUPSHAPE__POSRELV = 0x0392;
    public static final short GROUPSHAPE__HR_PCT = 0x0393;
    public static final short GROUPSHAPE__HR_ALIGN = 0x0394;
    public static final short GROUPSHAPE__HR_HEIGHT = 0x0395;
    public static final short GROUPSHAPE__HR_WIDTH = 0x0396;
    public static final short GROUPSHAPE__SCRIPTEXT = 0x0397;
    public static final short GROUPSHAPE__SCRIPTLANG = 0x0398;
    public static final short GROUPSHAPE__BORDERTOPCOLOR = 0x039B;
    public static final short GROUPSHAPE__BORDERLEFTCOLOR = 0x039C;
    public static final short GROUPSHAPE__BORDERBOTTOMCOLOR = 0x039D;
    public static final short GROUPSHAPE__BORDERRIGHTCOLOR = 0x039E;
    public static final short GROUPSHAPE__TABLEPROPERTIES = 0x039F;
    public static final short GROUPSHAPE__TABLEROWPROPERTIES = 0x03A0;
    public static final short GROUPSHAPE__WEBBOT = 0x03A5;
    public static final short GROUPSHAPE__METROBLOB = 0x03A9;
    public static final short GROUPSHAPE__ZORDER = 0x03AA;
    public static final short GROUPSHAPE__FLAGS = 0x03BF;
	public static final short GROUPSHAPE__EDITEDWRAP = 953;
	public static final short GROUPSHAPE__BEHINDDOCUMENT = 954;
	public static final short GROUPSHAPE__ONDBLCLICKNOTIFY = 955;
	public static final short GROUPSHAPE__ISBUTTON = 956;
	public static final short GROUPSHAPE__1DADJUSTMENT = 957;
	public static final short GROUPSHAPE__HIDDEN = 958;
	public static final short GROUPSHAPE__PRINT = 959;

	private static final Map<Short, EscherPropertyMetaData> properties = initProps();

	private static Map<Short, EscherPropertyMetaData> initProps() {
		Map<Short, EscherPropertyMetaData> m = new HashMap<>();
		addProp(m, TRANSFORM__ROTATION, "transform.rotation");
		addProp(m, PROTECTION__LOCKROTATION, "protection.lockrotation");
		addProp(m, PROTECTION__LOCKASPECTRATIO, "protection.lockaspectratio");
		addProp(m, PROTECTION__LOCKPOSITION, "protection.lockposition");
		addProp(m, PROTECTION__LOCKAGAINSTSELECT, "protection.lockagainstselect");
		addProp(m, PROTECTION__LOCKCROPPING, "protection.lockcropping");
		addProp(m, PROTECTION__LOCKVERTICES, "protection.lockvertices");
		addProp(m, PROTECTION__LOCKTEXT, "protection.locktext");
		addProp(m, PROTECTION__LOCKADJUSTHANDLES, "protection.lockadjusthandles");
		addProp(m, PROTECTION__LOCKAGAINSTGROUPING, "protection.lockagainstgrouping", EscherPropertyMetaData.TYPE_BOOLEAN);
		addProp(m, TEXT__TEXTID, "text.textid");
		addProp(m, TEXT__TEXTLEFT, "text.textleft");
		addProp(m, TEXT__TEXTTOP, "text.texttop");
		addProp(m, TEXT__TEXTRIGHT, "text.textright");
		addProp(m, TEXT__TEXTBOTTOM, "text.textbottom");
		addProp(m, TEXT__WRAPTEXT, "text.wraptext");
		addProp(m, TEXT__SCALETEXT, "text.scaletext");
		addProp(m, TEXT__ANCHORTEXT, "text.anchortext");
		addProp(m, TEXT__TEXTFLOW, "text.textflow");
		addProp(m, TEXT__FONTROTATION, "text.fontrotation");
		addProp(m, TEXT__IDOFNEXTSHAPE, "text.idofnextshape");
		addProp(m, TEXT__BIDIR, "text.bidir");
		addProp(m, TEXT__SINGLECLICKSELECTS, "text.singleclickselects");
		addProp(m, TEXT__USEHOSTMARGINS, "text.usehostmargins");
		addProp(m, TEXT__ROTATETEXTWITHSHAPE, "text.rotatetextwithshape");
		addProp(m, TEXT__SIZESHAPETOFITTEXT, "text.sizeshapetofittext");
		addProp(m, TEXT__SIZE_TEXT_TO_FIT_SHAPE, "text.sizetexttofitshape", EscherPropertyMetaData.TYPE_BOOLEAN);
		addProp(m, GEOTEXT__UNICODE, "geotext.unicode");
		addProp(m, GEOTEXT__RTFTEXT, "geotext.rtftext");
		addProp(m, GEOTEXT__ALIGNMENTONCURVE, "geotext.alignmentoncurve");
		addProp(m, GEOTEXT__DEFAULTPOINTSIZE, "geotext.defaultpointsize");
		addProp(m, GEOTEXT__TEXTSPACING, "geotext.textspacing");
		addProp(m, GEOTEXT__FONTFAMILYNAME, "geotext.fontfamilyname");
		addProp(m, GEOTEXT__REVERSEROWORDER, "geotext.reverseroworder");
		addProp(m, GEOTEXT__HASTEXTEFFECT, "geotext.hastexteffect");
		addProp(m, GEOTEXT__ROTATECHARACTERS, "geotext.rotatecharacters");
		addProp(m, GEOTEXT__KERNCHARACTERS, "geotext.kerncharacters");
		addProp(m, GEOTEXT__TIGHTORTRACK, "geotext.tightortrack");
		addProp(m, GEOTEXT__STRETCHTOFITSHAPE, "geotext.stretchtofitshape");
		addProp(m, GEOTEXT__CHARBOUNDINGBOX, "geotext.charboundingbox");
		addProp(m, GEOTEXT__SCALETEXTONPATH, "geotext.scaletextonpath");
		addProp(m, GEOTEXT__STRETCHCHARHEIGHT, "geotext.stretchcharheight");
		addProp(m, GEOTEXT__NOMEASUREALONGPATH, "geotext.nomeasurealongpath");
		addProp(m, GEOTEXT__BOLDFONT, "geotext.boldfont");
		addProp(m, GEOTEXT__ITALICFONT, "geotext.italicfont");
		addProp(m, GEOTEXT__UNDERLINEFONT, "geotext.underlinefont");
		addProp(m, GEOTEXT__SHADOWFONT, "geotext.shadowfont");
		addProp(m, GEOTEXT__SMALLCAPSFONT, "geotext.smallcapsfont");
		addProp(m, GEOTEXT__STRIKETHROUGHFONT, "geotext.strikethroughfont");
		addProp(m, BLIP__CROPFROMTOP, "blip.cropfromtop");
		addProp(m, BLIP__CROPFROMBOTTOM, "blip.cropfrombottom");
		addProp(m, BLIP__CROPFROMLEFT, "blip.cropfromleft");
		addProp(m, BLIP__CROPFROMRIGHT, "blip.cropfromright");
		addProp(m, BLIP__BLIPTODISPLAY, "blip.bliptodisplay");
		addProp(m, BLIP__BLIPFILENAME, "blip.blipfilename");
		addProp(m, BLIP__BLIPFLAGS, "blip.blipflags");
		addProp(m, BLIP__TRANSPARENTCOLOR, "blip.transparentcolor");
		addProp(m, BLIP__CONTRASTSETTING, "blip.contrastsetting");
		addProp(m, BLIP__BRIGHTNESSSETTING, "blip.brightnesssetting");
		addProp(m, BLIP__GAMMA, "blip.gamma");
		addProp(m, BLIP__PICTUREID, "blip.pictureid");
		addProp(m, BLIP__DOUBLEMOD, "blip.doublemod");
		addProp(m, BLIP__PICTUREFILLMOD, "blip.picturefillmod");
		addProp(m, BLIP__PICTURELINE, "blip.pictureline");
		addProp(m, BLIP__PRINTBLIP, "blip.printblip");
		addProp(m, BLIP__PRINTBLIPFILENAME, "blip.printblipfilename");
		addProp(m, BLIP__PRINTFLAGS, "blip.printflags");
		addProp(m, BLIP__NOHITTESTPICTURE, "blip.nohittestpicture");
		addProp(m, BLIP__PICTUREGRAY, "blip.picturegray");
		addProp(m, BLIP__PICTUREBILEVEL, "blip.picturebilevel");
		addProp(m, BLIP__PICTUREACTIVE, "blip.pictureactive");
		addProp(m, GEOMETRY__LEFT, "geometry.left");
		addProp(m, GEOMETRY__TOP, "geometry.top");
		addProp(m, GEOMETRY__RIGHT, "geometry.right");
		addProp(m, GEOMETRY__BOTTOM, "geometry.bottom");
		addProp(m, GEOMETRY__SHAPEPATH, "geometry.shapepath", EscherPropertyMetaData.TYPE_SHAPEPATH);
		addProp(m, GEOMETRY__VERTICES, "geometry.vertices", EscherPropertyMetaData.TYPE_ARRAY);
		addProp(m, GEOMETRY__SEGMENTINFO, "geometry.segmentinfo", EscherPropertyMetaData.TYPE_ARRAY);
		addProp(m, GEOMETRY__ADJUSTVALUE, "geometry.adjustvalue");
		addProp(m, GEOMETRY__ADJUST2VALUE, "geometry.adjust2value");
		addProp(m, GEOMETRY__ADJUST3VALUE, "geometry.adjust3value");
		addProp(m, GEOMETRY__ADJUST4VALUE, "geometry.adjust4value");
		addProp(m, GEOMETRY__ADJUST5VALUE, "geometry.adjust5value");
		addProp(m, GEOMETRY__ADJUST6VALUE, "geometry.adjust6value");
		addProp(m, GEOMETRY__ADJUST7VALUE, "geometry.adjust7value");
		addProp(m, GEOMETRY__ADJUST8VALUE, "geometry.adjust8value");
		addProp(m, GEOMETRY__ADJUST9VALUE, "geometry.adjust9value");
		addProp(m, GEOMETRY__ADJUST10VALUE, "geometry.adjust10value");
		addProp(m, GEOMETRY__SHADOWok, "geometry.shadowOK");
		addProp(m, GEOMETRY__3DOK, "geometry.3dok");
		addProp(m, GEOMETRY__LINEOK, "geometry.lineok");
		addProp(m, GEOMETRY__GEOTEXTOK, "geometry.geotextok");
		addProp(m, GEOMETRY__FILLSHADESHAPEOK, "geometry.fillshadeshapeok");
		addProp(m, GEOMETRY__FILLOK, "geometry.fillok", EscherPropertyMetaData.TYPE_BOOLEAN);
		addProp(m, FILL__FILLTYPE, "fill.filltype");
		addProp(m, FILL__FILLCOLOR, "fill.fillcolor", EscherPropertyMetaData.TYPE_RGB);
		addProp(m, FILL__FILLOPACITY, "fill.fillopacity");
		addProp(m, FILL__FILLBACKCOLOR, "fill.fillbackcolor", EscherPropertyMetaData.TYPE_RGB);
		addProp(m, FILL__BACKOPACITY, "fill.backopacity");
		addProp(m, FILL__CRMOD, "fill.crmod");
		addProp(m, FILL__PATTERNTEXTURE, "fill.patterntexture");
		addProp(m, FILL__BLIPFILENAME, "fill.blipfilename");
		addProp(m, FILL__BLIPFLAGS, "fill.blipflags");
		addProp(m, FILL__WIDTH, "fill.width");
		addProp(m, FILL__HEIGHT, "fill.height");
		addProp(m, FILL__ANGLE, "fill.angle");
		addProp(m, FILL__FOCUS, "fill.focus");
		addProp(m, FILL__TOLEFT, "fill.toleft");
		addProp(m, FILL__TOTOP, "fill.totop");
		addProp(m, FILL__TORIGHT, "fill.toright");
		addProp(m, FILL__TOBOTTOM, "fill.tobottom");
		addProp(m, FILL__RECTLEFT, "fill.rectleft");
		addProp(m, FILL__RECTTOP, "fill.recttop");
		addProp(m, FILL__RECTRIGHT, "fill.rectright");
		addProp(m, FILL__RECTBOTTOM, "fill.rectbottom");
		addProp(m, FILL__DZTYPE, "fill.dztype");
		addProp(m, FILL__SHADEPRESET, "fill.shadepreset");
		addProp(m, FILL__SHADECOLORS, "fill.shadecolors", EscherPropertyMetaData.TYPE_ARRAY);
		addProp(m, FILL__ORIGINX, "fill.originx");
		addProp(m, FILL__ORIGINY, "fill.originy");
		addProp(m, FILL__SHAPEORIGINX, "fill.shapeoriginx");
		addProp(m, FILL__SHAPEORIGINY, "fill.shapeoriginy");
		addProp(m, FILL__SHADETYPE, "fill.shadetype");
		addProp(m, FILL__FILLED, "fill.filled");
		addProp(m, FILL__HITTESTFILL, "fill.hittestfill");
		addProp(m, FILL__SHAPE, "fill.shape");
		addProp(m, FILL__USERECT, "fill.userect");
		addProp(m, FILL__NOFILLHITTEST, "fill.nofillhittest", EscherPropertyMetaData.TYPE_BOOLEAN);
		addProp(m, LINESTYLE__COLOR, "linestyle.color", EscherPropertyMetaData.TYPE_RGB);
		addProp(m, LINESTYLE__OPACITY, "linestyle.opacity");
		addProp(m, LINESTYLE__BACKCOLOR, "linestyle.backcolor", EscherPropertyMetaData.TYPE_RGB);
		addProp(m, LINESTYLE__CRMOD, "linestyle.crmod");
		addProp(m, LINESTYLE__LINETYPE, "linestyle.linetype");
		addProp(m, LINESTYLE__FILLBLIP, "linestyle.fillblip");
		addProp(m, LINESTYLE__FILLBLIPNAME, "linestyle.fillblipname");
		addProp(m, LINESTYLE__FILLBLIPFLAGS, "linestyle.fillblipflags");
		addProp(m, LINESTYLE__FILLWIDTH, "linestyle.fillwidth");
		addProp(m, LINESTYLE__FILLHEIGHT, "linestyle.fillheight");
		addProp(m, LINESTYLE__FILLDZTYPE, "linestyle.filldztype");
		addProp(m, LINESTYLE__LINEWIDTH, "linestyle.linewidth");
		addProp(m, LINESTYLE__LINEMITERLIMIT, "linestyle.linemiterlimit");
		addProp(m, LINESTYLE__LINESTYLE, "linestyle.linestyle");
		addProp(m, LINESTYLE__LINEDASHING, "linestyle.linedashing");
		addProp(m, LINESTYLE__LINEDASHSTYLE, "linestyle.linedashstyle", EscherPropertyMetaData.TYPE_ARRAY);
		addProp(m, LINESTYLE__LINESTARTARROWHEAD, "linestyle.linestartarrowhead");
		addProp(m, LINESTYLE__LINEENDARROWHEAD, "linestyle.lineendarrowhead");
		addProp(m, LINESTYLE__LINESTARTARROWWIDTH, "linestyle.linestartarrowwidth");
		addProp(m, LINESTYLE__LINESTARTARROWLENGTH, "linestyle.linestartarrowlength");
		addProp(m, LINESTYLE__LINEENDARROWWIDTH, "linestyle.lineendarrowwidth");
		addProp(m, LINESTYLE__LINEENDARROWLENGTH, "linestyle.lineendarrowlength");
		addProp(m, LINESTYLE__LINEJOINSTYLE, "linestyle.linejoinstyle");
		addProp(m, LINESTYLE__LINEENDCAPSTYLE, "linestyle.lineendcapstyle");
		addProp(m, LINESTYLE__ARROWHEADSOK, "linestyle.arrowheadsok");
		addProp(m, LINESTYLE__ANYLINE, "linestyle.anyline");
		addProp(m, LINESTYLE__HITLINETEST, "linestyle.hitlinetest");
		addProp(m, LINESTYLE__LINEFILLSHAPE, "linestyle.linefillshape");
		addProp(m, LINESTYLE__NOLINEDRAWDASH, "linestyle.nolinedrawdash", EscherPropertyMetaData.TYPE_BOOLEAN);
        addProp(m, LINESTYLE__NOLINEDRAWDASH_LEFT, "linestyle.nolinedrawdash.left", EscherPropertyMetaData.TYPE_BOOLEAN);
        addProp(m, LINESTYLE__NOLINEDRAWDASH_TOP, "linestyle.nolinedrawdash.top", EscherPropertyMetaData.TYPE_BOOLEAN);
        addProp(m, LINESTYLE__NOLINEDRAWDASH_BOTTOM, "linestyle.nolinedrawdash.bottom", EscherPropertyMetaData.TYPE_BOOLEAN);
        addProp(m, LINESTYLE__NOLINEDRAWDASH_RIGHT, "linestyle.nolinedrawdash.right", EscherPropertyMetaData.TYPE_BOOLEAN);
		addProp(m, SHADOWSTYLE__TYPE, "shadowstyle.type");
		addProp(m, SHADOWSTYLE__COLOR, "shadowstyle.color", EscherPropertyMetaData.TYPE_RGB);
		addProp(m, SHADOWSTYLE__HIGHLIGHT, "shadowstyle.highlight");
		addProp(m, SHADOWSTYLE__CRMOD, "shadowstyle.crmod");
		addProp(m, SHADOWSTYLE__OPACITY, "shadowstyle.opacity");
		addProp(m, SHADOWSTYLE__OFFSETX, "shadowstyle.offsetx");
		addProp(m, SHADOWSTYLE__OFFSETY, "shadowstyle.offsety");
		addProp(m, SHADOWSTYLE__SECONDOFFSETX, "shadowstyle.secondoffsetx");
		addProp(m, SHADOWSTYLE__SECONDOFFSETY, "shadowstyle.secondoffsety");
		addProp(m, SHADOWSTYLE__SCALEXTOX, "shadowstyle.scalextox");
		addProp(m, SHADOWSTYLE__SCALEYTOX, "shadowstyle.scaleytox");
		addProp(m, SHADOWSTYLE__SCALEXTOY, "shadowstyle.scalextoy");
		addProp(m, SHADOWSTYLE__SCALEYTOY, "shadowstyle.scaleytoy");
		addProp(m, SHADOWSTYLE__PERSPECTIVEX, "shadowstyle.perspectivex");
		addProp(m, SHADOWSTYLE__PERSPECTIVEY, "shadowstyle.perspectivey");
		addProp(m, SHADOWSTYLE__WEIGHT, "shadowstyle.weight");
		addProp(m, SHADOWSTYLE__ORIGINX, "shadowstyle.originx");
		addProp(m, SHADOWSTYLE__ORIGINY, "shadowstyle.originy");
		addProp(m, SHADOWSTYLE__SHADOW, "shadowstyle.shadow");
		addProp(m, SHADOWSTYLE__SHADOWOBSURED, "shadowstyle.shadowobscured");
		addProp(m, PERSPECTIVE__TYPE, "perspective.type");
		addProp(m, PERSPECTIVE__OFFSETX, "perspective.offsetx");
		addProp(m, PERSPECTIVE__OFFSETY, "perspective.offsety");
		addProp(m, PERSPECTIVE__SCALEXTOX, "perspective.scalextox");
		addProp(m, PERSPECTIVE__SCALEYTOX, "perspective.scaleytox");
		addProp(m, PERSPECTIVE__SCALEXTOY, "perspective.scalextoy");
		addProp(m, PERSPECTIVE__SCALEYTOY, "perspective.scaleytoy");
		addProp(m, PERSPECTIVE__PERSPECTIVEX, "perspective.perspectivex");
		addProp(m, PERSPECTIVE__PERSPECTIVEY, "perspective.perspectivey");
		addProp(m, PERSPECTIVE__WEIGHT, "perspective.weight");
		addProp(m, PERSPECTIVE__ORIGINX, "perspective.originx");
		addProp(m, PERSPECTIVE__ORIGINY, "perspective.originy");
		addProp(m, PERSPECTIVE__PERSPECTIVEON, "perspective.perspectiveon");
		addProp(m, THREED__SPECULARAMOUNT, "3d.specularamount");
		addProp(m, THREED__DIFFUSEAMOUNT, "3d.diffuseamount");
		addProp(m, THREED__SHININESS, "3d.shininess");
		addProp(m, THREED__EDGETHICKNESS, "3d.edgethickness");
		addProp(m, THREED__EXTRUDEFORWARD, "3d.extrudeforward");
		addProp(m, THREED__EXTRUDEBACKWARD, "3d.extrudebackward");
		addProp(m, THREED__EXTRUDEPLANE, "3d.extrudeplane");
		addProp(m, THREED__EXTRUSIONCOLOR, "3d.extrusioncolor", EscherPropertyMetaData.TYPE_RGB);
		addProp(m, THREED__CRMOD, "3d.crmod");
		addProp(m, THREED__3DEFFECT, "3d.3deffect");
		addProp(m, THREED__METALLIC, "3d.metallic");
		addProp(m, THREED__USEEXTRUSIONCOLOR, "3d.useextrusioncolor", EscherPropertyMetaData.TYPE_RGB);
		addProp(m, THREED__LIGHTFACE, "3d.lightface");
		addProp(m, THREEDSTYLE__YROTATIONANGLE, "3dstyle.yrotationangle");
		addProp(m, THREEDSTYLE__XROTATIONANGLE, "3dstyle.xrotationangle");
		addProp(m, THREEDSTYLE__ROTATIONAXISX, "3dstyle.rotationaxisx");
		addProp(m, THREEDSTYLE__ROTATIONAXISY, "3dstyle.rotationaxisy");
		addProp(m, THREEDSTYLE__ROTATIONAXISZ, "3dstyle.rotationaxisz");
		addProp(m, THREEDSTYLE__ROTATIONANGLE, "3dstyle.rotationangle");
		addProp(m, THREEDSTYLE__ROTATIONCENTERX, "3dstyle.rotationcenterx");
		addProp(m, THREEDSTYLE__ROTATIONCENTERY, "3dstyle.rotationcentery");
		addProp(m, THREEDSTYLE__ROTATIONCENTERZ, "3dstyle.rotationcenterz");
		addProp(m, THREEDSTYLE__RENDERMODE, "3dstyle.rendermode");
		addProp(m, THREEDSTYLE__TOLERANCE, "3dstyle.tolerance");
		addProp(m, THREEDSTYLE__XVIEWPOINT, "3dstyle.xviewpoint");
		addProp(m, THREEDSTYLE__YVIEWPOINT, "3dstyle.yviewpoint");
		addProp(m, THREEDSTYLE__ZVIEWPOINT, "3dstyle.zviewpoint");
		addProp(m, THREEDSTYLE__ORIGINX, "3dstyle.originx");
		addProp(m, THREEDSTYLE__ORIGINY, "3dstyle.originy");
		addProp(m, THREEDSTYLE__SKEWANGLE, "3dstyle.skewangle");
		addProp(m, THREEDSTYLE__SKEWAMOUNT, "3dstyle.skewamount");
		addProp(m, THREEDSTYLE__AMBIENTINTENSITY, "3dstyle.ambientintensity");
		addProp(m, THREEDSTYLE__KEYX, "3dstyle.keyx");
		addProp(m, THREEDSTYLE__KEYY, "3dstyle.keyy");
		addProp(m, THREEDSTYLE__KEYZ, "3dstyle.keyz");
		addProp(m, THREEDSTYLE__KEYINTENSITY, "3dstyle.keyintensity");
		addProp(m, THREEDSTYLE__FILLX, "3dstyle.fillx");
		addProp(m, THREEDSTYLE__FILLY, "3dstyle.filly");
		addProp(m, THREEDSTYLE__FILLZ, "3dstyle.fillz");
		addProp(m, THREEDSTYLE__FILLINTENSITY, "3dstyle.fillintensity");
		addProp(m, THREEDSTYLE__CONSTRAINROTATION, "3dstyle.constrainrotation");
		addProp(m, THREEDSTYLE__ROTATIONCENTERAUTO, "3dstyle.rotationcenterauto");
		addProp(m, THREEDSTYLE__PARALLEL, "3dstyle.parallel");
		addProp(m, THREEDSTYLE__KEYHARSH, "3dstyle.keyharsh");
		addProp(m, THREEDSTYLE__FILLHARSH, "3dstyle.fillharsh");
		addProp(m, SHAPE__MASTER, "shape.master");
		addProp(m, SHAPE__CONNECTORSTYLE, "shape.connectorstyle");
		addProp(m, SHAPE__BLACKANDWHITESETTINGS, "shape.blackandwhitesettings");
		addProp(m, SHAPE__WMODEPUREBW, "shape.wmodepurebw");
		addProp(m, SHAPE__WMODEBW, "shape.wmodebw");
		addProp(m, SHAPE__OLEICON, "shape.oleicon");
		addProp(m, SHAPE__PREFERRELATIVERESIZE, "shape.preferrelativeresize");
		addProp(m, SHAPE__LOCKSHAPETYPE, "shape.lockshapetype");
		addProp(m, SHAPE__DELETEATTACHEDOBJECT, "shape.deleteattachedobject");
		addProp(m, SHAPE__BACKGROUNDSHAPE, "shape.backgroundshape");
		addProp(m, CALLOUT__CALLOUTTYPE, "callout.callouttype");
		addProp(m, CALLOUT__XYCALLOUTGAP, "callout.xycalloutgap");
		addProp(m, CALLOUT__CALLOUTANGLE, "callout.calloutangle");
		addProp(m, CALLOUT__CALLOUTDROPTYPE, "callout.calloutdroptype");
		addProp(m, CALLOUT__CALLOUTDROPSPECIFIED, "callout.calloutdropspecified");
		addProp(m, CALLOUT__CALLOUTLENGTHSPECIFIED, "callout.calloutlengthspecified");
		addProp(m, CALLOUT__ISCALLOUT, "callout.iscallout");
		addProp(m, CALLOUT__CALLOUTACCENTBAR, "callout.calloutaccentbar");
		addProp(m, CALLOUT__CALLOUTTEXTBORDER, "callout.callouttextborder");
		addProp(m, CALLOUT__CALLOUTMINUSX, "callout.calloutminusx");
		addProp(m, CALLOUT__CALLOUTMINUSY, "callout.calloutminusy");
		addProp(m, CALLOUT__DROPAUTO, "callout.dropauto");
		addProp(m, CALLOUT__LENGTHSPECIFIED, "callout.lengthspecified");
		addProp(m, GROUPSHAPE__SHAPENAME, "groupshape.shapename");
		addProp(m, GROUPSHAPE__DESCRIPTION, "groupshape.description");
		addProp(m, GROUPSHAPE__HYPERLINK, "groupshape.hyperlink");
		addProp(m, GROUPSHAPE__WRAPPOLYGONVERTICES, "groupshape.wrappolygonvertices", EscherPropertyMetaData.TYPE_ARRAY);
		addProp(m, GROUPSHAPE__WRAPDISTLEFT, "groupshape.wrapdistleft");
		addProp(m, GROUPSHAPE__WRAPDISTTOP, "groupshape.wrapdisttop");
		addProp(m, GROUPSHAPE__WRAPDISTRIGHT, "groupshape.wrapdistright");
		addProp(m, GROUPSHAPE__WRAPDISTBOTTOM, "groupshape.wrapdistbottom");
		addProp(m, GROUPSHAPE__REGROUPID, "groupshape.regroupid");
        addProp( m, GROUPSHAPE__UNUSED906, "unused906" ); // 0x038A;
        addProp( m, GROUPSHAPE__TOOLTIP, "groupshape.wzTooltip" ); // 0x038D;
        addProp( m, GROUPSHAPE__SCRIPT, "groupshape.wzScript" ); // 0x038E;
        addProp( m, GROUPSHAPE__POSH, "groupshape.posh" ); // 0x038F;
        addProp( m, GROUPSHAPE__POSRELH, "groupshape.posrelh" ); // 0x0390;
        addProp( m, GROUPSHAPE__POSV, "groupshape.posv" ); // 0x0391;
        addProp( m, GROUPSHAPE__POSRELV, "groupshape.posrelv" ); // 0x0392;
        addProp( m, GROUPSHAPE__HR_PCT, "groupshape.pctHR" ); // 0x0393;
        addProp( m, GROUPSHAPE__HR_ALIGN, "groupshape.alignHR" ); // 0x0394;
        addProp( m, GROUPSHAPE__HR_HEIGHT, "groupshape.dxHeightHR" ); // 0x0395;
        addProp( m, GROUPSHAPE__HR_WIDTH, "groupshape.dxWidthHR" ); // 0x0396;
        addProp( m, GROUPSHAPE__SCRIPTEXT, "groupshape.wzScriptExtAttr" ); // 0x0397;
        addProp( m, GROUPSHAPE__SCRIPTLANG, "groupshape.scriptLang" ); // 0x0398;
        addProp( m, GROUPSHAPE__BORDERTOPCOLOR, "groupshape.borderTopColor" ); // 0x039B;
        addProp( m, GROUPSHAPE__BORDERLEFTCOLOR, "groupshape.borderLeftColor" ); // 0x039C;
        addProp( m, GROUPSHAPE__BORDERBOTTOMCOLOR, "groupshape.borderBottomColor" ); // 0x039D;
        addProp( m, GROUPSHAPE__BORDERRIGHTCOLOR, "groupshape.borderRightColor" ); // 0x039E;
        addProp( m, GROUPSHAPE__TABLEPROPERTIES, "groupshape.tableProperties" ); // 0x039F;
        addProp( m, GROUPSHAPE__TABLEROWPROPERTIES, "groupshape.tableRowProperties", EscherPropertyMetaData.TYPE_ARRAY ); // 0x03A0;
        addProp( m, GROUPSHAPE__WEBBOT, "groupshape.wzWebBot" ); // 0x03A5;
        addProp( m, GROUPSHAPE__METROBLOB, "groupshape.metroBlob" ); // 0x03A9;
        addProp( m, GROUPSHAPE__ZORDER, "groupshape.dhgt" ); // 0x03AA;
        addProp( m, GROUPSHAPE__FLAGS, "groupshape.GroupShapeBooleanProperties" ); // 0x03BF;

		addProp(m, GROUPSHAPE__EDITEDWRAP, "groupshape.editedwrap");
		addProp(m, GROUPSHAPE__BEHINDDOCUMENT, "groupshape.behinddocument");
		addProp(m, GROUPSHAPE__ONDBLCLICKNOTIFY, "groupshape.ondblclicknotify");
		addProp(m, GROUPSHAPE__ISBUTTON, "groupshape.isbutton");
		addProp(m, GROUPSHAPE__1DADJUSTMENT, "groupshape.1dadjustment");
		addProp(m, GROUPSHAPE__HIDDEN, "groupshape.hidden");
		addProp(m, GROUPSHAPE__PRINT, "groupshape.print", EscherPropertyMetaData.TYPE_BOOLEAN);
		return m;
	}

	private static void addProp(Map<Short, EscherPropertyMetaData> m, int s, String propName) {
		m.put(Short.valueOf((short) s), new EscherPropertyMetaData(propName));
	}

	private static void addProp(Map<Short, EscherPropertyMetaData> m, int s, String propName, byte type) {
		m.put(Short.valueOf((short) s), new EscherPropertyMetaData(propName, type));
	}

	public static String getPropertyName(short propertyId) {
		EscherPropertyMetaData o = properties.get(Short.valueOf(propertyId));
		return o == null ? "unknown" : o.getDescription();
	}

	public static byte getPropertyType(short propertyId) {
		EscherPropertyMetaData escherPropertyMetaData = properties.get(Short.valueOf(propertyId));
		return escherPropertyMetaData == null ? 0 : escherPropertyMetaData.getType();
	}
}
