/*
 * 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.

#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 "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 "HTMLIsIndexElement.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 "HTMLPlugInElement.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 "HTMLTextAreaElement.cpp"
#include "HTMLTextFormControlElement.cpp"
#include "HTMLTitleElement.cpp"
#include "HTMLUListElement.cpp"
#include "HTMLVideoElement.cpp"
