/*
 * 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 "HTMLAudioElement.cpp"
#include "HTMLBRElement.cpp"
#include "HTMLBaseElement.cpp"
#include "HTMLBaseFontElement.cpp"
#include "HTMLBodyElement.cpp"
#include "HTMLButtonElement.cpp"
#include "HTMLCanvasElement.cpp"
#include "HTMLContentElement.cpp"
#include "HTMLDataListElement.cpp"
#include "HTMLDetailsElement.cpp"
#include "HTMLDListElement.cpp"
#include "HTMLDialogElement.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 "HTMLMetaElement.cpp"
#include "HTMLMeterElement.cpp"
#include "HTMLModElement.cpp"
#include "HTMLOListElement.cpp"
#include "HTMLObjectElement.cpp"
#include "HTMLOptGroupElement.cpp"
#include "HTMLOptionElement.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 "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 "HTMLTitleElement.cpp"
#include "HTMLTrackElement.cpp"
#include "HTMLUListElement.cpp"
#include "HTMLVideoElement.cpp"

