# 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.

backgroundelement
ctaccd5bbtype
ctaltchunkpr3382type
ctbareee9type
ctbileveleffectc7dftype
ctboolean0559type
ctborderc15dtype
ctbox7a31type
ctcallouta029type
ctcamerac340type
ctchar0d9ctype
ctclippath6d78type
ctcolorchangeeffect12d5type
ctcolumn1f12type
ctcontrol7455type
ctcustomerdata407dtype
ctcustomshowlist3419type
ctcustomxmlblockd3c1type
ctdatarefsb753type
ctdiagramc1cctype
ctdocumentbasedf5ctype
cteastasianlayout0841type
ctednposd4a3type
cteqarr9667type
ctextrusion7112type
ctfaff6type
ctffddlist3acatype
ctffhelptextbf1atype
ctffstatustexta9c9type
ctfftexttype07c1type
ctfill63e6type
ctfiltercolumn0fb7type
ctfunc816etype
ctfunctiongroupbce6type
ctgammatransform06a0type
ctgloweffectc659type
ctgrayscaleeffect3b69type
ctgroupchra6c4type
ctinnershadoweffect4678type
ctkinsoku0179type
ctlimlowd6cetype
ctlimuppd44dtype
ctlinenumber99ebtype
ctluminanceeffectb41atype
ctmacroname363btype
ctmodifyverifier3bb5type
ctnarye738type
ctofpiechartbbb3type
ctofpietype5237type
ctomathparapr8d43type
ctonoff3c8ctype
ctpatternfillproperties3637type
ctphotoalbum4368type
ctpivotselectiond5f3type
ctpolylinef75etype
ctpprchange29b0type
ctpresetshadoweffecta9abtype
ctradc9a7type
ctreflectioneffect9c37type
ctrel4519type
ctrprd468type
ctscenariosacc2type
ctsdtrow2f71type
ctsectprchangee2d3type
ctsmarttagpr0ebctype
ctsmarttagsf2cdtype
ctsoftedgeseffect096etype
ctspre2f82type
ctssubsup117btype
ctssup1cf7type
ctstrokechilde83dtype
cttblgridchange3c5etype
cttblprchangef5e2type
cttextboxtightwrap2e7etype
cttexteffect5ccatype
cttextunderlinefillgroupwrapper64e7type
cttrackchangenumberinge6catype
ctwebpublishitemsdc84type
ctwebpublishobjects30d8type
ctwrapthrough8b4etype
ctwraptightae95type
ctwraptopbottom5e13type
fonts7aa2doctype
lockedcanvaselement
polylineelement
relationships93b3doctype
relidselement
stalignh768ctype
stalignv5abetype
stbwmode77abtype
stchaptersep27e7type
stcommentsdbcdtype
stdatavalidationimemodef990type
stdiagramlayout8286type
stdropcap8d1ftype
steffectcontainertyped26btype
stfixedangle53eatype
sthorizontalanchora13atype
stimageaspectf0d7type
stpageborderoffset518atype
stpageborderzordereec9type
stpageorientation8781type
stphoneticalignment0632type
stptabrelativeto37cctype
stsortbyca6etype
stsortmethodbcf8type
ststrokearrowlength82fbtype
ststrokearrowwidth1563type
ststrokeendcap681dtype
ststrokelinestylea509type
sttargetscreensize4357type
stverticalanchor22cctype
stwrapside6d02type
