/*
 * Copyright (c) 2009, Google Inc. All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are
 * met:
 * 
 *     * Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above
 *       copyright notice, this list of conditions and the following disclaimer
 *       in the documentation and/or other materials provided with the
 *       distribution.
 *     * Neither the name of Google Inc. nor the names of its
 *       contributors may be used to endorse or promote products derived from
 *       this software without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */

// This source file coalesces the HTML elements into a single object file to
// reduce bloat and allow us to link release builds on 32-bit Windows.

// This file comes first due to the inclusion of conflicting X11 headers
#include "HTMLPlugInElement.cpp"

#include "HTMLAnchorElement.cpp"
#include "HTMLAppletElement.cpp"
#include "HTMLAreaElement.cpp"
#include "HTMLAttachmentElement.cpp"
#include "HTMLAudioElement.cpp"
#include "HTMLBRElement.cpp"
#include "HTMLBaseElement.cpp"
#include "HTMLBodyElement.cpp"
#include "HTMLButtonElement.cpp"
#include "HTMLDataElement.cpp"
#include "HTMLDataListElement.cpp"
#include "HTMLDetailsElement.cpp"
#include "HTMLDListElement.cpp"
#include "HTMLDirectoryElement.cpp"
#include "HTMLDivElement.cpp"
#include "HTMLElement.cpp"
#include "HTMLEmbedElement.cpp"
#include "HTMLFieldSetElement.cpp"
#include "HTMLFontElement.cpp"
#include "HTMLFormControlElement.cpp"
#include "HTMLFormControlElementWithState.cpp"
#include "HTMLFormElement.cpp"
#include "HTMLFrameElement.cpp"
#include "HTMLFrameElementBase.cpp"
#include "HTMLFrameOwnerElement.cpp"
#include "HTMLFrameSetElement.cpp"
#include "HTMLHRElement.cpp"
#include "HTMLHeadElement.cpp"
#include "HTMLHeadingElement.cpp"
#include "HTMLHtmlElement.cpp"
#include "HTMLIFrameElement.cpp"
#include "HTMLImageElement.cpp"
#include "HTMLInputElement.cpp"
#include "HTMLKeygenElement.cpp"
#include "HTMLLIElement.cpp"
#include "HTMLLabelElement.cpp"
#include "HTMLLegendElement.cpp"
#include "HTMLLinkElement.cpp"
#include "HTMLMapElement.cpp"
#include "HTMLMarqueeElement.cpp"
#include "HTMLMediaElement.cpp"
#include "HTMLMenuElement.cpp"
#include "HTMLMenuItemElement.cpp"
#include "HTMLMetaElement.cpp"
#include "HTMLMeterElement.cpp"
#include "HTMLModElement.cpp"
#include "HTMLOListElement.cpp"
#include "HTMLObjectElement.cpp"
#include "HTMLOptGroupElement.cpp"
#include "HTMLOptionElement.cpp"
#include "HTMLOutputElement.cpp"
#include "HTMLParagraphElement.cpp"
#include "HTMLParamElement.cpp"
#include "HTMLPlugInImageElement.cpp"
#include "HTMLPreElement.cpp"
#include "HTMLProgressElement.cpp"
#include "HTMLQuoteElement.cpp"
#include "HTMLScriptElement.cpp"
#include "HTMLSelectElement.cpp"
#include "HTMLSlotElement.cpp"
#include "HTMLSourceElement.cpp"
#include "HTMLSpanElement.cpp"
#include "HTMLStyleElement.cpp"
#include "HTMLSummaryElement.cpp"
#include "HTMLTableCaptionElement.cpp"
#include "HTMLTableCellElement.cpp"
#include "HTMLTableColElement.cpp"
#include "HTMLTableElement.cpp"
#include "HTMLTablePartElement.cpp"
#include "HTMLTableRowElement.cpp"
#include "HTMLTableSectionElement.cpp"
#include "HTMLTemplateElement.cpp"
#include "HTMLTextAreaElement.cpp"
#include "HTMLTextFormControlElement.cpp"
#include "HTMLTimeElement.cpp"
#include "HTMLTitleElement.cpp"
#include "HTMLTrackElement.cpp"
#include "HTMLUListElement.cpp"
#include "HTMLVideoElement.cpp"
#include "HTMLWBRElement.cpp"

