diff options
author | Qt Continuous Integration System <qt-info@nokia.com> | 2010-05-02 08:59:51 (GMT) |
---|---|---|
committer | Qt Continuous Integration System <qt-info@nokia.com> | 2010-05-02 08:59:51 (GMT) |
commit | 133c95d4e422300305620b5d6bebad65b31f8278 (patch) | |
tree | b8ee81cfc343cdb0971dde87a29fddec87547d4c /src/3rdparty/webkit/WebCore | |
parent | f101d46ccd4795fc672b5b6c9e24151df319d725 (diff) | |
parent | bc6a6f5fea11ec90f91ca3a0765afcbf620c10a5 (diff) | |
download | Qt-133c95d4e422300305620b5d6bebad65b31f8278.zip Qt-133c95d4e422300305620b5d6bebad65b31f8278.tar.gz Qt-133c95d4e422300305620b5d6bebad65b31f8278.tar.bz2 |
Merge branch '4.7' of scm.dev.nokia.troll.no:qt/qt-webkit into 4.7-integration
* '4.7' of scm.dev.nokia.troll.no:qt/qt-webkit:
Updated WebKit to 540ae4ccd25609e1bfe1673195ce126255e36774
Updated WebKit to 2c346f58ae70470d88dcd856bfe59b04a144b65a
Updated WebKit to 1a40220a82197023c1b1ac6eff027be6dd3168d3
Updated WebKit to 2992802f35fd47e32bb94a4b1f48cce7ec7fda9d
Updated WebKit to 862268aeb7150d3795d05bfc05f661bb5c598a27
Diffstat (limited to 'src/3rdparty/webkit/WebCore')
57 files changed, 3551 insertions, 1283 deletions
diff --git a/src/3rdparty/webkit/WebCore/ChangeLog b/src/3rdparty/webkit/WebCore/ChangeLog index f52872c..b8825bd 100644 --- a/src/3rdparty/webkit/WebCore/ChangeLog +++ b/src/3rdparty/webkit/WebCore/ChangeLog @@ -1,3 +1,810 @@ +2010-03-27 Robert Hogan <robert@webkit.org> + + Reviewed by nobody, fix typo in previous commit. + + Allow plugins implemented by the application, such as mimetype 'x-qt-plugin', + when pluginsEnabled is false + + Fix parentheses typo in r56661. This happened while rebasing and was not present + in the reviewed patch, so committing unreviewed. + + https://bugs.webkit.org/attachment.cgi?id=49515 + + * loader/FrameLoader.cpp: + (WebCore::FrameLoader::requestObject): + +2010-03-26 Robert Hogan <robert@roberthogan.net> + + Reviewed by Simon Hausmann. + + Allow plugins implemented by the application, such as mimetype 'x-qt-plugin', + when pluginsEnabled is false. + + The purpose of disabling plugins is to prevent the execution of third-party code + that may be untrustworthy. Qt plugins are implemented by the client rather than + loaded from an external source, so the client should have the opportunity to + consider them separately from other plugins. + + Add a function MimeTypeRegistry::isApplicationPluginMIMEType() that WebKit + uses in conjunction with arePluginsEnabled() to determine if it should attempt + to load a plugin. If isApplicationPluginMIMEType() returns true, WebKit will load + the plugin even if arePluginsEnabled() is false. + + Currently, only Qt has application-implemented plugins: these use the mimetype + 'x-qt-plugin' and 'x-qt-styled-widget'. This patch permits Qt clients' + reimplementation of QWebPage::createPlugin() to decide whether or not + to create a Qt plugin, even when arePluginsEnabled is false. + + For all platforms apart from Qt, isApplicationPluginMIMEType() returns false. + + https://bugs.webkit.org/show_bug.cgi?id=32196 + + Test: plugins/application-plugin-plugins-disabled.html + + * loader/FrameLoader.cpp: + (WebCore::FrameLoader::requestObject): + * platform/MIMETypeRegistry.h: + * platform/brew/MIMETypeRegistryBrew.cpp: + (WebCore::MIMETypeRegistry::isApplicationPluginMIMEType): + * platform/chromium/MIMETypeRegistryChromium.cpp: + (WebCore::MIMETypeRegistry::isApplicationPluginMIMEType): + * platform/gtk/MIMETypeRegistryGtk.cpp: + (WebCore::MIMETypeRegistry::isApplicationPluginMIMEType): + * platform/haiku/MIMETypeRegistryHaiku.cpp: + (WebCore::MIMETypeRegistry::isApplicationPluginMIMEType): + * platform/mac/MIMETypeRegistryMac.mm: + (WebCore::MIMETypeRegistry::isApplicationPluginMIMEType): + * platform/qt/MIMETypeRegistryQt.cpp: + (WebCore::MIMETypeRegistry::isApplicationPluginMIMEType): + * platform/win/MIMETypeRegistryWin.cpp: + (WebCore::MIMETypeRegistry::isApplicationPluginMIMEType): + * platform/wince/MIMETypeRegistryWince.cpp: + (WebCore::MIMETypeRegistry::isApplicationPluginMIMEType): + * platform/wx/MimeTypeRegistryWx.cpp: + (WebCore::MIMETypeRegistry::isApplicationPluginMIMEType): + +2010-04-29 Noam Rosenthal <noam.rosenthal@nokia.com> + + Reviewed by Simon Hausmann. + + [Qt] GraphicsLayer: flicker when starting an animation before the previous one ended. + https://bugs.webkit.org/show_bug.cgi?id=38076 + + This was due to the cude in the removeAnimations functions, which called deleteLater() without stopping the + animation synchronously. The delay between the call to that function and the actual call to the animation's destructor + is when the flicker occured. We fix this by calling stop() synchronously, and making sure that the value is reverted + upon stop (updateState) and not upon the object's destruction. + + http://staff.washington.edu/fmf/2009/03/25/iphone-3d-css-transformations/ now doesn't flicker when + the animation is toggled frequently. + + * platform/graphics/qt/GraphicsLayerQt.cpp: + (WebCore::TransformAnimationQt::~TransformAnimationQt): + (WebCore::TransformAnimationQt::applyFrame): + (WebCore::TransformAnimationQt::updateState): + (WebCore::OpacityAnimationQt::~OpacityAnimationQt): + (WebCore::OpacityAnimationQt::updateState): + (WebCore::GraphicsLayerQt::removeAnimationsForProperty): + (WebCore::GraphicsLayerQt::removeAnimationsForKeyframes): + +2010-04-29 Noam Rosenthal <noam.rosenthal@nokia.com> + + Reviewed by Simon Hausmann. + + Reverse animations don't work in some use cases + https://bugs.webkit.org/show_bug.cgi?id=38075 + + This was due to a code path special-casing reverse animations, that became obselete when we aligned our animation code + with the CA implementation. That special case code path is now a bug - and this patch removes it. + + http://staff.washington.edu/fmf/2009/03/25/iphone-3d-css-transformations/ now runs the reverse + animation correctly. + + * platform/graphics/qt/GraphicsLayerQt.cpp: + (WebCore::TransformAnimationQt::applyFrame): + +2010-04-29 Simon Hausmann <simon.hausmann@nokia.com> + + Reviewed by Kenneth Rohde Christiansen. + + [Qt] Speed up text layouting + https://bugs.webkit.org/show_bug.cgi?id=31719 + + Use QFontMetrics::width() for the text width calculation instead + of QTextLayout. This avoids expensive bearing calculations and the + line breaking code. + + * platform/graphics/qt/FontQt.cpp: + (WebCore::Font::floatWidthForComplexText): + +2010-04-29 Simon Hausmann <simon.hausmann@nokia.com> + + Reviewed by Tor Arne Vestbø. + + [Qt] REGRESSION(r57638): tst_qwebframe::objectDeleted() fails + https://bugs.webkit.org/show_bug.cgi?id=38316 + + Accessing properties of a deleted objects doesn't throw an exception + anymore. + + Continue to expose the QObject class wrapper for objects that + previously existed but don't exist anymore. QtClass is safe to + use with a deleted QObject. + + * bridge/qt/qt_instance.cpp: + (JSC::Bindings::QtInstance::getClass): Return null only if m_class + doesn't exist yet and there's no m_object. + +2010-04-28 Noam Rosenthal <noam.rosenthal@nokia.com> + + Reviewed by Kenneth Rohde Christiansen. + + [Qt] GraphicsLayer: preserves-3d and backface visibility + https://bugs.webkit.org/show_bug.cgi?id=35312 + + Implement preserves-3d by maintaining the 3D transformation heirarchy inside GraphicsLayerQt, and extrapolating + the relative QTransform. When the extrapolation fails (un-invertible matrix) we ignore the transformation change. + + WebKitSite/blog-files/3d-transforms test now work with Qt. + + * platform/graphics/qt/GraphicsLayerQt.cpp: + (WebCore::GraphicsLayerQtImpl::updateTransform): + (WebCore::GraphicsLayerQtImpl::opaqueArea): + (WebCore::GraphicsLayerQtImpl::boundingRect): + (WebCore::GraphicsLayerQtImpl::paint): + (WebCore::GraphicsLayerQtImpl::flushChanges): + +2010-04-28 Justin McPherson <justin.mcpherson@nokia.com> + + Reviewed by Simon Hausmann. + + [Qt] Fix detection of Qt 4.7's multimedia libraries + + QtMultimedia has been split into an additional media services library, which + we're using. mediaservices depends on multimedia. + + * WebCore.pro: + +2010-04-26 Andreas Kling <andreas.kling@nokia.com> + + Reviewed by Tor Arne Vestbø. + + [Qt] Fix compilation against Qt 4.7 + + Some QtMultimedia things have been moved into QtMediaServices + https://bugs.webkit.org/show_bug.cgi?id=38111 + + * WebCore.pro: + * platform/graphics/qt/MediaPlayerPrivateQt.cpp: + (WebCore::MediaPlayerPrivate::supportsType): + (WebCore::MediaPlayerPrivate::totalBytes): + +2010-04-21 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> + + Reviewed by Kenneth Rohde Christiansen. + + [Qt] Make sure WebKit is not compiled using C++0x. + https://bugs.webkit.org/show_bug.cgi?id=37867 + + As the rest of Qt compiles in the C++0x mode, people might start + compiling it in this mode. WebKit don't support this yet. + + Patch by Thiago Macieira <thiago.macieira@nokia.com> + + * WebCore.pro: + +2010-04-22 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> + + Reviewed by Simon Hausmann. + + [Qt] Hide the OpenGL and QtMultimedia dependencies from syncqt. + + This prevents the dependent headers from being included by + qt/include/QtWebKit/QtWebKit + + * WebCore.pro: + +2010-04-27 Thomas Zander <t.zander@nokia.com> + + Reviewed by Simon Hausmann. + + [Qt] Fix linking on Symbian on Linux using the Makefile based mkspec. + + Disable thumb mode due to library size limitations, just like it's done + for the sbs/sbsv2 based build system. + + * WebCore.pro: + +2010-04-26 Ruben Van Boxem <vanboxem.ruben@gmail.com> + + Reviewed by Adam Roben. + + Fixes for Win64 compilation under gcc (mingw-w64) + + * WebCore/bridge/npapi.h: for win64 compatibility, mirroring mozilla-central, see Mozilla bug 560298 + * WebCore/platform/Arena.h: uword is used to cast from pointers here. unsigned long is 32-bit on Windows (but 64-bit on mac), and too small to hold a pointer. uintptr_t is 32-bit on 32-bit systems (mac, linux and windows) and 64-bit on all 64-bit systems + * WebCore/platform/graphics/transforms/TransformationMatrix.h: let mingw-w64/w32 use MSVC codepath + * WebCore/platform/text/TextStream.cpp: let mingw-w64 use MSVC codepath + * WebCore/platform/text/TextStream.h: let mingw-w64 use MSVC codepath + * WebCore/plugins/PluginView.cpp: fix pointer casts on WIN64 and let mingw-w64 use MSVC codepath + * WebCore/plugins/win/PluginViewWin.cpp: fix pointer casts on WIN64 + +2010-01-07 Laszlo Gombos <laszlo.1.gombos@nokia.com> + + Reviewed by NOBODY (OOPS!). + + [RVCT] ACID3 test crash + https://bugs.webkit.org/show_bug.cgi?id=33280 + + Workaround developed by Yongjun Zhang. + + * dom/Element.cpp: + (WebCore::Element::setAttribute): + +2010-04-26 Markus Goetz <Markus.Goetz@nokia.com> + + Reviewed by Simon Hausmann. + + [Qt] HTTP pipelining efficiency increase + https://bugs.webkit.org/show_bug.cgi?id=38062 + + Increase number of network requests that are fed into + QNetworkAccessManager. + + * platform/network/qt/ResourceRequestQt.cpp: + (WebCore::initializeMaximumHTTPConnectionCountPerHost): + +2010-04-26 Simon Hausmann <simon.hausmann@nokia.com> + + Reviewed by Kenneth Rohde Christiansen. + + [Qt] Fix compilation with RVCT 4 + https://bugs.webkit.org/show_bug.cgi?id=37727 + + Swap extern and declspec to fix visibility of symbol imported from QtGui. + + * page/qt/EventHandlerQt.cpp: + +2010-04-26 Bruno Schmidt <bruno.schmidt@gmail.com> + + Reviewed by Kenneth Rohde Christiansen. + + [Qt] Exposing an QVariantMap containing QObjectStar to Javascript + causes Segmentation Fault + https://bugs.webkit.org/show_bug.cgi?id=34729 + + If an QVariantMap containing QObjectStar is added to the to QtWebkit + Javascript, it's use causes Segmentation Fault. + It happens because, in the case QMetaType::QVariantMap, the "root" + object that is inside of a PassRefPtr is passed recursively inside a + loop to recover the content of the map, but the PassRefPtr semantics + prohibit its use inside a loop, so the "root" object mus be passed + using the method "PassRefPtr::get" in order to keep the current + reference. + + * bridge/qt/qt_runtime.cpp: + (JSC::Bindings::convertValueToQVariant): + (JSC::Bindings::convertQVariantToValue): change to root.get() + +2010-04-22 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> + + Reviewed by Darin Adler. + + Fix the MSVC 64bit build. + https://bugs.webkit.org/show_bug.cgi?id=37980 + + * platform/text/TextStream.cpp: + * platform/text/TextStream.h: + * plugins/win/PluginViewWin.cpp: + (WebCore::PluginView::platformStart): + +2010-04-22 Ray Rischpater <Raymond.Rischpater@Nokia.com> + + Reviewed by Darin Adler. + + In HTMLInputElement.cpp, shouldUseInputMethod does not return true for + some text input types (TELEPHONE, NUMBER, URL, and EMAIL). Addressed + this by changing shouldUseInputMethod to use internal methods to + check that the field is a text field that isn't a password field. + + No new tests. + + Fixes <https://bugs.webkit.org/show_bug.cgi?id=37719> + + * html/HTMLInputElement.cpp: + (WebCore::HTMLInputElement::shouldUseInputMethod): + +2010-04-22 Gustavo Sverzut Barbieri <barbieri@profusion.mobi> + + Reviewed by Eric Seidel. + + Fix build if NPAPI support is disabled + https://bugs.webkit.org/show_bug.cgi?id=36621 + + No new tests, this is a build fix. + Re-submit r58043 with fix for EFL. + + * plugins/PluginViewNone.cpp: + +2010-03-25 Laszlo Gombos <laszlo.1.gombos@nokia.com> + + Reviewed by Darin Adler. + + Fix build if NPAPI support is disabled + https://bugs.webkit.org/show_bug.cgi?id=36621 + + No new tests, this is a build fix. + + * plugins/PluginView.cpp: Guard getValueStatic() with + NETSCAPE_PLUGIN_API + (WebCore::PluginView::getValue): + * plugins/PluginView.h: Guard getValue() with NETSCAPE_PLUGIN_API + * plugins/PluginViewNone.cpp: Guard platformGetValue() and + platformGetValueStatic with NETSCAPE_PLUGIN_API; + Guard privateBrowsingStateChanged() and setJavaScriptPaused() with + PLATFORM(MAC) + +2010-04-14 Simon Fraser <simon.fraser@apple.com> + + Reviewed by Dan Bernstein. + + Repaint of fixed, transformed element is broken + https://bugs.webkit.org/show_bug.cgi?id=37637 + + RenderBox::computeRectForRepaint() failed to set the 'fixed' flag correctly + for elements that had both fixed position and a transform. If the element has + a transform, 'fixed' should only remain true if the element itself is fixed + position. + + Also cache style()->position() in a local variable for performance. + + Test: fast/repaint/fixed-tranformed.html + + * rendering/RenderBox.cpp: + (WebCore::RenderBox::computeRectForRepaint): + +2010-04-19 Antonio Gomes <tonikitoo@webkit.org> + + Reviewed by Simon Fraser. + + Spatial Navigation: at @updateFocusCandidateIfCloser make an assignment shortcut when FocusCandidate is null + https://bugs.webkit.org/show_bug.cgi?id=37802 + + In updateFocusCandidateIfCloser method, we do all bail out checks in the begining of + the method body. If after those bail out checks, no "best FocusCandidate" has been taken + yet (i.e. focusCandidate.isNull() == true), we can safely take the current candidate, + and exit earlier. + + No behavior change, it is just a safe assignment shortcut. + + * page/FocusController.cpp: + (WebCore::updateFocusCandidateIfCloser): + +2010-04-21 No'am Rosenthal <noam.rosenthal@nokia.com> + + Reviewed by Simon Fraser. + + [Qt] Fix or remove the runtime flag for accelerated compositing. + + This adds a way for a chrome client to disallow layers from becoming composited, + even if the settings enable accelerated compositing. This is necessary for platforms + where different views can be applied with the same settings to the same page. + + We enable an API through ChromeClient to ask the chrome-client whether or not + it can render composited layers, which is taken into account when the compositor + decides whether or not to start compositing. + + https://bugs.webkit.org/show_bug.cgi?id=37313 + + Pages under LayoutTests/compositing now work under QWebView, even when + QWebSettings::AcceleratedCompositingEnabled is on. + + * page/ChromeClient.h: + (WebCore::ChromeClient::allowsAcceleratedCompositing): + * platform/qt/QWebPageClient.h: + (QWebPageClient::allowsAcceleratedCompositing): + * rendering/RenderLayerCompositor.cpp: + (WebCore::RenderLayerCompositor::canBeComposited): + +2010-04-23 No'am Rosenthal <noam.rosenthal@nokia.com> + + Reviewed by Kenneth Rohde Christiansen. + + [Qt] [Performance] GraphicsLayer: constructing the layers takes too long + https://bugs.webkit.org/show_bug.cgi?id=36365 + + The issue came from using QGraphicsView's cache as is. The problem is that + several code-paths require re-rendering of the item, but not re-rendering + of the web content into the cache. + + The way to solve it is by having GraphicsLayerQt manage the cache directly + via QPixmapCache, instead of using QGraphicsItem cache modes. + + FPS measurement shows significant improvement (20FPS before, 40FPS after) + on several use-cases, including blog-files/leaves on a desktop environment. + + * platform/graphics/qt/GraphicsLayerQt.cpp: + (WebCore::GraphicsLayerQtImpl::GraphicsLayerQtImpl): + (WebCore::GraphicsLayerQtImpl::recache): + (WebCore::GraphicsLayerQtImpl::paint): + (WebCore::GraphicsLayerQtImpl::flushChanges): + +2010-04-21 Benjamin Poulain <ikipou@gmail.com> + + Reviewed by Simon Fraser. + + Update of fixed elements is not made correctly when the page has been scrolled + https://bugs.webkit.org/show_bug.cgi?id=36783 + + When a fixed element was updated, the old geometry was not repainted correctly + because the repaint rect was cached during the layout and not updated when + scrolling. + + The rect is now updated while scrolling so the region updated correspond to the + region of the element on the screen. + + The method RenderLayer::updateRepaintRectsAfterScroll() updates + the repaint rect of all fixed tree after scroll. + + Tests: fast/repaint/fixed-child-move-after-scroll.html + fast/repaint/fixed-child-of-fixed-move-after-scroll.html + fast/repaint/fixed-child-of-transformed-move-after-scroll.html + fast/repaint/fixed-move-after-scroll.html + + * page/FrameView.cpp: + (WebCore::FrameView::scrollPositionChanged): + * rendering/RenderLayer.cpp: + (WebCore::RenderLayer::updateRepaintRectsAfterScroll): + * rendering/RenderLayer.h: + +2010-04-21 David Leong <david.leong@nokia.com> + + Reviewed by Simon Hausmann. + + [Qt] Symbian apps crash on exit due to a bad qObject_cast. + + https://bugs.webkit.org/show_bug.cgi?id=37303 + + Added check for NULL to avoid the crash. Reworked to fix memory leak + + * plugins/symbian/PluginViewSymbian.cpp: + (WebCore::PluginView::platformDestroy): + +2010-04-14 Antonio Gomes <tonikitoo@webkit.org> + + Reviewed by Simon Fraser. + + Spatial Navigation: make hasOffscreenRect() to earlier return 'true' if absoluteClippedOverflowRect() gives an empty rect + https://bugs.webkit.org/show_bug.cgi?id=37635 + + absoluteClippedOverflowRect method of RenderObject does return an empty IntRect for offscreen nodes. + So hasOffscreenRect method (SpatialNavigation.cpp) can safily bail out earlier in such cases. + + * page/SpatialNavigation.cpp: + (WebCore::hasOffscreenRect): + +2010-04-12 Antonio Gomes <tonikitoo@webkit.org> + + Reviewed by Simon Fraser. + + Spatial Navigation: make renderRectRelativeToRootDocument method to fallback to getRect() of Element when needed + https://bugs.webkit.org/show_bug.cgi?id=37461 + + getRect() of Element can be used instead of absoluteClippedOverflowRect of RenderObject when + the node is currently offscreen in an scroll overflowed content. + + Test: fast/events/spatial-navigation/snav-simple-content-overflow.html + + * page/SpatialNavigation.cpp: + (WebCore::renderRectRelativeToRootDocument): + +2010-03-29 Antonio Gomes <tonikitoo@webkit.org> + + Reviewed by Simon Fraser. + + Spatial Navigation: proper handle negative x or y coordinates + https://bugs.webkit.org/show_bug.cgi?id=36773 + + In Spatial Navigation logic, during rect acquisition in renderRectRelativeToRootDocument, + sometimes negative x() or y() values are got, and the current algorithm bails out in + any of such cases. + + However, when a node is in a scrollable content (content overflow <div>) and + this scrollable container scrolled up, element gets offscreen, and gets negative values + for y(), for example. In such cases, they are still valid to be used in Spatial Navigation + logic. + + Test: fast/events/spatial-navigation/snav-offscreen-content.html + + * page/SpatialNavigation.cpp: + (WebCore::distanceDataForNode): + (WebCore::checkNegativeCoordsForNode): + +2010-04-05 Antonio Gomes <tonikitoo@webkit.org> + + Reviewed by Kenneth Christiansen. + + Spatial Navigation: bail out as soon as algorithm finds a focus candidate is not applicable + https://bugs.webkit.org/show_bug.cgi?id=37135 + + It happens, for example, when distanceDataForNode assigns numeric_limits<long long> to + current focus candidate's. It means that current candidate is not in direction, or not + a valid target node. + + * page/FocusController.cpp: + (WebCore::FocusController::findFocusableNodeInDirection): + +2010-03-29 Antonio Gomes <tonikitoo@webkit.org> + + Reviewed by Simon Fraser. + Patch by Antonio Gomes <tonikitoo@webkit.org> + + Spatial Navigation: Initial code simplification in FocusController.cpp and SpatialNavigation.cpp + + WebCore::distanceInDirection method was handling much of the logic not + strictly only related to the distance between nodes acquisition. This + method was simplified and renamed to 'WebCore::distanceDataForNode'. + The latter is now responsible for only getting the distance and alignment + data, while all assignement logic previously in distanceInDirection method + was moved place to updateFocusCandidateIfCloser. + + Parent document distance and alignment acquisitions, in turn, have also + changed location: they are both got from deepFindFocusableNodeInDirection, + and passed in a recursive call to findFocusableNodeInDirection via the + candidateParent variable (optional parameter). In addition, the need for + the 'focusCandidateCopy' variable in deepFindFocusableNodeInDirection method + was removed, making the code much cleaner. + + No behaviour change at this point. Mostly moving code around to the place + where it should live in. + + * page/FocusController.cpp: + (WebCore::FocusController::advanceFocusDirectionally): + (WebCore::updateFocusCandidateIfCloser): + (WebCore::FocusController::findFocusableNodeInDirection): + (WebCore::FocusController::deepFindFocusableNodeInDirection): + * page/FocusController.h: + * page/SpatialNavigation.cpp: + (WebCore::distanceDataForNode): + (WebCore::renderRectRelativeToRootDocument): + * page/SpatialNavigation.h: + +2010-04-20 No'am Rosenthal <noam.rosenthal@nokia.com> + + Reviewed by Antti Koivisto. + + [Qt] GraphicsLayer: support fill-modes + https://bugs.webkit.org/show_bug.cgi?id=36216 + Implement the CSS-animation "fill mode" concept in GraphicsLayerQt. The concept + enables a key-frame animation to go to the animation's starting point before the delay, + and/or to stay at the animation's ending point after its ended, without reverting to the default + value. + We do that by manually setting the value to keyframe-0 before the delay if fill-mode is backwards/both, + and manually modifying the default value to the animated value as we animate, with fill-mode forwards/both. + + * platform/graphics/qt/GraphicsLayerQt.cpp: + (WebCore::AnimationQtBase::AnimationQtBase): + (WebCore::TransformAnimationQt::~TransformAnimationQt): + (WebCore::TransformAnimationQt::applyFrame): + (WebCore::GraphicsLayerQt::addAnimation): + +2010-04-13 Eskil Blomfeldt <eblomfel@trolltech.com>, Jesus Sanchez-Palencia <jesus.palencia@openbossa.org> + + Reviewed by Simon Hausmann. + + [Qt] Use integer pixel metric QFont API to fix rounding errors in text rendering on the Mac + https://bugs.webkit.org/show_bug.cgi?id=36532 + + * platform/graphics/qt/FontQt.cpp: + (WebCore::Font::floatWidthForComplexText): + (WebCore::Font::font): + +2010-04-16 Daniel Bates <dbates@rim.com> + + Reviewed by Adam Treat. + + https://bugs.webkit.org/show_bug.cgi?id=36312 + + Adds support for the viewport meta tag. The code is largely derived in whole + or in part from the WebCore-528.15 source published as part of the iPhone 3.1.3 + source code <http://www.opensource.apple.com/source/WebCore/WebCore-528.15/>. + + * Android.mk: Added file ViewportArguments.cpp. + * GNUmakefile.am: Added files ViewportArguments.cpp and ViewportArguments.h. + * WebCore.gypi: Ditto. + * WebCore.pro: Ditto. + * WebCore.vcproj/WebCore.vcproj: Ditto. + * WebCore.xcodeproj/project.pbxproj: Ditto. + * dom/Document.cpp: + (WebCore::isSeparator): Added. + (WebCore::Document::processArguments): Added. + (WebCore::Document::processViewport): Added. + * dom/Document.h: + * dom/ViewportArguments.cpp: Added. + (WebCore::setViewportFeature): + (WebCore::viewportErrorMessageTemplate): + (WebCore::viewportErrorMessageLevel): + (WebCore::reportViewportWarning): + * dom/ViewportArguments.h: Added. + (WebCore::): + (WebCore::ViewportArguments::): + (WebCore::ViewportArguments::ViewportArguments): + (WebCore::ViewportArguments::hasCustomArgument): + * html/HTMLMetaElement.cpp: + (WebCore::HTMLMetaElement::process): Modified to call Document::processViewport. + * page/ChromeClient.h: + (WebCore::ChromeClient::didReceiveViewportArguments): Added. + +2010-04-15 Luiz Agostini <luiz.agostini@openbossa.org> + + Reviewed by Antti Koivisto. + + No default selection for <select multiple> menu lists. + https://bugs.webkit.org/show_bug.cgi?id=37530 + + Manual test: manual-tests/no-listbox-rendering.html + + For menu lists, if the selection is not indicated by the html file, the first <option> will be + selected after loading the page or reseting the form. On the other hand listboxes may have no + element selected after loading the page or reseting the form. + + When NO_LISTBOX_RENDERING is enabled listboxes becomes menu lists. Those <select multiple> + that did not have selected elements, now being menu lists, will have the first <option> + selected. That is the behavior difference that this patch corrects. + + When NO_LISTBOX_RENDERING is enabled usesMenuList() always returns true then usesMenuList() cannot + be used to decide about initial selection of the elements. This patch replaces (usesMenuLists()) + by (!multiple && size <= 1) where initial selection is considered. + + * dom/SelectElement.cpp: + (WebCore::SelectElement::recalcListItems): + (WebCore::SelectElement::reset): + * manual-tests/no-listbox-rendering.html: Added. + +2010-04-19 Balazs Kelemen <kb@inf.u-szeged.hu> + + Reviewed by Kenneth Rohde Christiansen. + + [Qt] Destroy SharedTimerQt before destruction of QCoreApplication. + + To avoid unsafe situations caused by running WebCore code (through firing timers) when destruction of QCoreApplication + has been started, we should explicitly destroy the SharedTimerQt instance on application exit. + We can achieve that through installing a self-destroying slot for the QCoreApplication::aboutToQuit() signal + into the SharedTimerQt instance. + + https://bugs.webkit.org/show_bug.cgi?id=36832 + + No functional change so no new tests. + + * platform/qt/SharedTimerQt.cpp: + (WebCore::SharedTimerQt::SharedTimerQt): + (WebCore::SharedTimerQt::destroy): + (WebCore::SharedTimerQt::inst): + +2010-04-16 Noam Rosenthal <noam.rosenthal@nokia.com> + + Reviewed by Kenneth Rohde Christiansen. + + Make GraphicsLayerQt always use ItemCoordinateCache, and remove ItemUsesExtendedStyleOption. + This aligns our implementation with the Safari implementation - layers are always uploaded + to textures in item units, and WebCore is responsible for the heuristics. + + [Qt] GraphicsLayer: performance optimizations + https://bugs.webkit.org/show_bug.cgi?id=35393 + + No new tests. Still no FPS benchmarks available (on any platform) + but animations are noticably better. + + * platform/graphics/qt/GraphicsLayerQt.cpp: + (WebCore::GraphicsLayerQtImpl::GraphicsLayerQtImpl): + (WebCore::GraphicsLayerQtImpl::paint): + (WebCore::GraphicsLayerQtImpl::flushChanges): + (WebCore::TransformAnimationQt::updateState): + +2010-04-16 Antonio Gomes <tonikitoo@webkit.org> + + Unreviewed QtWebKit (with Qt 4.7) build fix. + + Bug 37683 moved code from FontQt.cpp to FontPlatformDataQt.cpp but did not + renamed the variable used. + + * platform/graphics/qt/FontPlatformDataQt.cpp: + (WebCore::FontPlatformData::FontPlatformData): + +2010-04-16 Simon Hausmann <simon.hausmann@nokia.com> + + Reviewed by Kenneth Rohde Christiansen. + + [Qt] WebCore::Font::font() causes a QFont detach + https://bugs.webkit.org/show_bug.cgi?id=37683 + + Moved the setStyleStrategy call to FontPlatformData + to avoid the detach. + + Thanks to Holger for spotting this. + + * platform/graphics/qt/FontPlatformDataQt.cpp: + (WebCore::FontPlatformData::FontPlatformData): + * platform/graphics/qt/FontQt.cpp: + (WebCore::Font::font): + +2010-04-16 No'am Rosenthal <noam.rosenthal@nokia.com> + + Reviewed by Antti Koivisto. + + [Qt]QtLauncher crash on page with CSS 3D transform + https://bugs.webkit.org/show_bug.cgi?id=36859 + + Added a neccessary null-pointer check, lack of which created the crash circumstances. + + Tested by http://css-vfx.googlecode.com/svn/trunk/snowstack/snowstack.html + + * platform/graphics/qt/GraphicsLayerQt.cpp: + (WebCore::GraphicsLayerQtImpl::flushChanges): + +2010-04-18 Simon Hausmann <simon.hausmann@nokia.com> + + Reviewed by Laszlo Gombos. + + [Qt] Fix JavaScriptCore's include path for WinCE builds + + https://bugs.webkit.org/show_bug.cgi?id=36751 + + * WebCore.pro: + +2010-04-19 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> + + Reviewed by Simon Hausmann. + + [Qt] Fix compilation against namespaced Qt. + + * platform/graphics/GraphicsLayer.h: + * platform/graphics/Tile.h: + * platform/graphics/qt/MediaPlayerPrivateQt.h: + * platform/network/qt/NetworkStateNotifierPrivate.h: + +2010-04-14 Luiz Agostini <luiz.agostini@openbossa.org> + + Reviewed by Kenneth Rohde Christiansen. + + Changing view mode names due to specification changes + https://bugs.webkit.org/show_bug.cgi?id=37615 + + test: fast/media/media-feature-wgt-view-mode.html + + specification: http://dev.w3.org/2006/waf/widgets-vmmf/ + + * css/MediaQueryEvaluator.cpp: + (WebCore::view_modeMediaFeatureEval): + * page/ChromeClient.h: + (WebCore::ChromeClient::isWindowed): + (WebCore::ChromeClient::isMaximized): + (WebCore::ChromeClient::isMinimized): + +2010-04-15 Bruno Schmidt <bruno.schmidt@gmail.com> + + Reviewed by Kenneth Rohde Christiansen. + + [Qt] Null QObjects properties cause Segmentation Fault + https://bugs.webkit.org/show_bug.cgi?id=34730 + + QObjects exported to the QWebkit javascript with properties that are + a null "QObject*" cause Segmentation Fault. + + If an QObject is added to the javascript context and it contains + properties of the type QObject* with NULL value, calling the property + causes Segmentation Fault. + So now the code below properly checks for null pointers: + + * bridge/qt/qt_instance.cpp: + (JSC::Bindings::QtInstance::getClass): may return NULL + (JSC::Bindings::QtInstance::getMethod): may return jsNull() + (JSC::Bindings::QtInstance::stringValue): may return jsNull() + (JSC::Bindings::QtInstance::booleanValue): may return false + * bridge/qt/qt_runtime.cpp: + (JSC::Bindings::convertValueToQVariant): + (JSC::Bindings::convertQVariantToValue): May return jsNull on QObjectStar + 2010-04-09 Kenneth Rohde Christiansen <kenneth@webkit.org> Reviewed by Simon Fraser. diff --git a/src/3rdparty/webkit/WebCore/WebCore.gypi b/src/3rdparty/webkit/WebCore/WebCore.gypi index 9746b46..caa79f2 100644 --- a/src/3rdparty/webkit/WebCore/WebCore.gypi +++ b/src/3rdparty/webkit/WebCore/WebCore.gypi @@ -1226,6 +1226,8 @@ 'dom/UIEvent.h', 'dom/UIEventWithKeyState.cpp', 'dom/UIEventWithKeyState.h', + 'dom/ViewportArguments.cpp', + 'dom/ViewportArguments.h', 'dom/WebKitAnimationEvent.cpp', 'dom/WebKitAnimationEvent.h', 'dom/WebKitTransitionEvent.cpp', diff --git a/src/3rdparty/webkit/WebCore/WebCore.pro b/src/3rdparty/webkit/WebCore/WebCore.pro index 3dfe803..2a64982 100644 --- a/src/3rdparty/webkit/WebCore/WebCore.pro +++ b/src/3rdparty/webkit/WebCore/WebCore.pro @@ -35,13 +35,13 @@ symbian: { # Move RW-section base address to start from 0xE00000 instead of the toolchain default 0x400000. QMAKE_LFLAGS.ARMCC += --rw-base 0xE00000 MMP_RULES += ALWAYS_BUILD_AS_ARM - } else { + } else { QMAKE_CFLAGS -= --thumb QMAKE_CXXFLAGS -= --thumb } + CONFIG(release, debug|release): QMAKE_CXXFLAGS.ARMCC += -OTime -O3 } - isEmpty(OUTPUT_DIR): OUTPUT_DIR = .. include($$PWD/../WebKit.pri) @@ -530,6 +530,7 @@ SOURCES += \ dom/TreeWalker.cpp \ dom/UIEvent.cpp \ dom/UIEventWithKeyState.cpp \ + dom/ViewportArguments.cpp \ dom/WebKitAnimationEvent.cpp \ dom/WebKitTransitionEvent.cpp \ dom/WheelEvent.cpp \ @@ -1241,6 +1242,7 @@ HEADERS += \ dom/TreeWalker.h \ dom/UIEvent.h \ dom/UIEventWithKeyState.h \ + dom/ViewportArguments.h \ dom/WebKitAnimationEvent.h \ dom/WebKitTransitionEvent.h \ dom/WheelEvent.h \ @@ -2949,5 +2951,5 @@ symbian { } } -# WebKit doesn't compile in C++0x mode +# Disable C++0x mode in WebCore for those who enabled it in their Qt's mkspec *-g++*:QMAKE_CXXFLAGS -= -std=c++0x -std=gnu++0x diff --git a/src/3rdparty/webkit/WebCore/bridge/npapi.h b/src/3rdparty/webkit/WebCore/bridge/npapi.h index 4a8492e..533fcba 100644 --- a/src/3rdparty/webkit/WebCore/bridge/npapi.h +++ b/src/3rdparty/webkit/WebCore/bridge/npapi.h @@ -590,8 +590,8 @@ typedef QEvent NPEvent; typedef struct _NPEvent { uint16 event; - uint32 wParam; - uint32 lParam; + uintptr_t wParam; + uintptr_t lParam; } NPEvent; #elif defined (XP_UNIX) typedef XEvent NPEvent; diff --git a/src/3rdparty/webkit/WebCore/bridge/qt/qt_instance.cpp b/src/3rdparty/webkit/WebCore/bridge/qt/qt_instance.cpp index dc6df14..f6f368b 100644 --- a/src/3rdparty/webkit/WebCore/bridge/qt/qt_instance.cpp +++ b/src/3rdparty/webkit/WebCore/bridge/qt/qt_instance.cpp @@ -171,8 +171,11 @@ QtInstance* QtInstance::getInstance(JSObject* object) Class* QtInstance::getClass() const { - if (!m_class) + if (!m_class) { + if (!m_object) + return 0; m_class = QtClass::classForObject(m_object); + } return m_class; } @@ -238,7 +241,9 @@ void QtInstance::getPropertyNames(ExecState* exec, PropertyNameArray& array) JSValue QtInstance::getMethod(ExecState* exec, const Identifier& propertyName) { - MethodList methodList = getClass()->methodsNamed(propertyName, this); + if (!getClass()) + return jsNull(); + MethodList methodList = m_class->methodsNamed(propertyName, this); return new (exec) RuntimeMethod(exec, propertyName, methodList); } @@ -259,12 +264,15 @@ JSValue QtInstance::defaultValue(ExecState* exec, PreferredPrimitiveType hint) c JSValue QtInstance::stringValue(ExecState* exec) const { + QObject* obj = getObject(); + if (!obj) + return jsNull(); + // Hmm.. see if there is a toString defined QByteArray buf; bool useDefault = true; getClass(); - QObject* obj = getObject(); - if (m_class && obj) { + if (m_class) { // Cheat and don't use the full name resolution int index = obj->metaObject()->indexOfMethod("toString()"); if (index >= 0) { @@ -309,7 +317,7 @@ JSValue QtInstance::numberValue(ExecState* exec) const JSValue QtInstance::booleanValue() const { // ECMA 9.2 - return jsBoolean(true); + return jsBoolean(getObject()); } JSValue QtInstance::valueOf(ExecState* exec) const diff --git a/src/3rdparty/webkit/WebCore/bridge/qt/qt_runtime.cpp b/src/3rdparty/webkit/WebCore/bridge/qt/qt_runtime.cpp index 3bd5190..1775815 100644 --- a/src/3rdparty/webkit/WebCore/bridge/qt/qt_runtime.cpp +++ b/src/3rdparty/webkit/WebCore/bridge/qt/qt_runtime.cpp @@ -332,7 +332,7 @@ QVariant convertValueToQVariant(ExecState* exec, JSValue value, QMetaType::Type break; } - case QMetaType::QVariantMap: + case QMetaType::QVariantMap: if (type == Object || type == Array || type == RTArray) { // Enumerate the contents of the object PropertyNameArray properties(exec); @@ -871,6 +871,8 @@ JSValue convertQVariantToValue(ExecState* exec, PassRefPtr<RootObject> root, con if (type == QMetaType::QObjectStar || type == QMetaType::QWidgetStar) { QObject* obj = variant.value<QObject*>(); + if (!obj) + return jsNull(); return QtInstance::getQtInstance(obj, root, QScriptEngine::QtOwnership)->createRuntimeObject(exec); } @@ -895,7 +897,7 @@ JSValue convertQVariantToValue(ExecState* exec, PassRefPtr<RootObject> root, con QVariantMap::const_iterator i = map.constBegin(); while (i != map.constEnd()) { QString s = i.key(); - JSValue val = convertQVariantToValue(exec, root, i.value()); + JSValue val = convertQVariantToValue(exec, root.get(), i.value()); if (val) { PutPropertySlot slot; ret->put(exec, Identifier(exec, (const UChar *)s.constData(), s.length()), val, slot); diff --git a/src/3rdparty/webkit/WebCore/css/MediaQueryEvaluator.cpp b/src/3rdparty/webkit/WebCore/css/MediaQueryEvaluator.cpp index 4fda075..ded40b5 100644 --- a/src/3rdparty/webkit/WebCore/css/MediaQueryEvaluator.cpp +++ b/src/3rdparty/webkit/WebCore/css/MediaQueryEvaluator.cpp @@ -501,14 +501,16 @@ static bool view_modeMediaFeatureEval(CSSValue* value, RenderStyle*, Frame* fram if (value) { String mode = static_cast<CSSPrimitiveValue*>(value)->getStringValue(); if (ChromeClient* client = frame->page()->chrome()->client()) { - if (mode == "mini" && client->isDocked()) + if (mode == "windowed" && client->isWindowed()) return true; if (mode == "floating" && client->isFloating()) return true; - if (mode == "application" && client->isApplication()) - return true; if (mode == "fullscreen" && client->isFullscreen()) return true; + if (mode == "maximized" && client->isMaximized()) + return true; + if (mode == "minimized" && client->isMinimized()) + return true; return false; } } diff --git a/src/3rdparty/webkit/WebCore/dom/Document.cpp b/src/3rdparty/webkit/WebCore/dom/Document.cpp index aedba0d..545819d 100644 --- a/src/3rdparty/webkit/WebCore/dom/Document.cpp +++ b/src/3rdparty/webkit/WebCore/dom/Document.cpp @@ -127,6 +127,7 @@ #include "TreeWalker.h" #include "UIEvent.h" #include "UserContentURLPattern.h" +#include "ViewportArguments.h" #include "WebKitAnimationEvent.h" #include "WebKitTransitionEvent.h" #include "WheelEvent.h" @@ -2282,6 +2283,78 @@ void Document::processHttpEquiv(const String& equiv, const String& content) } } +// Though isspace() considers \t and \v to be whitespace, Win IE doesn't. +static bool isSeparator(UChar c) +{ + return c == ' ' || c == '\t' || c == '\n' || c == '\r' || c == '=' || c == ',' || c == '\0'; +} + +void Document::processArguments(const String& features, void* data, ArgumentsCallback callback) +{ + // Tread lightly in this code -- it was specifically designed to mimic Win IE's parsing behavior. + int keyBegin, keyEnd; + int valueBegin, valueEnd; + + int i = 0; + int length = features.length(); + String buffer = features.lower(); + while (i < length) { + // skip to first non-separator, but don't skip past the end of the string + while (isSeparator(buffer[i])) { + if (i >= length) + break; + i++; + } + keyBegin = i; + + // skip to first separator + while (!isSeparator(buffer[i])) + i++; + keyEnd = i; + + // skip to first '=', but don't skip past a ',' or the end of the string + while (buffer[i] != '=') { + if (buffer[i] == ',' || i >= length) + break; + i++; + } + + // skip to first non-separator, but don't skip past a ',' or the end of the string + while (isSeparator(buffer[i])) { + if (buffer[i] == ',' || i >= length) + break; + i++; + } + valueBegin = i; + + // skip to first separator + while (!isSeparator(buffer[i])) + i++; + valueEnd = i; + + ASSERT(i <= length); + + String keyString = buffer.substring(keyBegin, keyEnd - keyBegin); + String valueString = buffer.substring(valueBegin, valueEnd - valueBegin); + callback(keyString, valueString, this, data); + } +} + +void Document::processViewport(const String& features) +{ + ASSERT(!features.isNull()); + + Frame* frame = this->frame(); + if (!frame) + return; + + ViewportArguments arguments; + processArguments(features, (void*)&arguments, &setViewportFeature); + + if (frame->page()) + frame->page()->chrome()->client()->didReceiveViewportArguments(frame, arguments); +} + MouseEventWithHitTestResults Document::prepareMouseEvent(const HitTestRequest& request, const IntPoint& documentPoint, const PlatformMouseEvent& event) { ASSERT(!renderer() || renderer()->isRenderView()); diff --git a/src/3rdparty/webkit/WebCore/dom/Document.h b/src/3rdparty/webkit/WebCore/dom/Document.h index cc3e559..44cdf0d 100644 --- a/src/3rdparty/webkit/WebCore/dom/Document.h +++ b/src/3rdparty/webkit/WebCore/dom/Document.h @@ -698,7 +698,8 @@ public: * @param content The header value (value of the meta tag's "content" attribute) */ void processHttpEquiv(const String& equiv, const String& content); - + void processViewport(const String& features); + // Returns the owning element in the parent document. // Returns 0 if this is the top level document. Element* ownerElement() const; @@ -972,6 +973,10 @@ protected: void clearXMLVersion() { m_xmlVersion = String(); } private: + + typedef void (*ArgumentsCallback)(const String& keyString, const String& valueString, Document*, void* data); + void processArguments(const String& features, void* data, ArgumentsCallback); + virtual bool isDocument() const { return true; } virtual void removedLastRef(); virtual void determineParseMode() { } diff --git a/src/3rdparty/webkit/WebCore/dom/Element.cpp b/src/3rdparty/webkit/WebCore/dom/Element.cpp index 8711110..6bd512d 100644 --- a/src/3rdparty/webkit/WebCore/dom/Element.cpp +++ b/src/3rdparty/webkit/WebCore/dom/Element.cpp @@ -561,7 +561,11 @@ void Element::setAttribute(const AtomicString& name, const AtomicString& value, return; } +#if COMPILER(RVCT) + const AtomicString localName = shouldIgnoreAttributeCase(this) ? name.lower() : name; +#else const AtomicString& localName = shouldIgnoreAttributeCase(this) ? name.lower() : name; +#endif // allocate attributemap if necessary Attribute* old = attributes(false)->getAttributeItem(localName, false); diff --git a/src/3rdparty/webkit/WebCore/dom/SelectElement.cpp b/src/3rdparty/webkit/WebCore/dom/SelectElement.cpp index e900245..4af90c9 100644 --- a/src/3rdparty/webkit/WebCore/dom/SelectElement.cpp +++ b/src/3rdparty/webkit/WebCore/dom/SelectElement.cpp @@ -270,11 +270,11 @@ void SelectElement::recalcListItems(SelectElementData& data, const Element* elem if (OptionElement* optionElement = toOptionElement(current)) { listItems.append(current); - if (updateSelectedStates) { - if (!foundSelected && (data.usesMenuList() || (!data.multiple() && optionElement->selected()))) { + if (updateSelectedStates && !data.multiple()) { + if (!foundSelected && (data.size() <= 1 || optionElement->selected())) { foundSelected = optionElement; foundSelected->setSelectedState(true); - } else if (foundSelected && !data.multiple() && optionElement->selected()) { + } else if (foundSelected && optionElement->selected()) { foundSelected->setSelectedState(false); foundSelected = optionElement; } @@ -499,7 +499,7 @@ void SelectElement::reset(SelectElementData& data, Element* element) firstOption = optionElement; } - if (!selectedOption && firstOption && data.usesMenuList()) + if (!selectedOption && firstOption && !data.multiple() && data.size() <= 1) firstOption->setSelectedState(true); setOptionsChangedOnRenderer(data, element); diff --git a/src/3rdparty/webkit/WebCore/dom/ViewportArguments.cpp b/src/3rdparty/webkit/WebCore/dom/ViewportArguments.cpp new file mode 100644 index 0000000..d585896 --- /dev/null +++ b/src/3rdparty/webkit/WebCore/dom/ViewportArguments.cpp @@ -0,0 +1,120 @@ +/* + * Copyright (C) 1999 Lars Knoll (knoll@kde.org) + * (C) 1999 Antti Koivisto (koivisto@kde.org) + * (C) 2001 Dirk Mueller (mueller@kde.org) + * (C) 2006 Alexey Proskuryakov (ap@webkit.org) + * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. + * Copyright (C) 2008 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + */ + +#include "config.h" +#include "ViewportArguments.h" + +#include "Chrome.h" +#include "Console.h" +#include "DOMWindow.h" +#include "Document.h" +#include "Frame.h" +#include "Page.h" +#include "PlatformString.h" +#include "Tokenizer.h" + +namespace WebCore { + +void setViewportFeature(const String& keyString, const String& valueString, Document* document, void* data) +{ + ViewportArguments* arguments = static_cast<ViewportArguments*>(data); + float value = ViewportArguments::ValueUndefined; + bool didUseConstants = false; + + if (equalIgnoringCase(valueString, "yes")) + value = 1; + else if (equalIgnoringCase(valueString, "device-width")) { + didUseConstants = true; + if (document->page()) + value = document->page()->chrome()->windowRect().width(); + } else if (equalIgnoringCase(valueString, "device-height")) { + didUseConstants = true; + if (document->page()) + value = document->page()->chrome()->windowRect().height(); + } else if (equalIgnoringCase(valueString, "default")) // This allows us to distinguish the omission of a key from asking for the default value. + value = -2; + else if (valueString.length()) // listing a key with no value is shorthand for key=default + value = valueString.toFloat(); + + if (keyString == "initial-scale") + arguments->initialScale = value; + else if (keyString == "minimum-scale") + arguments->minimumScale = value; + else if (keyString == "maximum-scale") { + arguments->maximumScale = value; + if (value > 10.0) + reportViewportWarning(document, MaximumScaleTooLargeError, keyString); + } else if (keyString == "user-scalable") + arguments->userScalable = value; + else if (keyString == "width") { + if (document->page() && value == document->page()->chrome()->windowRect().width() && !didUseConstants) + reportViewportWarning(document, DeviceWidthShouldBeUsedWarning, keyString); + else if (document->page() && value == document->page()->chrome()->windowRect().height() && !didUseConstants) + reportViewportWarning(document, DeviceHeightShouldBeUsedWarning, keyString); + + arguments->width = value; + } else if (keyString == "height") { + if (document->page() && value == document->page()->chrome()->windowRect().width() && !didUseConstants) + reportViewportWarning(document, DeviceWidthShouldBeUsedWarning, keyString); + else if (document->page() && value == document->page()->chrome()->windowRect().height() && !didUseConstants) + reportViewportWarning(document, DeviceHeightShouldBeUsedWarning, keyString); + + arguments->height = value; + } else + reportViewportWarning(document, UnrecognizedViewportArgumentError, keyString); +} + +static const char* viewportErrorMessageTemplate(ViewportErrorCode errorCode) +{ + static const char* const errors[] = { + "Viewport width or height set to physical device width, try using \"device-width\" constant instead for future compatibility.", + "Viewport height or height set to physical device height, try using \"device-height\" constant instead for future compatibility.", + "Viewport argument \"%replacement\" not recognized. Content ignored.", + "Viewport maximum-scale cannot be larger than 10.0. The maximum-scale will be set to 10.0." + }; + + return errors[errorCode]; +} + +static MessageLevel viewportErrorMessageLevel(ViewportErrorCode errorCode) +{ + return errorCode == UnrecognizedViewportArgumentError || errorCode == MaximumScaleTooLargeError ? ErrorMessageLevel : TipMessageLevel; +} + +void reportViewportWarning(Document* document, ViewportErrorCode errorCode, const String& replacement) +{ + Tokenizer* tokenizer = document->tokenizer(); + + Frame* frame = document->frame(); + if (!frame) + return; + + String message = viewportErrorMessageTemplate(errorCode); + message.replace("%replacement", replacement); + + frame->domWindow()->console()->addMessage(HTMLMessageSource, LogMessageType, viewportErrorMessageLevel(errorCode), message, tokenizer ? tokenizer->lineNumber() + 1 : 0, document->url().string()); +} + +} // namespace WebCore diff --git a/src/3rdparty/webkit/WebCore/dom/ViewportArguments.h b/src/3rdparty/webkit/WebCore/dom/ViewportArguments.h new file mode 100644 index 0000000..29eec8e --- /dev/null +++ b/src/3rdparty/webkit/WebCore/dom/ViewportArguments.h @@ -0,0 +1,74 @@ +/* + * Copyright (C) 1999 Lars Knoll (knoll@kde.org) + * (C) 1999 Antti Koivisto (koivisto@kde.org) + * (C) 2001 Dirk Mueller (mueller@kde.org) + * (C) 2006 Alexey Proskuryakov (ap@webkit.org) + * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. + * Copyright (C) 2008 Torch Mobile Inc. All rights reserved. (http://www.torchmobile.com/) + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + */ + +#ifndef ViewportArguments_h +#define ViewportArguments_h + +namespace WebCore { + +class Document; +class String; + +enum ViewportErrorCode { + DeviceWidthShouldBeUsedWarning, + DeviceHeightShouldBeUsedWarning, + UnrecognizedViewportArgumentError, + MaximumScaleTooLargeError +}; + +struct ViewportArguments { + + enum { ValueUndefined = -1 }; + + ViewportArguments() + : initialScale(ValueUndefined) + , minimumScale(ValueUndefined) + , maximumScale(ValueUndefined) + , width(ValueUndefined) + , height(ValueUndefined) + , userScalable(ValueUndefined) + { + } + + float initialScale; + float minimumScale; + float maximumScale; + float width; + float height; + + float userScalable; + + bool hasCustomArgument() const + { + return initialScale != ValueUndefined || minimumScale != ValueUndefined || maximumScale != ValueUndefined || width != ValueUndefined || height != ValueUndefined || userScalable != ValueUndefined; + } +}; + +void setViewportFeature(const String& keyString, const String& valueString, Document*, void* data); +void reportViewportWarning(Document*, ViewportErrorCode, const String& replacement); + +} // namespace WebCore + +#endif // ViewportArguments_h diff --git a/src/3rdparty/webkit/WebCore/generated/CSSGrammar.cpp b/src/3rdparty/webkit/WebCore/generated/CSSGrammar.cpp index de39328..9f3db9d 100644 --- a/src/3rdparty/webkit/WebCore/generated/CSSGrammar.cpp +++ b/src/3rdparty/webkit/WebCore/generated/CSSGrammar.cpp @@ -76,7 +76,7 @@ /* Copy the first part of user declarations. */ /* Line 189 of yacc.c */ -#line 1 "css\\CSSGrammar.y" +#line 1 "css/CSSGrammar.y" /* @@ -137,7 +137,7 @@ using namespace HTMLNames; /* Line 189 of yacc.c */ -#line 141 "C:/dev/webkit-2.0/WebCore/generated/CSSGrammar.tab.c" +#line 141 "/WebCore/generated/CSSGrammar.tab.c" /* Enabling traces. */ #ifndef YYDEBUG @@ -238,7 +238,7 @@ typedef union YYSTYPE { /* Line 214 of yacc.c */ -#line 62 "css\\CSSGrammar.y" +#line 62 "css/CSSGrammar.y" bool boolean; char character; @@ -265,7 +265,7 @@ typedef union YYSTYPE /* Line 214 of yacc.c */ -#line 269 "C:/dev/webkit-2.0/WebCore/generated/CSSGrammar.tab.c" +#line 269 "/WebCore/generated/CSSGrammar.tab.c" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ @@ -276,7 +276,7 @@ typedef union YYSTYPE /* Copy the second part of user declarations. */ /* Line 264 of yacc.c */ -#line 86 "css\\CSSGrammar.y" +#line 86 "css/CSSGrammar.y" static inline int cssyyerror(const char*) @@ -292,7 +292,7 @@ static int cssyylex(YYSTYPE* yylval, void* parser) /* Line 264 of yacc.c */ -#line 296 "C:/dev/webkit-2.0/WebCore/generated/CSSGrammar.tab.c" +#line 296 "/WebCore/generated/CSSGrammar.tab.c" #ifdef short # undef short @@ -2170,7 +2170,7 @@ yyreduce: case 10: /* Line 1455 of yacc.c */ -#line 280 "css\\CSSGrammar.y" +#line 280 "css/CSSGrammar.y" { static_cast<CSSParser*>(parser)->m_rule = (yyvsp[(4) - (6)].rule); ;} @@ -2179,7 +2179,7 @@ yyreduce: case 11: /* Line 1455 of yacc.c */ -#line 286 "css\\CSSGrammar.y" +#line 286 "css/CSSGrammar.y" { static_cast<CSSParser*>(parser)->m_keyframe = (yyvsp[(4) - (6)].keyframeRule); ;} @@ -2188,7 +2188,7 @@ yyreduce: case 12: /* Line 1455 of yacc.c */ -#line 292 "css\\CSSGrammar.y" +#line 292 "css/CSSGrammar.y" { /* can be empty */ ;} @@ -2197,7 +2197,7 @@ yyreduce: case 13: /* Line 1455 of yacc.c */ -#line 298 "css\\CSSGrammar.y" +#line 298 "css/CSSGrammar.y" { /* can be empty */ ;} @@ -2206,7 +2206,7 @@ yyreduce: case 14: /* Line 1455 of yacc.c */ -#line 304 "css\\CSSGrammar.y" +#line 304 "css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); if ((yyvsp[(4) - (5)].valueList)) { @@ -2223,7 +2223,7 @@ yyreduce: case 15: /* Line 1455 of yacc.c */ -#line 318 "css\\CSSGrammar.y" +#line 318 "css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); p->m_mediaQuery = p->sinkFloatingMediaQuery((yyvsp[(4) - (5)].mediaQuery)); @@ -2233,7 +2233,7 @@ yyreduce: case 16: /* Line 1455 of yacc.c */ -#line 325 "css\\CSSGrammar.y" +#line 325 "css/CSSGrammar.y" { if ((yyvsp[(4) - (5)].selectorList)) { CSSParser* p = static_cast<CSSParser*>(parser); @@ -2246,7 +2246,7 @@ yyreduce: case 23: /* Line 1455 of yacc.c */ -#line 347 "css\\CSSGrammar.y" +#line 347 "css/CSSGrammar.y" { ;} break; @@ -2254,7 +2254,7 @@ yyreduce: case 26: /* Line 1455 of yacc.c */ -#line 357 "css\\CSSGrammar.y" +#line 357 "css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); (yyval.rule) = static_cast<CSSParser*>(parser)->createCharsetRule((yyvsp[(3) - (5)].string)); @@ -2266,7 +2266,7 @@ yyreduce: case 27: /* Line 1455 of yacc.c */ -#line 363 "css\\CSSGrammar.y" +#line 363 "css/CSSGrammar.y" { ;} break; @@ -2274,7 +2274,7 @@ yyreduce: case 28: /* Line 1455 of yacc.c */ -#line 365 "css\\CSSGrammar.y" +#line 365 "css/CSSGrammar.y" { ;} break; @@ -2282,7 +2282,7 @@ yyreduce: case 30: /* Line 1455 of yacc.c */ -#line 371 "css\\CSSGrammar.y" +#line 371 "css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); if ((yyvsp[(2) - (3)].rule) && p->m_styleSheet) @@ -2293,7 +2293,7 @@ yyreduce: case 39: /* Line 1455 of yacc.c */ -#line 390 "css\\CSSGrammar.y" +#line 390 "css/CSSGrammar.y" { static_cast<CSSParser*>(parser)->m_hadSyntacticallyValidCSSRule = true; ;} @@ -2302,14 +2302,14 @@ yyreduce: case 42: /* Line 1455 of yacc.c */ -#line 398 "css\\CSSGrammar.y" +#line 398 "css/CSSGrammar.y" { (yyval.ruleList) = 0; ;} break; case 43: /* Line 1455 of yacc.c */ -#line 399 "css\\CSSGrammar.y" +#line 399 "css/CSSGrammar.y" { (yyval.ruleList) = (yyvsp[(1) - (3)].ruleList); if ((yyvsp[(2) - (3)].rule)) { @@ -2323,7 +2323,7 @@ yyreduce: case 55: /* Line 1455 of yacc.c */ -#line 428 "css\\CSSGrammar.y" +#line 428 "css/CSSGrammar.y" { (yyval.rule) = static_cast<CSSParser*>(parser)->createImportRule((yyvsp[(3) - (6)].string), (yyvsp[(5) - (6)].mediaList)); ;} @@ -2332,7 +2332,7 @@ yyreduce: case 56: /* Line 1455 of yacc.c */ -#line 431 "css\\CSSGrammar.y" +#line 431 "css/CSSGrammar.y" { (yyval.rule) = 0; ;} @@ -2341,7 +2341,7 @@ yyreduce: case 57: /* Line 1455 of yacc.c */ -#line 434 "css\\CSSGrammar.y" +#line 434 "css/CSSGrammar.y" { (yyval.rule) = 0; ;} @@ -2350,7 +2350,7 @@ yyreduce: case 58: /* Line 1455 of yacc.c */ -#line 437 "css\\CSSGrammar.y" +#line 437 "css/CSSGrammar.y" { (yyval.rule) = 0; ;} @@ -2359,7 +2359,7 @@ yyreduce: case 59: /* Line 1455 of yacc.c */ -#line 443 "css\\CSSGrammar.y" +#line 443 "css/CSSGrammar.y" { (yyval.rule) = static_cast<CSSParser*>(parser)->createVariablesRule((yyvsp[(3) - (7)].mediaList), true); ;} @@ -2368,7 +2368,7 @@ yyreduce: case 60: /* Line 1455 of yacc.c */ -#line 447 "css\\CSSGrammar.y" +#line 447 "css/CSSGrammar.y" { (yyval.rule) = static_cast<CSSParser*>(parser)->createVariablesRule((yyvsp[(3) - (7)].mediaList), false); ;} @@ -2377,7 +2377,7 @@ yyreduce: case 61: /* Line 1455 of yacc.c */ -#line 453 "css\\CSSGrammar.y" +#line 453 "css/CSSGrammar.y" { (yyval.mediaList) = static_cast<CSSParser*>(parser)->createMediaList(); ;} @@ -2386,7 +2386,7 @@ yyreduce: case 62: /* Line 1455 of yacc.c */ -#line 457 "css\\CSSGrammar.y" +#line 457 "css/CSSGrammar.y" { (yyval.mediaList) = (yyvsp[(3) - (3)].mediaList); ;} @@ -2395,7 +2395,7 @@ yyreduce: case 63: /* Line 1455 of yacc.c */ -#line 463 "css\\CSSGrammar.y" +#line 463 "css/CSSGrammar.y" { (yyval.boolean) = (yyvsp[(1) - (1)].boolean); ;} @@ -2404,7 +2404,7 @@ yyreduce: case 64: /* Line 1455 of yacc.c */ -#line 466 "css\\CSSGrammar.y" +#line 466 "css/CSSGrammar.y" { (yyval.boolean) = (yyvsp[(1) - (2)].boolean); if ((yyvsp[(2) - (2)].boolean)) @@ -2415,7 +2415,7 @@ yyreduce: case 65: /* Line 1455 of yacc.c */ -#line 471 "css\\CSSGrammar.y" +#line 471 "css/CSSGrammar.y" { (yyval.boolean) = (yyvsp[(1) - (1)].boolean); ;} @@ -2424,7 +2424,7 @@ yyreduce: case 66: /* Line 1455 of yacc.c */ -#line 474 "css\\CSSGrammar.y" +#line 474 "css/CSSGrammar.y" { (yyval.boolean) = false; ;} @@ -2433,7 +2433,7 @@ yyreduce: case 67: /* Line 1455 of yacc.c */ -#line 477 "css\\CSSGrammar.y" +#line 477 "css/CSSGrammar.y" { (yyval.boolean) = false; ;} @@ -2442,7 +2442,7 @@ yyreduce: case 68: /* Line 1455 of yacc.c */ -#line 480 "css\\CSSGrammar.y" +#line 480 "css/CSSGrammar.y" { (yyval.boolean) = (yyvsp[(1) - (2)].boolean); ;} @@ -2451,7 +2451,7 @@ yyreduce: case 69: /* Line 1455 of yacc.c */ -#line 486 "css\\CSSGrammar.y" +#line 486 "css/CSSGrammar.y" { (yyval.boolean) = (yyvsp[(1) - (3)].boolean); ;} @@ -2460,7 +2460,7 @@ yyreduce: case 70: /* Line 1455 of yacc.c */ -#line 489 "css\\CSSGrammar.y" +#line 489 "css/CSSGrammar.y" { (yyval.boolean) = false; ;} @@ -2469,7 +2469,7 @@ yyreduce: case 71: /* Line 1455 of yacc.c */ -#line 492 "css\\CSSGrammar.y" +#line 492 "css/CSSGrammar.y" { (yyval.boolean) = false; ;} @@ -2478,7 +2478,7 @@ yyreduce: case 72: /* Line 1455 of yacc.c */ -#line 495 "css\\CSSGrammar.y" +#line 495 "css/CSSGrammar.y" { (yyval.boolean) = false; ;} @@ -2487,7 +2487,7 @@ yyreduce: case 73: /* Line 1455 of yacc.c */ -#line 498 "css\\CSSGrammar.y" +#line 498 "css/CSSGrammar.y" { (yyval.boolean) = (yyvsp[(1) - (4)].boolean); if ((yyvsp[(2) - (4)].boolean)) @@ -2498,7 +2498,7 @@ yyreduce: case 74: /* Line 1455 of yacc.c */ -#line 503 "css\\CSSGrammar.y" +#line 503 "css/CSSGrammar.y" { (yyval.boolean) = (yyvsp[(1) - (4)].boolean); ;} @@ -2507,7 +2507,7 @@ yyreduce: case 75: /* Line 1455 of yacc.c */ -#line 506 "css\\CSSGrammar.y" +#line 506 "css/CSSGrammar.y" { (yyval.boolean) = (yyvsp[(1) - (6)].boolean); ;} @@ -2516,7 +2516,7 @@ yyreduce: case 76: /* Line 1455 of yacc.c */ -#line 512 "css\\CSSGrammar.y" +#line 512 "css/CSSGrammar.y" { (yyval.boolean) = static_cast<CSSParser*>(parser)->addVariable((yyvsp[(1) - (4)].string), (yyvsp[(4) - (4)].valueList)); ;} @@ -2525,7 +2525,7 @@ yyreduce: case 77: /* Line 1455 of yacc.c */ -#line 516 "css\\CSSGrammar.y" +#line 516 "css/CSSGrammar.y" { (yyval.boolean) = static_cast<CSSParser*>(parser)->addVariableDeclarationBlock((yyvsp[(1) - (7)].string)); ;} @@ -2534,7 +2534,7 @@ yyreduce: case 78: /* Line 1455 of yacc.c */ -#line 520 "css\\CSSGrammar.y" +#line 520 "css/CSSGrammar.y" { (yyval.boolean) = false; ;} @@ -2543,7 +2543,7 @@ yyreduce: case 79: /* Line 1455 of yacc.c */ -#line 524 "css\\CSSGrammar.y" +#line 524 "css/CSSGrammar.y" { (yyval.boolean) = false; ;} @@ -2552,7 +2552,7 @@ yyreduce: case 80: /* Line 1455 of yacc.c */ -#line 528 "css\\CSSGrammar.y" +#line 528 "css/CSSGrammar.y" { /* @variables { varname: } Just reduce away this variable with no value. */ (yyval.boolean) = false; @@ -2562,7 +2562,7 @@ yyreduce: case 81: /* Line 1455 of yacc.c */ -#line 533 "css\\CSSGrammar.y" +#line 533 "css/CSSGrammar.y" { /* if we come across rules with invalid values like this case: @variables { varname: *; }, just discard the property/value pair */ (yyval.boolean) = false; @@ -2572,7 +2572,7 @@ yyreduce: case 82: /* Line 1455 of yacc.c */ -#line 540 "css\\CSSGrammar.y" +#line 540 "css/CSSGrammar.y" { (yyval.string) = (yyvsp[(1) - (2)].string); ;} @@ -2581,7 +2581,7 @@ yyreduce: case 83: /* Line 1455 of yacc.c */ -#line 546 "css\\CSSGrammar.y" +#line 546 "css/CSSGrammar.y" { static_cast<CSSParser*>(parser)->addNamespace((yyvsp[(3) - (6)].string), (yyvsp[(4) - (6)].string)); (yyval.rule) = 0; @@ -2591,7 +2591,7 @@ yyreduce: case 84: /* Line 1455 of yacc.c */ -#line 550 "css\\CSSGrammar.y" +#line 550 "css/CSSGrammar.y" { (yyval.rule) = 0; ;} @@ -2600,7 +2600,7 @@ yyreduce: case 85: /* Line 1455 of yacc.c */ -#line 553 "css\\CSSGrammar.y" +#line 553 "css/CSSGrammar.y" { (yyval.rule) = 0; ;} @@ -2609,7 +2609,7 @@ yyreduce: case 86: /* Line 1455 of yacc.c */ -#line 556 "css\\CSSGrammar.y" +#line 556 "css/CSSGrammar.y" { (yyval.rule) = 0; ;} @@ -2618,21 +2618,21 @@ yyreduce: case 87: /* Line 1455 of yacc.c */ -#line 562 "css\\CSSGrammar.y" +#line 562 "css/CSSGrammar.y" { (yyval.string).characters = 0; ;} break; case 88: /* Line 1455 of yacc.c */ -#line 563 "css\\CSSGrammar.y" +#line 563 "css/CSSGrammar.y" { (yyval.string) = (yyvsp[(1) - (2)].string); ;} break; case 91: /* Line 1455 of yacc.c */ -#line 572 "css\\CSSGrammar.y" +#line 572 "css/CSSGrammar.y" { (yyval.string) = (yyvsp[(1) - (2)].string); ;} @@ -2641,7 +2641,7 @@ yyreduce: case 92: /* Line 1455 of yacc.c */ -#line 578 "css\\CSSGrammar.y" +#line 578 "css/CSSGrammar.y" { (yyval.valueList) = 0; ;} @@ -2650,7 +2650,7 @@ yyreduce: case 93: /* Line 1455 of yacc.c */ -#line 581 "css\\CSSGrammar.y" +#line 581 "css/CSSGrammar.y" { (yyval.valueList) = (yyvsp[(3) - (4)].valueList); ;} @@ -2659,7 +2659,7 @@ yyreduce: case 94: /* Line 1455 of yacc.c */ -#line 587 "css\\CSSGrammar.y" +#line 587 "css/CSSGrammar.y" { (yyvsp[(3) - (7)].string).lower(); (yyval.mediaQueryExp) = static_cast<CSSParser*>(parser)->createFloatingMediaQueryExp((yyvsp[(3) - (7)].string), (yyvsp[(5) - (7)].valueList)); @@ -2669,7 +2669,7 @@ yyreduce: case 95: /* Line 1455 of yacc.c */ -#line 594 "css\\CSSGrammar.y" +#line 594 "css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); (yyval.mediaQueryExpList) = p->createFloatingMediaQueryExpList(); @@ -2680,7 +2680,7 @@ yyreduce: case 96: /* Line 1455 of yacc.c */ -#line 599 "css\\CSSGrammar.y" +#line 599 "css/CSSGrammar.y" { (yyval.mediaQueryExpList) = (yyvsp[(1) - (5)].mediaQueryExpList); (yyval.mediaQueryExpList)->append(static_cast<CSSParser*>(parser)->sinkFloatingMediaQueryExp((yyvsp[(5) - (5)].mediaQueryExp))); @@ -2690,7 +2690,7 @@ yyreduce: case 97: /* Line 1455 of yacc.c */ -#line 606 "css\\CSSGrammar.y" +#line 606 "css/CSSGrammar.y" { (yyval.mediaQueryExpList) = static_cast<CSSParser*>(parser)->createFloatingMediaQueryExpList(); ;} @@ -2699,7 +2699,7 @@ yyreduce: case 98: /* Line 1455 of yacc.c */ -#line 609 "css\\CSSGrammar.y" +#line 609 "css/CSSGrammar.y" { (yyval.mediaQueryExpList) = (yyvsp[(3) - (3)].mediaQueryExpList); ;} @@ -2708,7 +2708,7 @@ yyreduce: case 99: /* Line 1455 of yacc.c */ -#line 615 "css\\CSSGrammar.y" +#line 615 "css/CSSGrammar.y" { (yyval.mediaQueryRestrictor) = MediaQuery::None; ;} @@ -2717,7 +2717,7 @@ yyreduce: case 100: /* Line 1455 of yacc.c */ -#line 618 "css\\CSSGrammar.y" +#line 618 "css/CSSGrammar.y" { (yyval.mediaQueryRestrictor) = MediaQuery::Only; ;} @@ -2726,7 +2726,7 @@ yyreduce: case 101: /* Line 1455 of yacc.c */ -#line 621 "css\\CSSGrammar.y" +#line 621 "css/CSSGrammar.y" { (yyval.mediaQueryRestrictor) = MediaQuery::Not; ;} @@ -2735,7 +2735,7 @@ yyreduce: case 102: /* Line 1455 of yacc.c */ -#line 627 "css\\CSSGrammar.y" +#line 627 "css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); (yyval.mediaQuery) = p->createFloatingMediaQuery(p->sinkFloatingMediaQueryExpList((yyvsp[(1) - (1)].mediaQueryExpList))); @@ -2745,7 +2745,7 @@ yyreduce: case 103: /* Line 1455 of yacc.c */ -#line 632 "css\\CSSGrammar.y" +#line 632 "css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); (yyvsp[(3) - (4)].string).lower(); @@ -2756,7 +2756,7 @@ yyreduce: case 104: /* Line 1455 of yacc.c */ -#line 640 "css\\CSSGrammar.y" +#line 640 "css/CSSGrammar.y" { (yyval.mediaList) = static_cast<CSSParser*>(parser)->createMediaList(); ;} @@ -2765,7 +2765,7 @@ yyreduce: case 106: /* Line 1455 of yacc.c */ -#line 647 "css\\CSSGrammar.y" +#line 647 "css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); (yyval.mediaList) = p->createMediaList(); @@ -2776,7 +2776,7 @@ yyreduce: case 107: /* Line 1455 of yacc.c */ -#line 652 "css\\CSSGrammar.y" +#line 652 "css/CSSGrammar.y" { (yyval.mediaList) = (yyvsp[(1) - (4)].mediaList); if ((yyval.mediaList)) @@ -2787,7 +2787,7 @@ yyreduce: case 108: /* Line 1455 of yacc.c */ -#line 657 "css\\CSSGrammar.y" +#line 657 "css/CSSGrammar.y" { (yyval.mediaList) = 0; ;} @@ -2796,7 +2796,7 @@ yyreduce: case 109: /* Line 1455 of yacc.c */ -#line 663 "css\\CSSGrammar.y" +#line 663 "css/CSSGrammar.y" { (yyval.rule) = static_cast<CSSParser*>(parser)->createMediaRule((yyvsp[(3) - (7)].mediaList), (yyvsp[(6) - (7)].ruleList)); ;} @@ -2805,7 +2805,7 @@ yyreduce: case 110: /* Line 1455 of yacc.c */ -#line 666 "css\\CSSGrammar.y" +#line 666 "css/CSSGrammar.y" { (yyval.rule) = static_cast<CSSParser*>(parser)->createMediaRule(0, (yyvsp[(5) - (6)].ruleList)); ;} @@ -2814,7 +2814,7 @@ yyreduce: case 111: /* Line 1455 of yacc.c */ -#line 672 "css\\CSSGrammar.y" +#line 672 "css/CSSGrammar.y" { (yyval.string) = (yyvsp[(1) - (2)].string); ;} @@ -2823,7 +2823,7 @@ yyreduce: case 112: /* Line 1455 of yacc.c */ -#line 678 "css\\CSSGrammar.y" +#line 678 "css/CSSGrammar.y" { (yyval.rule) = (yyvsp[(7) - (8)].keyframesRule); (yyvsp[(7) - (8)].keyframesRule)->setNameInternal((yyvsp[(3) - (8)].string)); @@ -2833,14 +2833,14 @@ yyreduce: case 115: /* Line 1455 of yacc.c */ -#line 690 "css\\CSSGrammar.y" +#line 690 "css/CSSGrammar.y" { (yyval.keyframesRule) = static_cast<CSSParser*>(parser)->createKeyframesRule(); ;} break; case 116: /* Line 1455 of yacc.c */ -#line 691 "css\\CSSGrammar.y" +#line 691 "css/CSSGrammar.y" { (yyval.keyframesRule) = (yyvsp[(1) - (3)].keyframesRule); if ((yyvsp[(2) - (3)].keyframeRule)) @@ -2851,7 +2851,7 @@ yyreduce: case 117: /* Line 1455 of yacc.c */ -#line 699 "css\\CSSGrammar.y" +#line 699 "css/CSSGrammar.y" { (yyval.keyframeRule) = static_cast<CSSParser*>(parser)->createKeyframeRule((yyvsp[(1) - (6)].valueList)); ;} @@ -2860,7 +2860,7 @@ yyreduce: case 118: /* Line 1455 of yacc.c */ -#line 705 "css\\CSSGrammar.y" +#line 705 "css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); (yyval.valueList) = p->createFloatingValueList(); @@ -2871,7 +2871,7 @@ yyreduce: case 119: /* Line 1455 of yacc.c */ -#line 710 "css\\CSSGrammar.y" +#line 710 "css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); (yyval.valueList) = (yyvsp[(1) - (5)].valueList); @@ -2883,14 +2883,14 @@ yyreduce: case 120: /* Line 1455 of yacc.c */ -#line 719 "css\\CSSGrammar.y" +#line 719 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).isInt = false; (yyval.value).fValue = (yyvsp[(1) - (1)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_NUMBER; ;} break; case 121: /* Line 1455 of yacc.c */ -#line 720 "css\\CSSGrammar.y" +#line 720 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).isInt = false; (yyval.value).unit = CSSPrimitiveValue::CSS_NUMBER; CSSParserString& str = (yyvsp[(1) - (1)].string); @@ -2906,7 +2906,7 @@ yyreduce: case 122: /* Line 1455 of yacc.c */ -#line 744 "css\\CSSGrammar.y" +#line 744 "css/CSSGrammar.y" { (yyval.rule) = 0; ;} @@ -2915,7 +2915,7 @@ yyreduce: case 123: /* Line 1455 of yacc.c */ -#line 747 "css\\CSSGrammar.y" +#line 747 "css/CSSGrammar.y" { (yyval.rule) = 0; ;} @@ -2924,7 +2924,7 @@ yyreduce: case 124: /* Line 1455 of yacc.c */ -#line 754 "css\\CSSGrammar.y" +#line 754 "css/CSSGrammar.y" { (yyval.rule) = static_cast<CSSParser*>(parser)->createFontFaceRule(); ;} @@ -2933,7 +2933,7 @@ yyreduce: case 125: /* Line 1455 of yacc.c */ -#line 757 "css\\CSSGrammar.y" +#line 757 "css/CSSGrammar.y" { (yyval.rule) = 0; ;} @@ -2942,7 +2942,7 @@ yyreduce: case 126: /* Line 1455 of yacc.c */ -#line 760 "css\\CSSGrammar.y" +#line 760 "css/CSSGrammar.y" { (yyval.rule) = 0; ;} @@ -2951,56 +2951,56 @@ yyreduce: case 127: /* Line 1455 of yacc.c */ -#line 766 "css\\CSSGrammar.y" +#line 766 "css/CSSGrammar.y" { (yyval.relation) = CSSSelector::DirectAdjacent; ;} break; case 128: /* Line 1455 of yacc.c */ -#line 767 "css\\CSSGrammar.y" +#line 767 "css/CSSGrammar.y" { (yyval.relation) = CSSSelector::IndirectAdjacent; ;} break; case 129: /* Line 1455 of yacc.c */ -#line 768 "css\\CSSGrammar.y" +#line 768 "css/CSSGrammar.y" { (yyval.relation) = CSSSelector::Child; ;} break; case 130: /* Line 1455 of yacc.c */ -#line 772 "css\\CSSGrammar.y" +#line 772 "css/CSSGrammar.y" { (yyval.integer) = (yyvsp[(1) - (1)].integer); ;} break; case 131: /* Line 1455 of yacc.c */ -#line 773 "css\\CSSGrammar.y" +#line 773 "css/CSSGrammar.y" { (yyval.integer) = 1; ;} break; case 132: /* Line 1455 of yacc.c */ -#line 777 "css\\CSSGrammar.y" +#line 777 "css/CSSGrammar.y" { (yyval.integer) = -1; ;} break; case 133: /* Line 1455 of yacc.c */ -#line 778 "css\\CSSGrammar.y" +#line 778 "css/CSSGrammar.y" { (yyval.integer) = 1; ;} break; case 134: /* Line 1455 of yacc.c */ -#line 782 "css\\CSSGrammar.y" +#line 782 "css/CSSGrammar.y" { (yyval.rule) = static_cast<CSSParser*>(parser)->createStyleRule((yyvsp[(1) - (5)].selectorList)); ;} @@ -3009,7 +3009,7 @@ yyreduce: case 135: /* Line 1455 of yacc.c */ -#line 788 "css\\CSSGrammar.y" +#line 788 "css/CSSGrammar.y" { if ((yyvsp[(1) - (1)].selector)) { CSSParser* p = static_cast<CSSParser*>(parser); @@ -3025,7 +3025,7 @@ yyreduce: case 136: /* Line 1455 of yacc.c */ -#line 798 "css\\CSSGrammar.y" +#line 798 "css/CSSGrammar.y" { if ((yyvsp[(1) - (4)].selectorList) && (yyvsp[(4) - (4)].selector)) { CSSParser* p = static_cast<CSSParser*>(parser); @@ -3040,7 +3040,7 @@ yyreduce: case 137: /* Line 1455 of yacc.c */ -#line 807 "css\\CSSGrammar.y" +#line 807 "css/CSSGrammar.y" { (yyval.selectorList) = 0; ;} @@ -3049,7 +3049,7 @@ yyreduce: case 138: /* Line 1455 of yacc.c */ -#line 813 "css\\CSSGrammar.y" +#line 813 "css/CSSGrammar.y" { (yyval.selector) = (yyvsp[(1) - (2)].selector); ;} @@ -3058,7 +3058,7 @@ yyreduce: case 139: /* Line 1455 of yacc.c */ -#line 819 "css\\CSSGrammar.y" +#line 819 "css/CSSGrammar.y" { (yyval.selector) = (yyvsp[(1) - (1)].selector); ;} @@ -3067,7 +3067,7 @@ yyreduce: case 140: /* Line 1455 of yacc.c */ -#line 823 "css\\CSSGrammar.y" +#line 823 "css/CSSGrammar.y" { (yyval.selector) = (yyvsp[(1) - (1)].selector); ;} @@ -3076,7 +3076,7 @@ yyreduce: case 141: /* Line 1455 of yacc.c */ -#line 827 "css\\CSSGrammar.y" +#line 827 "css/CSSGrammar.y" { (yyval.selector) = (yyvsp[(2) - (2)].selector); if (!(yyvsp[(1) - (2)].selector)) @@ -3097,7 +3097,7 @@ yyreduce: case 142: /* Line 1455 of yacc.c */ -#line 842 "css\\CSSGrammar.y" +#line 842 "css/CSSGrammar.y" { (yyval.selector) = (yyvsp[(3) - (3)].selector); if (!(yyvsp[(1) - (3)].selector)) @@ -3123,7 +3123,7 @@ yyreduce: case 143: /* Line 1455 of yacc.c */ -#line 862 "css\\CSSGrammar.y" +#line 862 "css/CSSGrammar.y" { (yyval.selector) = 0; ;} @@ -3132,28 +3132,28 @@ yyreduce: case 144: /* Line 1455 of yacc.c */ -#line 868 "css\\CSSGrammar.y" +#line 868 "css/CSSGrammar.y" { (yyval.string).characters = 0; (yyval.string).length = 0; ;} break; case 145: /* Line 1455 of yacc.c */ -#line 869 "css\\CSSGrammar.y" +#line 869 "css/CSSGrammar.y" { static UChar star = '*'; (yyval.string).characters = ☆ (yyval.string).length = 1; ;} break; case 146: /* Line 1455 of yacc.c */ -#line 870 "css\\CSSGrammar.y" +#line 870 "css/CSSGrammar.y" { (yyval.string) = (yyvsp[(1) - (2)].string); ;} break; case 147: /* Line 1455 of yacc.c */ -#line 874 "css\\CSSGrammar.y" +#line 874 "css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); (yyval.selector) = p->createFloatingSelector(); @@ -3164,7 +3164,7 @@ yyreduce: case 148: /* Line 1455 of yacc.c */ -#line 879 "css\\CSSGrammar.y" +#line 879 "css/CSSGrammar.y" { (yyval.selector) = (yyvsp[(2) - (2)].selector); if ((yyval.selector)) { @@ -3177,7 +3177,7 @@ yyreduce: case 149: /* Line 1455 of yacc.c */ -#line 886 "css\\CSSGrammar.y" +#line 886 "css/CSSGrammar.y" { (yyval.selector) = (yyvsp[(1) - (1)].selector); CSSParser* p = static_cast<CSSParser*>(parser); @@ -3189,7 +3189,7 @@ yyreduce: case 150: /* Line 1455 of yacc.c */ -#line 892 "css\\CSSGrammar.y" +#line 892 "css/CSSGrammar.y" { AtomicString namespacePrefix = (yyvsp[(1) - (2)].string); CSSParser* p = static_cast<CSSParser*>(parser); @@ -3205,7 +3205,7 @@ yyreduce: case 151: /* Line 1455 of yacc.c */ -#line 902 "css\\CSSGrammar.y" +#line 902 "css/CSSGrammar.y" { (yyval.selector) = (yyvsp[(3) - (3)].selector); if ((yyval.selector)) { @@ -3223,7 +3223,7 @@ yyreduce: case 152: /* Line 1455 of yacc.c */ -#line 914 "css\\CSSGrammar.y" +#line 914 "css/CSSGrammar.y" { (yyval.selector) = (yyvsp[(2) - (2)].selector); if ((yyval.selector)) { @@ -3239,7 +3239,7 @@ yyreduce: case 153: /* Line 1455 of yacc.c */ -#line 927 "css\\CSSGrammar.y" +#line 927 "css/CSSGrammar.y" { CSSParserString& str = (yyvsp[(1) - (1)].string); CSSParser* p = static_cast<CSSParser*>(parser); @@ -3253,7 +3253,7 @@ yyreduce: case 154: /* Line 1455 of yacc.c */ -#line 935 "css\\CSSGrammar.y" +#line 935 "css/CSSGrammar.y" { static UChar star = '*'; (yyval.string).characters = ☆ @@ -3264,7 +3264,7 @@ yyreduce: case 155: /* Line 1455 of yacc.c */ -#line 943 "css\\CSSGrammar.y" +#line 943 "css/CSSGrammar.y" { (yyval.selector) = (yyvsp[(1) - (1)].selector); ;} @@ -3273,7 +3273,7 @@ yyreduce: case 156: /* Line 1455 of yacc.c */ -#line 946 "css\\CSSGrammar.y" +#line 946 "css/CSSGrammar.y" { if (!(yyvsp[(2) - (2)].selector)) (yyval.selector) = 0; @@ -3292,7 +3292,7 @@ yyreduce: case 157: /* Line 1455 of yacc.c */ -#line 959 "css\\CSSGrammar.y" +#line 959 "css/CSSGrammar.y" { (yyval.selector) = 0; ;} @@ -3301,7 +3301,7 @@ yyreduce: case 158: /* Line 1455 of yacc.c */ -#line 965 "css\\CSSGrammar.y" +#line 965 "css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); (yyval.selector) = p->createFloatingSelector(); @@ -3315,7 +3315,7 @@ yyreduce: case 159: /* Line 1455 of yacc.c */ -#line 973 "css\\CSSGrammar.y" +#line 973 "css/CSSGrammar.y" { if ((yyvsp[(1) - (1)].string).characters[0] >= '0' && (yyvsp[(1) - (1)].string).characters[0] <= '9') { (yyval.selector) = 0; @@ -3333,7 +3333,7 @@ yyreduce: case 163: /* Line 1455 of yacc.c */ -#line 991 "css\\CSSGrammar.y" +#line 991 "css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); (yyval.selector) = p->createFloatingSelector(); @@ -3347,7 +3347,7 @@ yyreduce: case 164: /* Line 1455 of yacc.c */ -#line 1002 "css\\CSSGrammar.y" +#line 1002 "css/CSSGrammar.y" { CSSParserString& str = (yyvsp[(1) - (2)].string); CSSParser* p = static_cast<CSSParser*>(parser); @@ -3361,7 +3361,7 @@ yyreduce: case 165: /* Line 1455 of yacc.c */ -#line 1013 "css\\CSSGrammar.y" +#line 1013 "css/CSSGrammar.y" { (yyval.selector) = static_cast<CSSParser*>(parser)->createFloatingSelector(); (yyval.selector)->setAttribute(QualifiedName(nullAtom, (yyvsp[(3) - (4)].string), nullAtom)); @@ -3372,7 +3372,7 @@ yyreduce: case 166: /* Line 1455 of yacc.c */ -#line 1018 "css\\CSSGrammar.y" +#line 1018 "css/CSSGrammar.y" { (yyval.selector) = static_cast<CSSParser*>(parser)->createFloatingSelector(); (yyval.selector)->setAttribute(QualifiedName(nullAtom, (yyvsp[(3) - (8)].string), nullAtom)); @@ -3384,7 +3384,7 @@ yyreduce: case 167: /* Line 1455 of yacc.c */ -#line 1024 "css\\CSSGrammar.y" +#line 1024 "css/CSSGrammar.y" { AtomicString namespacePrefix = (yyvsp[(3) - (5)].string); CSSParser* p = static_cast<CSSParser*>(parser); @@ -3398,7 +3398,7 @@ yyreduce: case 168: /* Line 1455 of yacc.c */ -#line 1032 "css\\CSSGrammar.y" +#line 1032 "css/CSSGrammar.y" { AtomicString namespacePrefix = (yyvsp[(3) - (9)].string); CSSParser* p = static_cast<CSSParser*>(parser); @@ -3413,7 +3413,7 @@ yyreduce: case 169: /* Line 1455 of yacc.c */ -#line 1044 "css\\CSSGrammar.y" +#line 1044 "css/CSSGrammar.y" { (yyval.integer) = CSSSelector::Exact; ;} @@ -3422,7 +3422,7 @@ yyreduce: case 170: /* Line 1455 of yacc.c */ -#line 1047 "css\\CSSGrammar.y" +#line 1047 "css/CSSGrammar.y" { (yyval.integer) = CSSSelector::List; ;} @@ -3431,7 +3431,7 @@ yyreduce: case 171: /* Line 1455 of yacc.c */ -#line 1050 "css\\CSSGrammar.y" +#line 1050 "css/CSSGrammar.y" { (yyval.integer) = CSSSelector::Hyphen; ;} @@ -3440,7 +3440,7 @@ yyreduce: case 172: /* Line 1455 of yacc.c */ -#line 1053 "css\\CSSGrammar.y" +#line 1053 "css/CSSGrammar.y" { (yyval.integer) = CSSSelector::Begin; ;} @@ -3449,7 +3449,7 @@ yyreduce: case 173: /* Line 1455 of yacc.c */ -#line 1056 "css\\CSSGrammar.y" +#line 1056 "css/CSSGrammar.y" { (yyval.integer) = CSSSelector::End; ;} @@ -3458,7 +3458,7 @@ yyreduce: case 174: /* Line 1455 of yacc.c */ -#line 1059 "css\\CSSGrammar.y" +#line 1059 "css/CSSGrammar.y" { (yyval.integer) = CSSSelector::Contain; ;} @@ -3467,7 +3467,7 @@ yyreduce: case 177: /* Line 1455 of yacc.c */ -#line 1070 "css\\CSSGrammar.y" +#line 1070 "css/CSSGrammar.y" { (yyval.selector) = static_cast<CSSParser*>(parser)->createFloatingSelector(); (yyval.selector)->m_match = CSSSelector::PseudoClass; @@ -3503,7 +3503,7 @@ yyreduce: case 178: /* Line 1455 of yacc.c */ -#line 1100 "css\\CSSGrammar.y" +#line 1100 "css/CSSGrammar.y" { (yyval.selector) = static_cast<CSSParser*>(parser)->createFloatingSelector(); (yyval.selector)->m_match = CSSSelector::PseudoElement; @@ -3528,7 +3528,7 @@ yyreduce: case 179: /* Line 1455 of yacc.c */ -#line 1120 "css\\CSSGrammar.y" +#line 1120 "css/CSSGrammar.y" { CSSParser *p = static_cast<CSSParser*>(parser); (yyval.selector) = p->createFloatingSelector(); @@ -3551,7 +3551,7 @@ yyreduce: case 180: /* Line 1455 of yacc.c */ -#line 1138 "css\\CSSGrammar.y" +#line 1138 "css/CSSGrammar.y" { CSSParser *p = static_cast<CSSParser*>(parser); (yyval.selector) = p->createFloatingSelector(); @@ -3574,7 +3574,7 @@ yyreduce: case 181: /* Line 1455 of yacc.c */ -#line 1156 "css\\CSSGrammar.y" +#line 1156 "css/CSSGrammar.y" { CSSParser *p = static_cast<CSSParser*>(parser); (yyval.selector) = p->createFloatingSelector(); @@ -3598,7 +3598,7 @@ yyreduce: case 182: /* Line 1455 of yacc.c */ -#line 1175 "css\\CSSGrammar.y" +#line 1175 "css/CSSGrammar.y" { if (!(yyvsp[(4) - (6)].selector) || (yyvsp[(4) - (6)].selector)->simpleSelector() || (yyvsp[(4) - (6)].selector)->tagHistory() || (yyvsp[(4) - (6)].selector)->matchesPseudoElement()) (yyval.selector) = 0; @@ -3616,7 +3616,7 @@ yyreduce: case 183: /* Line 1455 of yacc.c */ -#line 1190 "css\\CSSGrammar.y" +#line 1190 "css/CSSGrammar.y" { (yyval.boolean) = (yyvsp[(1) - (1)].boolean); ;} @@ -3625,7 +3625,7 @@ yyreduce: case 184: /* Line 1455 of yacc.c */ -#line 1193 "css\\CSSGrammar.y" +#line 1193 "css/CSSGrammar.y" { (yyval.boolean) = (yyvsp[(1) - (2)].boolean); if ( (yyvsp[(2) - (2)].boolean) ) @@ -3636,7 +3636,7 @@ yyreduce: case 185: /* Line 1455 of yacc.c */ -#line 1198 "css\\CSSGrammar.y" +#line 1198 "css/CSSGrammar.y" { (yyval.boolean) = (yyvsp[(1) - (1)].boolean); ;} @@ -3645,7 +3645,7 @@ yyreduce: case 186: /* Line 1455 of yacc.c */ -#line 1201 "css\\CSSGrammar.y" +#line 1201 "css/CSSGrammar.y" { (yyval.boolean) = false; ;} @@ -3654,7 +3654,7 @@ yyreduce: case 187: /* Line 1455 of yacc.c */ -#line 1204 "css\\CSSGrammar.y" +#line 1204 "css/CSSGrammar.y" { (yyval.boolean) = false; ;} @@ -3663,7 +3663,7 @@ yyreduce: case 188: /* Line 1455 of yacc.c */ -#line 1207 "css\\CSSGrammar.y" +#line 1207 "css/CSSGrammar.y" { (yyval.boolean) = (yyvsp[(1) - (2)].boolean); ;} @@ -3672,7 +3672,7 @@ yyreduce: case 189: /* Line 1455 of yacc.c */ -#line 1210 "css\\CSSGrammar.y" +#line 1210 "css/CSSGrammar.y" { (yyval.boolean) = (yyvsp[(1) - (2)].boolean); ;} @@ -3681,7 +3681,7 @@ yyreduce: case 190: /* Line 1455 of yacc.c */ -#line 1216 "css\\CSSGrammar.y" +#line 1216 "css/CSSGrammar.y" { (yyval.boolean) = (yyvsp[(1) - (3)].boolean); ;} @@ -3690,7 +3690,7 @@ yyreduce: case 191: /* Line 1455 of yacc.c */ -#line 1219 "css\\CSSGrammar.y" +#line 1219 "css/CSSGrammar.y" { (yyval.boolean) = false; ;} @@ -3699,7 +3699,7 @@ yyreduce: case 192: /* Line 1455 of yacc.c */ -#line 1222 "css\\CSSGrammar.y" +#line 1222 "css/CSSGrammar.y" { (yyval.boolean) = false; ;} @@ -3708,7 +3708,7 @@ yyreduce: case 193: /* Line 1455 of yacc.c */ -#line 1225 "css\\CSSGrammar.y" +#line 1225 "css/CSSGrammar.y" { (yyval.boolean) = false; ;} @@ -3717,7 +3717,7 @@ yyreduce: case 194: /* Line 1455 of yacc.c */ -#line 1228 "css\\CSSGrammar.y" +#line 1228 "css/CSSGrammar.y" { (yyval.boolean) = false; ;} @@ -3726,7 +3726,7 @@ yyreduce: case 195: /* Line 1455 of yacc.c */ -#line 1231 "css\\CSSGrammar.y" +#line 1231 "css/CSSGrammar.y" { (yyval.boolean) = (yyvsp[(1) - (4)].boolean); if ((yyvsp[(2) - (4)].boolean)) @@ -3737,7 +3737,7 @@ yyreduce: case 196: /* Line 1455 of yacc.c */ -#line 1236 "css\\CSSGrammar.y" +#line 1236 "css/CSSGrammar.y" { (yyval.boolean) = (yyvsp[(1) - (4)].boolean); ;} @@ -3746,7 +3746,7 @@ yyreduce: case 197: /* Line 1455 of yacc.c */ -#line 1239 "css\\CSSGrammar.y" +#line 1239 "css/CSSGrammar.y" { (yyval.boolean) = (yyvsp[(1) - (6)].boolean); ;} @@ -3755,7 +3755,7 @@ yyreduce: case 198: /* Line 1455 of yacc.c */ -#line 1245 "css\\CSSGrammar.y" +#line 1245 "css/CSSGrammar.y" { (yyval.boolean) = false; CSSParser* p = static_cast<CSSParser*>(parser); @@ -3774,7 +3774,7 @@ yyreduce: case 199: /* Line 1455 of yacc.c */ -#line 1259 "css\\CSSGrammar.y" +#line 1259 "css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); p->m_valueList = new CSSParserValueList; @@ -3791,7 +3791,7 @@ yyreduce: case 200: /* Line 1455 of yacc.c */ -#line 1271 "css\\CSSGrammar.y" +#line 1271 "css/CSSGrammar.y" { (yyval.boolean) = false; ;} @@ -3800,7 +3800,7 @@ yyreduce: case 201: /* Line 1455 of yacc.c */ -#line 1275 "css\\CSSGrammar.y" +#line 1275 "css/CSSGrammar.y" { /* The default movable type template has letter-spacing: .none; Handle this by looking for error tokens at the start of an expr, recover the expr and then treat as an error, cleaning @@ -3812,7 +3812,7 @@ yyreduce: case 202: /* Line 1455 of yacc.c */ -#line 1282 "css\\CSSGrammar.y" +#line 1282 "css/CSSGrammar.y" { /* When we encounter something like p {color: red !important fail;} we should drop the declaration */ (yyval.boolean) = false; @@ -3822,7 +3822,7 @@ yyreduce: case 203: /* Line 1455 of yacc.c */ -#line 1287 "css\\CSSGrammar.y" +#line 1287 "css/CSSGrammar.y" { /* Handle this case: div { text-align: center; !important } Just reduce away the stray !important. */ (yyval.boolean) = false; @@ -3832,7 +3832,7 @@ yyreduce: case 204: /* Line 1455 of yacc.c */ -#line 1292 "css\\CSSGrammar.y" +#line 1292 "css/CSSGrammar.y" { /* div { font-family: } Just reduce away this property with no value. */ (yyval.boolean) = false; @@ -3842,7 +3842,7 @@ yyreduce: case 205: /* Line 1455 of yacc.c */ -#line 1297 "css\\CSSGrammar.y" +#line 1297 "css/CSSGrammar.y" { /* if we come across rules with invalid values like this case: p { weight: *; }, just discard the rule */ (yyval.boolean) = false; @@ -3852,7 +3852,7 @@ yyreduce: case 206: /* Line 1455 of yacc.c */ -#line 1302 "css\\CSSGrammar.y" +#line 1302 "css/CSSGrammar.y" { /* if we come across: div { color{;color:maroon} }, ignore everything within curly brackets */ (yyval.boolean) = false; @@ -3862,7 +3862,7 @@ yyreduce: case 207: /* Line 1455 of yacc.c */ -#line 1309 "css\\CSSGrammar.y" +#line 1309 "css/CSSGrammar.y" { (yyval.integer) = cssPropertyID((yyvsp[(1) - (2)].string)); ;} @@ -3871,21 +3871,21 @@ yyreduce: case 208: /* Line 1455 of yacc.c */ -#line 1315 "css\\CSSGrammar.y" +#line 1315 "css/CSSGrammar.y" { (yyval.boolean) = true; ;} break; case 209: /* Line 1455 of yacc.c */ -#line 1316 "css\\CSSGrammar.y" +#line 1316 "css/CSSGrammar.y" { (yyval.boolean) = false; ;} break; case 210: /* Line 1455 of yacc.c */ -#line 1320 "css\\CSSGrammar.y" +#line 1320 "css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); (yyval.valueList) = p->createFloatingValueList(); @@ -3896,7 +3896,7 @@ yyreduce: case 211: /* Line 1455 of yacc.c */ -#line 1325 "css\\CSSGrammar.y" +#line 1325 "css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); (yyval.valueList) = (yyvsp[(1) - (3)].valueList); @@ -3916,7 +3916,7 @@ yyreduce: case 212: /* Line 1455 of yacc.c */ -#line 1339 "css\\CSSGrammar.y" +#line 1339 "css/CSSGrammar.y" { (yyval.valueList) = 0; ;} @@ -3925,7 +3925,7 @@ yyreduce: case 213: /* Line 1455 of yacc.c */ -#line 1342 "css\\CSSGrammar.y" +#line 1342 "css/CSSGrammar.y" { (yyval.valueList) = 0; ;} @@ -3934,7 +3934,7 @@ yyreduce: case 214: /* Line 1455 of yacc.c */ -#line 1345 "css\\CSSGrammar.y" +#line 1345 "css/CSSGrammar.y" { (yyval.valueList) = 0; ;} @@ -3943,7 +3943,7 @@ yyreduce: case 215: /* Line 1455 of yacc.c */ -#line 1351 "css\\CSSGrammar.y" +#line 1351 "css/CSSGrammar.y" { (yyval.character) = '/'; ;} @@ -3952,7 +3952,7 @@ yyreduce: case 216: /* Line 1455 of yacc.c */ -#line 1354 "css\\CSSGrammar.y" +#line 1354 "css/CSSGrammar.y" { (yyval.character) = ','; ;} @@ -3961,7 +3961,7 @@ yyreduce: case 217: /* Line 1455 of yacc.c */ -#line 1357 "css\\CSSGrammar.y" +#line 1357 "css/CSSGrammar.y" { (yyval.character) = 0; ;} @@ -3970,28 +3970,28 @@ yyreduce: case 218: /* Line 1455 of yacc.c */ -#line 1363 "css\\CSSGrammar.y" +#line 1363 "css/CSSGrammar.y" { (yyval.value) = (yyvsp[(1) - (1)].value); ;} break; case 219: /* Line 1455 of yacc.c */ -#line 1364 "css\\CSSGrammar.y" +#line 1364 "css/CSSGrammar.y" { (yyval.value) = (yyvsp[(2) - (2)].value); (yyval.value).fValue *= (yyvsp[(1) - (2)].integer); ;} break; case 220: /* Line 1455 of yacc.c */ -#line 1365 "css\\CSSGrammar.y" +#line 1365 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).string = (yyvsp[(1) - (2)].string); (yyval.value).unit = CSSPrimitiveValue::CSS_STRING; ;} break; case 221: /* Line 1455 of yacc.c */ -#line 1366 "css\\CSSGrammar.y" +#line 1366 "css/CSSGrammar.y" { (yyval.value).id = cssValueKeywordID((yyvsp[(1) - (2)].string)); (yyval.value).unit = CSSPrimitiveValue::CSS_IDENT; @@ -4002,49 +4002,49 @@ yyreduce: case 222: /* Line 1455 of yacc.c */ -#line 1372 "css\\CSSGrammar.y" +#line 1372 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).string = (yyvsp[(1) - (2)].string); (yyval.value).unit = CSSPrimitiveValue::CSS_DIMENSION; ;} break; case 223: /* Line 1455 of yacc.c */ -#line 1373 "css\\CSSGrammar.y" +#line 1373 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).string = (yyvsp[(2) - (3)].string); (yyval.value).unit = CSSPrimitiveValue::CSS_DIMENSION; ;} break; case 224: /* Line 1455 of yacc.c */ -#line 1374 "css\\CSSGrammar.y" +#line 1374 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).string = (yyvsp[(1) - (2)].string); (yyval.value).unit = CSSPrimitiveValue::CSS_URI; ;} break; case 225: /* Line 1455 of yacc.c */ -#line 1375 "css\\CSSGrammar.y" +#line 1375 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).string = (yyvsp[(1) - (2)].string); (yyval.value).unit = CSSPrimitiveValue::CSS_UNICODE_RANGE; ;} break; case 226: /* Line 1455 of yacc.c */ -#line 1376 "css\\CSSGrammar.y" +#line 1376 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).string = (yyvsp[(1) - (1)].string); (yyval.value).unit = CSSPrimitiveValue::CSS_PARSER_HEXCOLOR; ;} break; case 227: /* Line 1455 of yacc.c */ -#line 1377 "css\\CSSGrammar.y" +#line 1377 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).string = CSSParserString(); (yyval.value).unit = CSSPrimitiveValue::CSS_PARSER_HEXCOLOR; ;} break; case 228: /* Line 1455 of yacc.c */ -#line 1379 "css\\CSSGrammar.y" +#line 1379 "css/CSSGrammar.y" { (yyval.value) = (yyvsp[(1) - (1)].value); ;} @@ -4053,7 +4053,7 @@ yyreduce: case 229: /* Line 1455 of yacc.c */ -#line 1382 "css\\CSSGrammar.y" +#line 1382 "css/CSSGrammar.y" { (yyval.value) = (yyvsp[(1) - (2)].value); ;} @@ -4062,7 +4062,7 @@ yyreduce: case 230: /* Line 1455 of yacc.c */ -#line 1385 "css\\CSSGrammar.y" +#line 1385 "css/CSSGrammar.y" { /* Handle width: %; */ (yyval.value).id = 0; (yyval.value).unit = 0; ;} @@ -4071,147 +4071,147 @@ yyreduce: case 231: /* Line 1455 of yacc.c */ -#line 1391 "css\\CSSGrammar.y" +#line 1391 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).isInt = true; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_NUMBER; ;} break; case 232: /* Line 1455 of yacc.c */ -#line 1392 "css\\CSSGrammar.y" +#line 1392 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).isInt = false; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_NUMBER; ;} break; case 233: /* Line 1455 of yacc.c */ -#line 1393 "css\\CSSGrammar.y" +#line 1393 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_PERCENTAGE; ;} break; case 234: /* Line 1455 of yacc.c */ -#line 1394 "css\\CSSGrammar.y" +#line 1394 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_PX; ;} break; case 235: /* Line 1455 of yacc.c */ -#line 1395 "css\\CSSGrammar.y" +#line 1395 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_CM; ;} break; case 236: /* Line 1455 of yacc.c */ -#line 1396 "css\\CSSGrammar.y" +#line 1396 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_MM; ;} break; case 237: /* Line 1455 of yacc.c */ -#line 1397 "css\\CSSGrammar.y" +#line 1397 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_IN; ;} break; case 238: /* Line 1455 of yacc.c */ -#line 1398 "css\\CSSGrammar.y" +#line 1398 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_PT; ;} break; case 239: /* Line 1455 of yacc.c */ -#line 1399 "css\\CSSGrammar.y" +#line 1399 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_PC; ;} break; case 240: /* Line 1455 of yacc.c */ -#line 1400 "css\\CSSGrammar.y" +#line 1400 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_DEG; ;} break; case 241: /* Line 1455 of yacc.c */ -#line 1401 "css\\CSSGrammar.y" +#line 1401 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_RAD; ;} break; case 242: /* Line 1455 of yacc.c */ -#line 1402 "css\\CSSGrammar.y" +#line 1402 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_GRAD; ;} break; case 243: /* Line 1455 of yacc.c */ -#line 1403 "css\\CSSGrammar.y" +#line 1403 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_TURN; ;} break; case 244: /* Line 1455 of yacc.c */ -#line 1404 "css\\CSSGrammar.y" +#line 1404 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_MS; ;} break; case 245: /* Line 1455 of yacc.c */ -#line 1405 "css\\CSSGrammar.y" +#line 1405 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_S; ;} break; case 246: /* Line 1455 of yacc.c */ -#line 1406 "css\\CSSGrammar.y" +#line 1406 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_HZ; ;} break; case 247: /* Line 1455 of yacc.c */ -#line 1407 "css\\CSSGrammar.y" +#line 1407 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_KHZ; ;} break; case 248: /* Line 1455 of yacc.c */ -#line 1408 "css\\CSSGrammar.y" +#line 1408 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_EMS; ;} break; case 249: /* Line 1455 of yacc.c */ -#line 1409 "css\\CSSGrammar.y" +#line 1409 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSParserValue::Q_EMS; ;} break; case 250: /* Line 1455 of yacc.c */ -#line 1410 "css\\CSSGrammar.y" +#line 1410 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); (yyval.value).unit = CSSPrimitiveValue::CSS_EXS; ;} break; case 251: /* Line 1455 of yacc.c */ -#line 1411 "css\\CSSGrammar.y" +#line 1411 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).fValue = (yyvsp[(1) - (2)].number); @@ -4225,7 +4225,7 @@ yyreduce: case 252: /* Line 1455 of yacc.c */ -#line 1422 "css\\CSSGrammar.y" +#line 1422 "css/CSSGrammar.y" { (yyval.value).id = 0; (yyval.value).string = (yyvsp[(1) - (1)].string); @@ -4236,7 +4236,7 @@ yyreduce: case 253: /* Line 1455 of yacc.c */ -#line 1430 "css\\CSSGrammar.y" +#line 1430 "css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); CSSParserFunction* f = p->createFloatingFunction(); @@ -4251,7 +4251,7 @@ yyreduce: case 254: /* Line 1455 of yacc.c */ -#line 1439 "css\\CSSGrammar.y" +#line 1439 "css/CSSGrammar.y" { CSSParser* p = static_cast<CSSParser*>(parser); CSSParserFunction* f = p->createFloatingFunction(); @@ -4266,21 +4266,21 @@ yyreduce: case 255: /* Line 1455 of yacc.c */ -#line 1455 "css\\CSSGrammar.y" +#line 1455 "css/CSSGrammar.y" { (yyval.string) = (yyvsp[(1) - (2)].string); ;} break; case 256: /* Line 1455 of yacc.c */ -#line 1456 "css\\CSSGrammar.y" +#line 1456 "css/CSSGrammar.y" { (yyval.string) = (yyvsp[(1) - (2)].string); ;} break; case 257: /* Line 1455 of yacc.c */ -#line 1463 "css\\CSSGrammar.y" +#line 1463 "css/CSSGrammar.y" { (yyval.rule) = 0; ;} @@ -4289,7 +4289,7 @@ yyreduce: case 258: /* Line 1455 of yacc.c */ -#line 1466 "css\\CSSGrammar.y" +#line 1466 "css/CSSGrammar.y" { (yyval.rule) = 0; ;} @@ -4298,7 +4298,7 @@ yyreduce: case 259: /* Line 1455 of yacc.c */ -#line 1472 "css\\CSSGrammar.y" +#line 1472 "css/CSSGrammar.y" { (yyval.rule) = 0; ;} @@ -4307,7 +4307,7 @@ yyreduce: case 260: /* Line 1455 of yacc.c */ -#line 1475 "css\\CSSGrammar.y" +#line 1475 "css/CSSGrammar.y" { (yyval.rule) = 0; ;} @@ -4316,7 +4316,7 @@ yyreduce: case 261: /* Line 1455 of yacc.c */ -#line 1481 "css\\CSSGrammar.y" +#line 1481 "css/CSSGrammar.y" { (yyval.rule) = 0; ;} @@ -4325,7 +4325,7 @@ yyreduce: case 262: /* Line 1455 of yacc.c */ -#line 1499 "css\\CSSGrammar.y" +#line 1499 "css/CSSGrammar.y" { static_cast<CSSParser*>(parser)->invalidBlockHit(); ;} @@ -4334,7 +4334,7 @@ yyreduce: case 263: /* Line 1455 of yacc.c */ -#line 1502 "css\\CSSGrammar.y" +#line 1502 "css/CSSGrammar.y" { static_cast<CSSParser*>(parser)->invalidBlockHit(); ;} @@ -4343,7 +4343,7 @@ yyreduce: /* Line 1455 of yacc.c */ -#line 4347 "C:/dev/webkit-2.0/WebCore/generated/CSSGrammar.tab.c" +#line 4347 "/WebCore/generated/CSSGrammar.tab.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -4555,6 +4555,6 @@ yyreturn: /* Line 1675 of yacc.c */ -#line 1512 "css\\CSSGrammar.y" +#line 1512 "css/CSSGrammar.y" diff --git a/src/3rdparty/webkit/WebCore/generated/CSSGrammar.h b/src/3rdparty/webkit/WebCore/generated/CSSGrammar.h index 31d6cce..8e0f4bb 100644 --- a/src/3rdparty/webkit/WebCore/generated/CSSGrammar.h +++ b/src/3rdparty/webkit/WebCore/generated/CSSGrammar.h @@ -115,7 +115,7 @@ typedef union YYSTYPE { /* Line 1676 of yacc.c */ -#line 62 "css\\CSSGrammar.y" +#line 62 "css/CSSGrammar.y" bool boolean; char character; @@ -142,7 +142,7 @@ typedef union YYSTYPE /* Line 1676 of yacc.c */ -#line 144 "C:/dev/webkit-2.0/WebCore/generated/CSSGrammar.tab.h" +#line 144 "/WebCore/generated/CSSGrammar.tab.h" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ diff --git a/src/3rdparty/webkit/WebCore/generated/CSSPropertyNames.cpp b/src/3rdparty/webkit/WebCore/generated/CSSPropertyNames.cpp index e6ed010..87fb55b 100644 --- a/src/3rdparty/webkit/WebCore/generated/CSSPropertyNames.cpp +++ b/src/3rdparty/webkit/WebCore/generated/CSSPropertyNames.cpp @@ -1,4 +1,4 @@ -/* ANSI-C code produced by gperf version 3.0.1 */ +/* ANSI-C code produced by gperf version 3.0.3 */ /* Command-line: gperf -a -L ANSI-C -E -C -c -o -t --key-positions='*' -NfindProp -Hhash_prop -Wwordlist_prop -D -s 2 CSSPropertyNames.gperf */ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ @@ -217,6 +217,9 @@ hash_prop (register const char *str, register unsigned int len) #ifdef __GNUC__ __inline +#ifdef __GNUC_STDC_INLINE__ +__attribute__ ((__gnu_inline__)) +#endif #endif const struct props * findProp (register const char *str, register unsigned int len) diff --git a/src/3rdparty/webkit/WebCore/generated/CSSValueKeywords.c b/src/3rdparty/webkit/WebCore/generated/CSSValueKeywords.c index 89b1c4a..6a2581e 100644 --- a/src/3rdparty/webkit/WebCore/generated/CSSValueKeywords.c +++ b/src/3rdparty/webkit/WebCore/generated/CSSValueKeywords.c @@ -1,4 +1,4 @@ -/* ANSI-C code produced by gperf version 3.0.1 */ +/* ANSI-C code produced by gperf version 3.0.3 */ /* Command-line: gperf -L ANSI-C -E -C -n -o -t --key-positions='*' -NfindValue -Hhash_val -Wwordlist_value -D CSSValueKeywords.gperf */ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ @@ -194,6 +194,9 @@ hash_val (register const char *str, register unsigned int len) #ifdef __GNUC__ __inline +#ifdef __GNUC_STDC_INLINE__ +__attribute__ ((__gnu_inline__)) +#endif #endif const struct css_value * findValue (register const char *str, register unsigned int len) diff --git a/src/3rdparty/webkit/WebCore/generated/ColorData.c b/src/3rdparty/webkit/WebCore/generated/ColorData.c index 4fb1bea..5d64dda 100644 --- a/src/3rdparty/webkit/WebCore/generated/ColorData.c +++ b/src/3rdparty/webkit/WebCore/generated/ColorData.c @@ -1,4 +1,4 @@ -/* ANSI-C code produced by gperf version 3.0.1 */ +/* ANSI-C code produced by gperf version 3.0.3 */ /* Command-line: gperf -CDEot -L ANSI-C --includes --key-positions='*' -N findColor -D -s 2 */ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ @@ -141,6 +141,9 @@ hash (register const char *str, register unsigned int len) #ifdef __GNUC__ __inline +#ifdef __GNUC_STDC_INLINE__ +__attribute__ ((__gnu_inline__)) +#endif #endif const struct NamedColor * findColor (register const char *str, register unsigned int len) diff --git a/src/3rdparty/webkit/WebCore/generated/DocTypeStrings.cpp b/src/3rdparty/webkit/WebCore/generated/DocTypeStrings.cpp index 2aab9b9..d69b1b6 100644 --- a/src/3rdparty/webkit/WebCore/generated/DocTypeStrings.cpp +++ b/src/3rdparty/webkit/WebCore/generated/DocTypeStrings.cpp @@ -1,4 +1,4 @@ -/* ANSI-C code produced by gperf version 3.0.1 */ +/* ANSI-C code produced by gperf version 3.0.3 */ /* Command-line: gperf -CEot -L ANSI-C --includes --key-positions='*' -N findDoctypeEntry -F ,PubIDInfo::eAlmostStandards,PubIDInfo::eAlmostStandards */ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ @@ -331,6 +331,9 @@ hash (register const char *str, register unsigned int len) #ifdef __GNUC__ __inline +#ifdef __GNUC_STDC_INLINE__ +__attribute__ ((__gnu_inline__)) +#endif #endif const struct PubIDInfo * findDoctypeEntry (register const char *str, register unsigned int len) diff --git a/src/3rdparty/webkit/WebCore/generated/HTMLEntityNames.c b/src/3rdparty/webkit/WebCore/generated/HTMLEntityNames.c index 8bd9d97..761f29d 100644 --- a/src/3rdparty/webkit/WebCore/generated/HTMLEntityNames.c +++ b/src/3rdparty/webkit/WebCore/generated/HTMLEntityNames.c @@ -1,4 +1,4 @@ -/* ANSI-C code produced by gperf version 3.0.1 */ +/* ANSI-C code produced by gperf version 3.0.3 */ /* Command-line: gperf -a -L ANSI-C -C -G -c -o -t --includes --key-positions='*' -N findEntity -D -s 2 */ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ @@ -521,6 +521,9 @@ static const short lookup[] = #ifdef __GNUC__ __inline +#ifdef __GNUC_STDC_INLINE__ +__attribute__ ((__gnu_inline__)) +#endif #endif const struct Entity * findEntity (register const char *str, register unsigned int len) diff --git a/src/3rdparty/webkit/WebCore/generated/XPathGrammar.cpp b/src/3rdparty/webkit/WebCore/generated/XPathGrammar.cpp index 7a54748..0859634 100644 --- a/src/3rdparty/webkit/WebCore/generated/XPathGrammar.cpp +++ b/src/3rdparty/webkit/WebCore/generated/XPathGrammar.cpp @@ -76,7 +76,7 @@ /* Copy the first part of user declarations. */ /* Line 189 of yacc.c */ -#line 28 "xml\\XPathGrammar.y" +#line 28 "xml/XPathGrammar.y" #include "config.h" @@ -107,7 +107,7 @@ using namespace XPath; /* Line 189 of yacc.c */ -#line 111 "C:/dev/webkit-2.0/WebCore/generated/XPathGrammar.tab.c" +#line 111 "/WebCore/generated/XPathGrammar.tab.c" /* Enabling traces. */ #ifndef YYDEBUG @@ -162,7 +162,7 @@ typedef union YYSTYPE { /* Line 214 of yacc.c */ -#line 60 "xml\\XPathGrammar.y" +#line 60 "xml/XPathGrammar.y" Step::Axis axis; Step::NodeTest* nodeTest; @@ -178,7 +178,7 @@ typedef union YYSTYPE /* Line 214 of yacc.c */ -#line 182 "C:/dev/webkit-2.0/WebCore/generated/XPathGrammar.tab.c" +#line 182 "/WebCore/generated/XPathGrammar.tab.c" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ @@ -189,7 +189,7 @@ typedef union YYSTYPE /* Copy the second part of user declarations. */ /* Line 264 of yacc.c */ -#line 73 "xml\\XPathGrammar.y" +#line 73 "xml/XPathGrammar.y" static int xpathyylex(YYSTYPE* yylval) { return Parser::current()->lex(yylval); } @@ -198,7 +198,7 @@ static void xpathyyerror(const char*) { } /* Line 264 of yacc.c */ -#line 202 "C:/dev/webkit-2.0/WebCore/generated/XPathGrammar.tab.c" +#line 202 "/WebCore/generated/XPathGrammar.tab.c" #ifdef short # undef short @@ -1483,7 +1483,7 @@ yyreduce: case 2: /* Line 1455 of yacc.c */ -#line 122 "xml\\XPathGrammar.y" +#line 122 "xml/XPathGrammar.y" { PARSER->m_topExpr = (yyvsp[(1) - (1)].expr); ;} @@ -1492,7 +1492,7 @@ yyreduce: case 3: /* Line 1455 of yacc.c */ -#line 129 "xml\\XPathGrammar.y" +#line 129 "xml/XPathGrammar.y" { (yyval.locationPath)->setAbsolute(false); ;} @@ -1501,7 +1501,7 @@ yyreduce: case 4: /* Line 1455 of yacc.c */ -#line 134 "xml\\XPathGrammar.y" +#line 134 "xml/XPathGrammar.y" { (yyval.locationPath)->setAbsolute(true); ;} @@ -1510,7 +1510,7 @@ yyreduce: case 5: /* Line 1455 of yacc.c */ -#line 141 "xml\\XPathGrammar.y" +#line 141 "xml/XPathGrammar.y" { (yyval.locationPath) = new LocationPath; PARSER->registerParseNode((yyval.locationPath)); @@ -1520,7 +1520,7 @@ yyreduce: case 6: /* Line 1455 of yacc.c */ -#line 147 "xml\\XPathGrammar.y" +#line 147 "xml/XPathGrammar.y" { (yyval.locationPath) = (yyvsp[(2) - (2)].locationPath); ;} @@ -1529,7 +1529,7 @@ yyreduce: case 7: /* Line 1455 of yacc.c */ -#line 152 "xml\\XPathGrammar.y" +#line 152 "xml/XPathGrammar.y" { (yyval.locationPath) = (yyvsp[(2) - (2)].locationPath); (yyval.locationPath)->insertFirstStep((yyvsp[(1) - (2)].step)); @@ -1540,7 +1540,7 @@ yyreduce: case 8: /* Line 1455 of yacc.c */ -#line 161 "xml\\XPathGrammar.y" +#line 161 "xml/XPathGrammar.y" { (yyval.locationPath) = new LocationPath; (yyval.locationPath)->appendStep((yyvsp[(1) - (1)].step)); @@ -1552,7 +1552,7 @@ yyreduce: case 9: /* Line 1455 of yacc.c */ -#line 169 "xml\\XPathGrammar.y" +#line 169 "xml/XPathGrammar.y" { (yyval.locationPath)->appendStep((yyvsp[(3) - (3)].step)); PARSER->unregisterParseNode((yyvsp[(3) - (3)].step)); @@ -1562,7 +1562,7 @@ yyreduce: case 10: /* Line 1455 of yacc.c */ -#line 175 "xml\\XPathGrammar.y" +#line 175 "xml/XPathGrammar.y" { (yyval.locationPath)->appendStep((yyvsp[(2) - (3)].step)); (yyval.locationPath)->appendStep((yyvsp[(3) - (3)].step)); @@ -1574,7 +1574,7 @@ yyreduce: case 11: /* Line 1455 of yacc.c */ -#line 185 "xml\\XPathGrammar.y" +#line 185 "xml/XPathGrammar.y" { if ((yyvsp[(2) - (2)].predList)) { (yyval.step) = new Step(Step::ChildAxis, *(yyvsp[(1) - (2)].nodeTest), *(yyvsp[(2) - (2)].predList)); @@ -1589,7 +1589,7 @@ yyreduce: case 12: /* Line 1455 of yacc.c */ -#line 196 "xml\\XPathGrammar.y" +#line 196 "xml/XPathGrammar.y" { String localName; String namespaceURI; @@ -1611,7 +1611,7 @@ yyreduce: case 13: /* Line 1455 of yacc.c */ -#line 214 "xml\\XPathGrammar.y" +#line 214 "xml/XPathGrammar.y" { if ((yyvsp[(3) - (3)].predList)) { (yyval.step) = new Step((yyvsp[(1) - (3)].axis), *(yyvsp[(2) - (3)].nodeTest), *(yyvsp[(3) - (3)].predList)); @@ -1626,7 +1626,7 @@ yyreduce: case 14: /* Line 1455 of yacc.c */ -#line 225 "xml\\XPathGrammar.y" +#line 225 "xml/XPathGrammar.y" { String localName; String namespaceURI; @@ -1648,7 +1648,7 @@ yyreduce: case 17: /* Line 1455 of yacc.c */ -#line 249 "xml\\XPathGrammar.y" +#line 249 "xml/XPathGrammar.y" { (yyval.axis) = Step::AttributeAxis; ;} @@ -1657,7 +1657,7 @@ yyreduce: case 18: /* Line 1455 of yacc.c */ -#line 256 "xml\\XPathGrammar.y" +#line 256 "xml/XPathGrammar.y" { if (*(yyvsp[(1) - (3)].str) == "node") (yyval.nodeTest) = new Step::NodeTest(Step::NodeTest::AnyNodeTest); @@ -1674,7 +1674,7 @@ yyreduce: case 19: /* Line 1455 of yacc.c */ -#line 269 "xml\\XPathGrammar.y" +#line 269 "xml/XPathGrammar.y" { (yyval.nodeTest) = new Step::NodeTest(Step::NodeTest::ProcessingInstructionNodeTest); PARSER->deleteString((yyvsp[(1) - (3)].str)); @@ -1685,7 +1685,7 @@ yyreduce: case 20: /* Line 1455 of yacc.c */ -#line 276 "xml\\XPathGrammar.y" +#line 276 "xml/XPathGrammar.y" { (yyval.nodeTest) = new Step::NodeTest(Step::NodeTest::ProcessingInstructionNodeTest, (yyvsp[(3) - (4)].str)->stripWhiteSpace()); PARSER->deleteString((yyvsp[(1) - (4)].str)); @@ -1697,7 +1697,7 @@ yyreduce: case 21: /* Line 1455 of yacc.c */ -#line 286 "xml\\XPathGrammar.y" +#line 286 "xml/XPathGrammar.y" { (yyval.predList) = 0; ;} @@ -1706,7 +1706,7 @@ yyreduce: case 23: /* Line 1455 of yacc.c */ -#line 295 "xml\\XPathGrammar.y" +#line 295 "xml/XPathGrammar.y" { (yyval.predList) = new Vector<Predicate*>; (yyval.predList)->append(new Predicate((yyvsp[(1) - (1)].expr))); @@ -1718,7 +1718,7 @@ yyreduce: case 24: /* Line 1455 of yacc.c */ -#line 303 "xml\\XPathGrammar.y" +#line 303 "xml/XPathGrammar.y" { (yyval.predList)->append(new Predicate((yyvsp[(2) - (2)].expr))); PARSER->unregisterParseNode((yyvsp[(2) - (2)].expr)); @@ -1728,7 +1728,7 @@ yyreduce: case 25: /* Line 1455 of yacc.c */ -#line 311 "xml\\XPathGrammar.y" +#line 311 "xml/XPathGrammar.y" { (yyval.expr) = (yyvsp[(2) - (3)].expr); ;} @@ -1737,7 +1737,7 @@ yyreduce: case 26: /* Line 1455 of yacc.c */ -#line 318 "xml\\XPathGrammar.y" +#line 318 "xml/XPathGrammar.y" { (yyval.step) = new Step(Step::DescendantOrSelfAxis, Step::NodeTest(Step::NodeTest::AnyNodeTest)); PARSER->registerParseNode((yyval.step)); @@ -1747,7 +1747,7 @@ yyreduce: case 27: /* Line 1455 of yacc.c */ -#line 326 "xml\\XPathGrammar.y" +#line 326 "xml/XPathGrammar.y" { (yyval.step) = new Step(Step::SelfAxis, Step::NodeTest(Step::NodeTest::AnyNodeTest)); PARSER->registerParseNode((yyval.step)); @@ -1757,7 +1757,7 @@ yyreduce: case 28: /* Line 1455 of yacc.c */ -#line 332 "xml\\XPathGrammar.y" +#line 332 "xml/XPathGrammar.y" { (yyval.step) = new Step(Step::ParentAxis, Step::NodeTest(Step::NodeTest::AnyNodeTest)); PARSER->registerParseNode((yyval.step)); @@ -1767,7 +1767,7 @@ yyreduce: case 29: /* Line 1455 of yacc.c */ -#line 340 "xml\\XPathGrammar.y" +#line 340 "xml/XPathGrammar.y" { (yyval.expr) = new VariableReference(*(yyvsp[(1) - (1)].str)); PARSER->deleteString((yyvsp[(1) - (1)].str)); @@ -1778,7 +1778,7 @@ yyreduce: case 30: /* Line 1455 of yacc.c */ -#line 347 "xml\\XPathGrammar.y" +#line 347 "xml/XPathGrammar.y" { (yyval.expr) = (yyvsp[(2) - (3)].expr); ;} @@ -1787,7 +1787,7 @@ yyreduce: case 31: /* Line 1455 of yacc.c */ -#line 352 "xml\\XPathGrammar.y" +#line 352 "xml/XPathGrammar.y" { (yyval.expr) = new StringExpression(*(yyvsp[(1) - (1)].str)); PARSER->deleteString((yyvsp[(1) - (1)].str)); @@ -1798,7 +1798,7 @@ yyreduce: case 32: /* Line 1455 of yacc.c */ -#line 359 "xml\\XPathGrammar.y" +#line 359 "xml/XPathGrammar.y" { (yyval.expr) = new Number((yyvsp[(1) - (1)].str)->toDouble()); PARSER->deleteString((yyvsp[(1) - (1)].str)); @@ -1809,7 +1809,7 @@ yyreduce: case 34: /* Line 1455 of yacc.c */ -#line 370 "xml\\XPathGrammar.y" +#line 370 "xml/XPathGrammar.y" { (yyval.expr) = createFunction(*(yyvsp[(1) - (3)].str)); if (!(yyval.expr)) @@ -1822,7 +1822,7 @@ yyreduce: case 35: /* Line 1455 of yacc.c */ -#line 379 "xml\\XPathGrammar.y" +#line 379 "xml/XPathGrammar.y" { (yyval.expr) = createFunction(*(yyvsp[(1) - (4)].str), *(yyvsp[(3) - (4)].argList)); if (!(yyval.expr)) @@ -1836,7 +1836,7 @@ yyreduce: case 36: /* Line 1455 of yacc.c */ -#line 391 "xml\\XPathGrammar.y" +#line 391 "xml/XPathGrammar.y" { (yyval.argList) = new Vector<Expression*>; (yyval.argList)->append((yyvsp[(1) - (1)].expr)); @@ -1848,7 +1848,7 @@ yyreduce: case 37: /* Line 1455 of yacc.c */ -#line 399 "xml\\XPathGrammar.y" +#line 399 "xml/XPathGrammar.y" { (yyval.argList)->append((yyvsp[(3) - (3)].expr)); PARSER->unregisterParseNode((yyvsp[(3) - (3)].expr)); @@ -1858,7 +1858,7 @@ yyreduce: case 40: /* Line 1455 of yacc.c */ -#line 413 "xml\\XPathGrammar.y" +#line 413 "xml/XPathGrammar.y" { (yyval.expr) = new Union; (yyval.expr)->addSubExpression((yyvsp[(1) - (3)].expr)); @@ -1872,7 +1872,7 @@ yyreduce: case 41: /* Line 1455 of yacc.c */ -#line 425 "xml\\XPathGrammar.y" +#line 425 "xml/XPathGrammar.y" { (yyval.expr) = (yyvsp[(1) - (1)].locationPath); ;} @@ -1881,7 +1881,7 @@ yyreduce: case 43: /* Line 1455 of yacc.c */ -#line 432 "xml\\XPathGrammar.y" +#line 432 "xml/XPathGrammar.y" { (yyvsp[(3) - (3)].locationPath)->setAbsolute(true); (yyval.expr) = new Path(static_cast<Filter*>((yyvsp[(1) - (3)].expr)), (yyvsp[(3) - (3)].locationPath)); @@ -1894,7 +1894,7 @@ yyreduce: case 44: /* Line 1455 of yacc.c */ -#line 441 "xml\\XPathGrammar.y" +#line 441 "xml/XPathGrammar.y" { (yyvsp[(3) - (3)].locationPath)->insertFirstStep((yyvsp[(2) - (3)].step)); (yyvsp[(3) - (3)].locationPath)->setAbsolute(true); @@ -1909,7 +1909,7 @@ yyreduce: case 46: /* Line 1455 of yacc.c */ -#line 456 "xml\\XPathGrammar.y" +#line 456 "xml/XPathGrammar.y" { (yyval.expr) = new Filter((yyvsp[(1) - (2)].expr), *(yyvsp[(2) - (2)].predList)); PARSER->unregisterParseNode((yyvsp[(1) - (2)].expr)); @@ -1921,7 +1921,7 @@ yyreduce: case 48: /* Line 1455 of yacc.c */ -#line 468 "xml\\XPathGrammar.y" +#line 468 "xml/XPathGrammar.y" { (yyval.expr) = new LogicalOp(LogicalOp::OP_Or, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); PARSER->unregisterParseNode((yyvsp[(1) - (3)].expr)); @@ -1933,7 +1933,7 @@ yyreduce: case 50: /* Line 1455 of yacc.c */ -#line 480 "xml\\XPathGrammar.y" +#line 480 "xml/XPathGrammar.y" { (yyval.expr) = new LogicalOp(LogicalOp::OP_And, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); PARSER->unregisterParseNode((yyvsp[(1) - (3)].expr)); @@ -1945,7 +1945,7 @@ yyreduce: case 52: /* Line 1455 of yacc.c */ -#line 492 "xml\\XPathGrammar.y" +#line 492 "xml/XPathGrammar.y" { (yyval.expr) = new EqTestOp((yyvsp[(2) - (3)].eqop), (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); PARSER->unregisterParseNode((yyvsp[(1) - (3)].expr)); @@ -1957,7 +1957,7 @@ yyreduce: case 54: /* Line 1455 of yacc.c */ -#line 504 "xml\\XPathGrammar.y" +#line 504 "xml/XPathGrammar.y" { (yyval.expr) = new EqTestOp((yyvsp[(2) - (3)].eqop), (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); PARSER->unregisterParseNode((yyvsp[(1) - (3)].expr)); @@ -1969,7 +1969,7 @@ yyreduce: case 56: /* Line 1455 of yacc.c */ -#line 516 "xml\\XPathGrammar.y" +#line 516 "xml/XPathGrammar.y" { (yyval.expr) = new NumericOp(NumericOp::OP_Add, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); PARSER->unregisterParseNode((yyvsp[(1) - (3)].expr)); @@ -1981,7 +1981,7 @@ yyreduce: case 57: /* Line 1455 of yacc.c */ -#line 524 "xml\\XPathGrammar.y" +#line 524 "xml/XPathGrammar.y" { (yyval.expr) = new NumericOp(NumericOp::OP_Sub, (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); PARSER->unregisterParseNode((yyvsp[(1) - (3)].expr)); @@ -1993,7 +1993,7 @@ yyreduce: case 59: /* Line 1455 of yacc.c */ -#line 536 "xml\\XPathGrammar.y" +#line 536 "xml/XPathGrammar.y" { (yyval.expr) = new NumericOp((yyvsp[(2) - (3)].numop), (yyvsp[(1) - (3)].expr), (yyvsp[(3) - (3)].expr)); PARSER->unregisterParseNode((yyvsp[(1) - (3)].expr)); @@ -2005,7 +2005,7 @@ yyreduce: case 61: /* Line 1455 of yacc.c */ -#line 548 "xml\\XPathGrammar.y" +#line 548 "xml/XPathGrammar.y" { (yyval.expr) = new Negative; (yyval.expr)->addSubExpression((yyvsp[(2) - (2)].expr)); @@ -2017,7 +2017,7 @@ yyreduce: /* Line 1455 of yacc.c */ -#line 2021 "C:/dev/webkit-2.0/WebCore/generated/XPathGrammar.tab.c" +#line 2021 "/WebCore/generated/XPathGrammar.tab.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -2229,7 +2229,7 @@ yyreturn: /* Line 1675 of yacc.c */ -#line 556 "xml\\XPathGrammar.y" +#line 556 "xml/XPathGrammar.y" #endif diff --git a/src/3rdparty/webkit/WebCore/generated/XPathGrammar.h b/src/3rdparty/webkit/WebCore/generated/XPathGrammar.h index c3dbd2b..7264598 100644 --- a/src/3rdparty/webkit/WebCore/generated/XPathGrammar.h +++ b/src/3rdparty/webkit/WebCore/generated/XPathGrammar.h @@ -67,7 +67,7 @@ typedef union YYSTYPE { /* Line 1676 of yacc.c */ -#line 60 "xml\\XPathGrammar.y" +#line 60 "xml/XPathGrammar.y" Step::Axis axis; Step::NodeTest* nodeTest; @@ -83,7 +83,7 @@ typedef union YYSTYPE /* Line 1676 of yacc.c */ -#line 87 "C:/dev/webkit-2.0/WebCore/generated/XPathGrammar.tab.h" +#line 87 "/WebCore/generated/XPathGrammar.tab.h" } YYSTYPE; # define YYSTYPE_IS_TRIVIAL 1 # define yystype YYSTYPE /* obsolescent; will be withdrawn */ diff --git a/src/3rdparty/webkit/WebCore/generated/tokenizer.cpp b/src/3rdparty/webkit/WebCore/generated/tokenizer.cpp index d9a94f5..9a19e9e 100644 --- a/src/3rdparty/webkit/WebCore/generated/tokenizer.cpp +++ b/src/3rdparty/webkit/WebCore/generated/tokenizer.cpp @@ -65,46 +65,53 @@ typedef unsigned int flex_uint32_t; #endif /* ! C99 */ #define YY_NUM_RULES 69 #define YY_END_OF_BUFFER 70 -static yyconst short int yy_accept[482] = +/* This struct is not used in this scanner, + but its presence is necessary. */ +struct yy_trans_info + { + flex_int32_t yy_verify; + flex_int32_t yy_nxt; + }; +static yyconst flex_int16_t yy_accept[482] = { 0, 0, 0, 0, 0, 0, 0, 70, 68, 2, 2, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, - 57, 68, 68, 68, 68, 15, 15, 15, 68, 68, + 57, 68, 68, 15, 15, 15, 68, 68, 68, 68, 67, 15, 15, 15, 66, 15, 2, 0, 0, 0, - 14, 0, 0, 0, 0, 18, 18, 8, 0, 0, - 9, 0, 16, 0, 0, 15, 15, 15, 58, 0, - 56, 0, 0, 57, 0, 55, 55, 55, 55, 55, - 55, 55, 55, 55, 55, 16, 55, 55, 52, 55, - 0, 0, 0, 35, 35, 35, 35, 35, 35, 35, - 15, 15, 7, 63, 15, 0, 0, 15, 15, 0, - - 15, 6, 5, 15, 15, 15, 15, 0, 0, 0, - 14, 0, 0, 0, 18, 18, 18, 0, 18, 0, - 0, 14, 0, 0, 4, 15, 0, 0, 55, 55, - 55, 0, 55, 42, 55, 37, 40, 55, 53, 44, - 55, 43, 51, 55, 46, 45, 41, 55, 55, 55, - 0, 35, 35, 35, 35, 0, 35, 35, 35, 35, - 35, 35, 15, 15, 15, 16, 15, 15, 64, 64, - 15, 12, 10, 15, 13, 0, 0, 0, 17, 18, - 18, 18, 17, 0, 0, 15, 0, 1, 55, 55, - 55, 55, 47, 55, 54, 16, 48, 38, 55, 3, + 14, 0, 0, 0, 18, 18, 0, 8, 0, 0, + 9, 0, 16, 0, 15, 15, 15, 0, 58, 0, + 56, 0, 0, 57, 55, 55, 55, 55, 55, 55, + 55, 55, 55, 16, 55, 55, 52, 55, 0, 55, + 0, 0, 35, 35, 35, 35, 35, 35, 35, 0, + 63, 15, 0, 0, 15, 15, 0, 15, 15, 15, + + 7, 6, 5, 15, 15, 15, 15, 0, 0, 0, + 14, 0, 0, 0, 18, 18, 0, 18, 18, 0, + 0, 14, 0, 0, 4, 15, 0, 0, 55, 0, + 42, 55, 37, 40, 55, 53, 44, 55, 43, 51, + 55, 46, 45, 41, 55, 55, 55, 55, 55, 55, + 0, 35, 35, 0, 35, 35, 35, 35, 35, 35, + 35, 35, 15, 15, 16, 15, 15, 64, 64, 15, + 15, 12, 10, 15, 13, 0, 0, 0, 17, 17, + 18, 18, 18, 0, 0, 15, 0, 1, 55, 55, + 47, 55, 54, 16, 48, 38, 55, 55, 55, 3, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 15, 15, 59, 0, 64, 64, 64, 63, 11, 0, + 15, 59, 0, 64, 64, 64, 63, 15, 11, 0, 0, 0, 18, 18, 18, 0, 15, 0, 0, 55, - 55, 55, 49, 50, 35, 35, 35, 35, 35, 35, - 35, 35, 20, 15, 15, 65, 64, 64, 64, 64, - 0, 0, 0, 0, 61, 0, 0, 0, 0, 18, + 49, 50, 55, 55, 35, 35, 35, 35, 35, 35, + 35, 20, 35, 15, 65, 64, 64, 64, 64, 0, + 0, 0, 0, 61, 0, 15, 0, 0, 0, 18, 18, 18, 0, 15, 55, 55, 39, 35, 35, 35, - 35, 35, 35, 21, 35, 15, 15, 65, 64, 64, - 64, 64, 64, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 61, 0, 0, 0, 0, 17, 18, 18, - - 17, 0, 15, 55, 55, 35, 35, 35, 35, 35, - 19, 35, 15, 15, 65, 64, 64, 64, 64, 64, - 64, 0, 60, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 18, 18, 0, 15, - 55, 55, 35, 35, 35, 23, 35, 35, 15, 65, + 35, 35, 21, 35, 35, 15, 65, 64, 64, 64, + 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 61, 0, 0, 15, 0, 0, 17, 17, 18, + + 18, 0, 15, 55, 55, 35, 35, 35, 35, 19, + 35, 35, 15, 65, 64, 64, 64, 64, 64, 64, + 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 15, 0, 0, 18, 18, 0, 15, + 55, 55, 35, 35, 23, 35, 35, 35, 15, 65, 64, 64, 64, 64, 64, 64, 64, 0, 60, 0, 0, 0, 60, 0, 0, 0, 0, 18, 15, 55, 35, 35, 35, 35, 65, 0, 0, 0, 36, 15, @@ -113,7 +120,7 @@ static yyconst short int yy_accept[482] = 0, 0, 63, 35, 35, 35, 35, 35, 35, 35, 35, 0, 0, 0, 0, 0, 0, 35, 35, 35, - 35, 25, 35, 35, 35, 0, 0, 0, 62, 0, + 35, 25, 35, 35, 35, 0, 62, 0, 0, 0, 0, 26, 35, 35, 35, 35, 27, 35, 0, 0, 0, 0, 31, 35, 35, 35, 35, 0, 0, 0, 35, 35, 35, 35, 0, 0, 35, 35, 29, 35, @@ -122,7 +129,7 @@ static yyconst short int yy_accept[482] = 0 } ; -static yyconst int yy_ec[256] = +static yyconst flex_int32_t yy_ec[256] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 1, 4, 5, 1, 1, 1, 1, 1, 1, 1, @@ -130,438 +137,911 @@ static yyconst int yy_ec[256] = 1, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 12, 18, 19, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 12, 22, 23, - 24, 25, 26, 27, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 12, 28, 12, 29, 30, 12, 31, 32, 33, 34, - - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 12, 59, 1, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, - 60, 60, 60, 60, 60 + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 12, 54, 12, 55, 56, 12, 57, 58, 59, 60, + + 61, 62, 63, 64, 65, 37, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 12, 84, 1, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, + 85, 85, 85, 85, 85 } ; -static yyconst int yy_meta[61] = +static yyconst flex_int32_t yy_meta[86] = { 0, - 1, 2, 3, 3, 3, 4, 5, 5, 5, 5, - 5, 5, 5, 6, 7, 5, 5, 8, 5, 5, - 9, 5, 5, 5, 5, 10, 5, 11, 5, 11, - 12, 12, 12, 12, 12, 12, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 11, 11, 5, 5, 5, 11 + 1, 2, 3, 4, 4, 5, 6, 7, 6, 6, + 6, 6, 7, 8, 9, 6, 6, 10, 6, 6, + 11, 6, 6, 6, 6, 12, 6, 13, 13, 13, + 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 6, 14, 13, 13, 13, 13, + 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, + 14, 6, 6, 6, 14 } ; -static yyconst short int yy_base[520] = +static yyconst flex_int16_t yy_base[553] = { 0, - 0, 0, 39, 41, 1591, 1590, 1625, 2401, 62, 71, - 76, 61, 69, 1588, 78, 1587, 50, 89, 1583, 1580, - 132, 1579, 91, 123, 1561, 85, 94, 104, 1560, 1559, - 2401, 117, 176, 175, 2401, 177, 193, 204, 1539, 108, - 2401, 242, 120, 180, 196, 1553, 205, 2401, 101, 277, - 2401, 102, 75, 1555, 221, 112, 206, 234, 181, 1561, - 1565, 1547, 1553, 0, 268, 119, 1545, 221, 60, 240, - 223, 230, 244, 257, 278, 279, 286, 256, 1533, 264, - 1542, 298, 297, 1523, 296, 190, 292, 231, 97, 294, - 309, 350, 2401, 2401, 329, 327, 1524, 351, 352, 372, - - 359, 2401, 2401, 360, 361, 381, 362, 1496, 339, 341, - 342, 422, 457, 400, 1513, 492, 1512, 448, 483, 409, - 364, 386, 527, 562, 2401, 435, 1523, 245, 1498, 597, - 1497, 518, 368, 1483, 363, 1481, 1479, 310, 1478, 1477, - 289, 1474, 1463, 239, 1440, 1432, 1428, 385, 401, 369, - 1436, 311, 1425, 632, 1422, 553, 410, 420, 424, 411, - 423, 440, 588, 458, 667, 1420, 626, 459, 481, 1403, - 492, 494, 507, 627, 528, 1382, 412, 658, 674, 683, - 1398, 718, 709, 544, 725, 563, 1368, 2401, 734, 1348, - 769, 474, 1324, 477, 1314, 482, 1313, 1305, 548, 2401, - - 414, 760, 1289, 804, 578, 484, 582, 508, 509, 510, - 795, 811, 2401, 820, 552, 1290, 1272, 855, 554, 1197, - 841, 857, 863, 879, 885, 901, 647, 1228, 455, 907, - 923, 614, 1191, 1123, 611, 929, 945, 628, 551, 630, - 515, 631, 1115, 951, 967, 973, 555, 1109, 1101, 1093, - 1008, 1022, 668, 684, 2401, 1049, 1061, 1008, 1040, 1057, - 1065, 1073, 1081, 634, 1089, 1097, 1067, 577, 1105, 1113, - 579, 615, 683, 1041, 685, 1121, 1129, 1137, 708, 1041, - 991, 965, 947, 774, 719, 782, 1172, 735, 1207, 1186, - 1219, 1246, 1260, 1287, 1322, 876, 1246, 2401, 1278, 1313, - - 854, 1330, 805, 1338, 1346, 770, 1354, 1362, 771, 580, - 822, 584, 1397, 1383, 1399, 710, 792, 712, 711, 661, - 659, 809, 2401, 877, 754, 1434, 1461, 1496, 1019, 821, - 1442, 1531, 1566, 1440, 639, 1487, 921, 1522, 1557, 851, - 965, 1574, 707, 1301, 1582, 618, 616, 617, 1617, 1603, - 562, 2401, 2401, 2401, 2401, 2401, 2401, 1475, 858, 859, - 1619, 1654, 917, 918, 1640, 1656, 521, 1482, 961, 1510, - 1652, 1544, 646, 836, 1675, 1681, 1697, 1703, 2401, 1017, - 873, 874, 962, 853, 1021, 701, 513, 473, 2401, 1719, - 1725, 1741, 1005, 1150, 419, 919, 992, 1018, 1139, 1747, - - 1763, 1769, 1804, 1154, 1020, 1030, 1040, 1131, 1167, 901, - 1187, 1792, 1808, 1831, 1403, 1829, 1851, 820, 1059, 967, - 920, 472, 789, 1201, 1185, 1865, 1892, 1281, 2401, 1871, - 1869, 448, 1202, 1225, 736, 946, 390, 585, 1906, 1908, - 1943, 1970, 388, 1190, 1218, 1227, 1156, 1929, 1951, 1949, - 1266, 1303, 990, 1304, 1976, 1992, 1394, 1169, 340, 1248, - 1998, 2014, 1312, 316, 1203, 1242, 2020, 2036, 1340, 265, - 1151, 2042, 1229, 1423, 1424, 1395, 92, 1382, 1364, 34, - 2401, 2077, 2082, 2093, 2098, 2103, 2112, 2119, 2130, 2139, - 2144, 2155, 2167, 2169, 2178, 2183, 2192, 2197, 2206, 2215, - - 2227, 2236, 2245, 2250, 2262, 2267, 2278, 2283, 2294, 2305, - 2316, 2321, 2332, 2343, 2348, 2359, 2368, 2379, 2388 + 0, 0, 64, 66, 54, 56, 1486, 6578, 93, 98, + 107, 83, 155, 1460, 77, 1459, 98, 99, 1446, 1449, + 207, 1454, 275, 100, 108, 146, 326, 1402, 1384, 1380, + 6578, 101, 110, 151, 6578, 127, 227, 295, 89, 136, + 6578, 387, 140, 0, 429, 1346, 471, 6578, 117, 532, + 6578, 138, 157, 1371, 142, 295, 307, 574, 283, 1379, + 1371, 1325, 1324, 0, 1290, 249, 150, 274, 93, 241, + 152, 256, 325, 309, 347, 313, 1289, 147, 616, 154, + 1322, 346, 1285, 284, 281, 357, 348, 170, 279, 658, + 6578, 208, 700, 1317, 389, 358, 1310, 399, 276, 761, + + 6578, 6578, 6578, 409, 367, 413, 420, 307, 427, 374, + 421, 822, 883, 0, 1254, 925, 967, 1249, 1028, 319, + 451, 465, 1089, 1150, 6578, 456, 1282, 183, 1233, 1192, + 1224, 443, 1184, 1165, 454, 1161, 1149, 441, 1141, 1131, + 383, 1082, 1060, 1047, 453, 458, 470, 1029, 1253, 494, + 1044, 464, 999, 1295, 492, 486, 496, 516, 504, 517, + 998, 1356, 417, 1417, 1019, 418, 422, 491, 997, 502, + 1459, 527, 528, 545, 554, 409, 515, 1520, 0, 1562, + 965, 1623, 1684, 570, 1745, 560, 994, 6578, 948, 1806, + 935, 556, 923, 500, 897, 896, 559, 1848, 569, 6578, + + 598, 882, 1909, 566, 565, 587, 606, 589, 631, 1951, + 2012, 6578, 0, 559, 907, 902, 691, 2054, 561, 593, + 2115, 0, 2157, 2218, 2279, 2340, 644, 878, 346, 2401, + 839, 836, 2443, 613, 616, 2504, 668, 534, 610, 656, + 680, 820, 2546, 2607, 0, 591, 847, 844, 803, 733, + 793, 614, 605, 6578, 2668, 2710, 625, 2771, 0, 2813, + 2874, 2935, 2996, 3057, 3131, 3173, 3234, 714, 3295, 695, + 690, 727, 762, 729, 3337, 3398, 0, 643, 777, 744, + 699, 698, 829, 654, 834, 3459, 689, 3520, 854, 894, + 915, 920, 3581, 3642, 3684, 683, 3745, 6578, 597, 3806, + + 3867, 3928, 3989, 4050, 4111, 730, 4172, 814, 719, 542, + 750, 4214, 4275, 0, 762, 558, 553, 552, 531, 447, + 860, 6578, 697, 838, 957, 4336, 4397, 699, 926, 988, + 4458, 4519, 4580, 1002, 744, 1010, 4622, 4664, 1042, 737, + 4706, 4767, 647, 4828, 402, 818, 848, 1069, 1033, 0, + 437, 6578, 6578, 6578, 6578, 6578, 6578, 1122, 898, 924, + 4870, 1162, 963, 968, 4912, 4973, 770, 1063, 877, 1074, + 5005, 1102, 989, 1009, 0, 5062, 5104, 5146, 6578, 1036, + 1079, 1080, 1081, 1084, 1130, 910, 353, 315, 6578, 5188, + 5230, 5272, 689, 1139, 895, 1085, 1090, 1119, 1160, 5314, + + 5356, 1226, 1242, 1120, 1152, 1164, 1207, 1208, 1210, 1219, + 1234, 1327, 1287, 1316, 1345, 1388, 5398, 1263, 1225, 1116, + 1211, 252, 1247, 1243, 1248, 1363, 6578, 1428, 5440, 1449, + 5501, 242, 1310, 1318, 1329, 856, 180, 813, 1454, 5562, + 1491, 5604, 148, 1357, 1326, 1061, 1370, 1531, 5646, 5688, + 1344, 1374, 1427, 1375, 5730, 5772, 1453, 1456, 135, 1458, + 5814, 5856, 1457, 97, 1183, 955, 5898, 1552, 1490, 91, + 1408, 1557, 1373, 1409, 1412, 1455, 78, 1530, 1522, 39, + 6578, 5959, 5964, 5977, 5982, 5987, 5994, 6004, 6017, 758, + 6022, 6032, 6045, 6059, 362, 6064, 6074, 6079, 6089, 6099, + + 6103, 798, 6112, 6125, 6138, 6152, 6166, 6176, 6186, 6191, + 6203, 799, 6217, 957, 6222, 6234, 6247, 1071, 6261, 1086, + 6266, 6278, 6291, 6304, 6317, 6330, 1087, 6335, 6348, 1179, + 6353, 6365, 6378, 6391, 6404, 6417, 6430, 6435, 6448, 1183, + 6453, 6465, 6478, 6491, 6504, 6517, 1189, 1223, 6530, 6543, + 6553, 6563 } ; -static yyconst short int yy_def[520] = +static yyconst flex_int16_t yy_def[553] = { 0, 481, 1, 1, 1, 1, 1, 481, 481, 481, 481, 481, 482, 483, 481, 484, 481, 481, 485, 481, 481, - 481, 481, 486, 487, 481, 488, 488, 488, 481, 481, - 481, 488, 488, 488, 481, 488, 481, 481, 481, 482, - 481, 489, 483, 481, 490, 491, 491, 481, 484, 492, - 481, 481, 481, 481, 487, 488, 488, 488, 21, 493, - 481, 494, 481, 21, 495, 496, 496, 496, 496, 496, + 481, 481, 486, 487, 487, 487, 488, 481, 481, 481, + 481, 487, 487, 487, 481, 487, 481, 481, 481, 482, + 481, 489, 483, 490, 491, 491, 492, 481, 484, 493, + 481, 481, 481, 481, 487, 487, 487, 488, 21, 494, + 481, 495, 481, 21, 496, 496, 496, 496, 496, 496, + 496, 496, 496, 496, 496, 496, 496, 496, 497, 496, + 481, 486, 498, 498, 498, 498, 498, 498, 498, 499, + 481, 487, 500, 481, 487, 487, 501, 487, 487, 487, + + 481, 481, 481, 487, 487, 487, 487, 481, 482, 482, + 482, 482, 489, 502, 491, 491, 503, 491, 116, 504, + 504, 504, 504, 505, 481, 487, 506, 507, 496, 508, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, - 481, 486, 497, 498, 498, 498, 498, 498, 498, 498, - 488, 488, 481, 481, 488, 499, 481, 488, 488, 481, - - 488, 481, 481, 488, 488, 488, 488, 481, 482, 482, - 482, 482, 489, 481, 491, 47, 491, 500, 47, 484, - 484, 484, 484, 492, 481, 488, 493, 501, 496, 496, - 496, 502, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, 496, - 481, 498, 498, 498, 498, 503, 498, 498, 498, 498, - 498, 498, 92, 488, 92, 481, 488, 488, 504, 481, - 488, 488, 488, 488, 488, 481, 482, 112, 481, 116, - 491, 116, 47, 484, 123, 488, 505, 481, 130, 496, - 130, 496, 496, 496, 496, 496, 496, 496, 496, 481, - - 498, 154, 498, 154, 498, 498, 498, 498, 498, 498, - 92, 165, 481, 481, 506, 481, 481, 507, 488, 481, - 112, 481, 116, 182, 47, 123, 488, 505, 501, 130, - 191, 496, 496, 496, 498, 154, 204, 498, 498, 498, - 498, 498, 498, 92, 165, 481, 508, 481, 481, 481, - 507, 507, 509, 510, 481, 511, 481, 112, 481, 116, - 182, 47, 123, 488, 130, 191, 496, 498, 154, 204, - 498, 498, 498, 498, 498, 92, 165, 481, 512, 481, - 481, 481, 481, 481, 509, 481, 513, 510, 514, 507, - 507, 507, 507, 507, 511, 481, 112, 481, 116, 182, - - 491, 123, 488, 130, 191, 498, 154, 204, 498, 498, - 498, 498, 488, 165, 481, 515, 481, 481, 481, 481, - 481, 481, 481, 509, 509, 509, 509, 513, 510, 510, - 510, 510, 514, 294, 481, 112, 491, 182, 123, 488, - 496, 191, 498, 498, 204, 498, 498, 498, 488, 481, - 481, 481, 481, 481, 481, 481, 481, 509, 509, 509, - 327, 510, 510, 510, 332, 294, 481, 491, 488, 496, - 498, 498, 498, 498, 481, 327, 332, 294, 481, 488, - 498, 498, 498, 498, 498, 498, 498, 498, 481, 327, - 332, 294, 488, 498, 498, 498, 498, 498, 498, 327, - - 332, 294, 516, 498, 498, 498, 498, 498, 498, 498, - 498, 327, 332, 516, 414, 517, 518, 498, 498, 498, - 498, 498, 498, 498, 498, 518, 518, 481, 481, 518, - 519, 498, 498, 498, 498, 498, 498, 498, 518, 427, - 518, 427, 498, 498, 498, 498, 498, 427, 518, 442, - 498, 498, 498, 498, 427, 442, 498, 498, 498, 498, - 427, 442, 498, 498, 498, 498, 427, 442, 498, 498, - 498, 442, 498, 498, 498, 498, 498, 498, 498, 498, + 481, 498, 498, 509, 498, 498, 498, 498, 498, 498, + 498, 498, 487, 100, 481, 487, 487, 510, 481, 487, + 100, 487, 487, 487, 487, 481, 511, 511, 512, 116, + 491, 116, 116, 504, 504, 487, 513, 481, 496, 149, + 496, 496, 496, 496, 496, 496, 496, 149, 496, 481, + + 498, 498, 162, 498, 498, 498, 498, 498, 498, 162, + 100, 481, 514, 515, 481, 481, 516, 100, 487, 481, + 517, 518, 116, 116, 116, 504, 487, 513, 519, 149, + 496, 496, 149, 496, 498, 162, 498, 498, 498, 498, + 498, 498, 162, 100, 520, 521, 481, 481, 481, 522, + 522, 523, 524, 481, 525, 100, 481, 526, 527, 528, + 528, 261, 529, 100, 149, 149, 149, 498, 162, 498, + 498, 498, 498, 498, 162, 100, 530, 531, 481, 481, + 481, 481, 481, 523, 481, 532, 533, 534, 535, 535, + 535, 535, 535, 536, 100, 481, 537, 481, 538, 538, + + 300, 539, 100, 149, 304, 498, 162, 498, 498, 498, + 498, 162, 100, 540, 541, 481, 481, 481, 481, 481, + 481, 481, 542, 542, 542, 542, 543, 544, 544, 544, + 544, 545, 546, 303, 481, 537, 300, 301, 539, 303, + 304, 304, 498, 162, 498, 498, 498, 498, 303, 547, + 481, 481, 481, 481, 481, 481, 481, 542, 542, 542, + 326, 544, 544, 544, 331, 546, 481, 338, 303, 342, + 498, 498, 498, 498, 548, 326, 331, 366, 481, 303, + 498, 498, 498, 498, 498, 498, 498, 498, 481, 326, + 331, 366, 303, 498, 498, 498, 498, 498, 498, 326, + + 331, 546, 549, 498, 498, 498, 498, 498, 498, 498, + 498, 542, 544, 549, 549, 550, 551, 498, 498, 498, + 498, 498, 498, 498, 498, 481, 481, 550, 552, 550, + 550, 498, 498, 498, 498, 498, 498, 498, 550, 431, + 550, 431, 498, 498, 498, 498, 498, 550, 440, 431, + 498, 498, 498, 498, 440, 431, 498, 498, 498, 498, + 440, 431, 498, 498, 498, 498, 440, 550, 498, 498, + 498, 550, 498, 498, 498, 498, 498, 498, 498, 498, 0, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 481 + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481 } ; -static yyconst short int yy_nxt[2462] = +static yyconst flex_int16_t yy_nxt[6664] = { 0, 8, 9, 10, 9, 9, 9, 11, 12, 13, 14, 8, 8, 15, 8, 8, 16, 17, 18, 19, 20, - 21, 8, 22, 8, 8, 8, 23, 24, 25, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 27, 26, 26, 26, 26, 26, 26, - 28, 26, 26, 26, 26, 26, 8, 29, 30, 26, - 31, 156, 31, 37, 37, 37, 37, 37, 41, 32, - 52, 32, 37, 37, 37, 37, 37, 38, 38, 38, - 38, 38, 33, 34, 33, 34, 43, 132, 42, 44, - 41, 97, 97, 53, 135, 35, 45, 35, 94, 47, - - 47, 47, 47, 47, 47, 50, 54, 94, 82, 52, - 97, 98, 96, 41, 39, 41, 55, 94, 83, 156, - 100, 96, 52, 85, 156, 94, 86, 161, 50, 87, - 94, 96, 57, 88, 89, 42, 90, 481, 99, 96, - 481, 58, 61, 92, 96, 53, 132, 45, 133, 62, - 63, 101, 64, 92, 92, 92, 92, 92, 92, 65, - 104, 66, 67, 67, 68, 69, 70, 67, 71, 72, - 73, 67, 74, 67, 75, 76, 67, 77, 67, 78, - 79, 80, 67, 67, 67, 67, 67, 67, 94, 94, - 94, 67, 97, 98, 37, 37, 37, 37, 37, 481, - - 114, 59, 96, 96, 96, 38, 38, 38, 38, 38, - 114, 114, 114, 114, 114, 114, 116, 156, 106, 94, - 105, 107, 97, 98, 67, 119, 116, 116, 116, 116, - 116, 116, 118, 96, 158, 119, 119, 119, 119, 119, - 119, 92, 39, 40, 40, 40, 109, 94, 132, 111, - 132, 92, 92, 92, 92, 92, 92, 132, 156, 196, - 128, 96, 112, 134, 188, 160, 132, 132, 126, 113, - 138, 132, 112, 112, 112, 112, 112, 112, 49, 49, - 49, 120, 136, 132, 132, 139, 148, 140, 130, 122, - 149, 132, 156, 137, 141, 97, 144, 123, 130, 130, - - 130, 130, 130, 130, 124, 132, 132, 123, 123, 123, - 123, 123, 123, 132, 150, 481, 132, 154, 145, 156, - 142, 156, 94, 156, 162, 83, 143, 154, 154, 154, - 154, 154, 154, 157, 159, 146, 96, 132, 156, 147, - 194, 40, 94, 156, 195, 201, 41, 165, 41, 41, - 152, 91, 91, 91, 91, 91, 96, 165, 165, 165, - 165, 165, 165, 94, 94, 94, 42, 156, 42, 42, - 163, 167, 94, 94, 94, 94, 41, 96, 96, 96, - 163, 163, 163, 163, 163, 163, 96, 96, 96, 96, - 132, 50, 169, 172, 94, 132, 132, 170, 41, 193, - - 171, 168, 169, 169, 169, 169, 169, 169, 96, 175, - 173, 49, 132, 50, 192, 156, 199, 156, 197, 41, - 179, 41, 174, 110, 177, 177, 177, 110, 132, 41, - 179, 179, 179, 179, 179, 179, 50, 156, 156, 42, - 205, 156, 178, 198, 208, 235, 156, 156, 94, 42, - 156, 156, 178, 178, 178, 178, 178, 178, 40, 40, - 40, 109, 96, 206, 111, 209, 186, 156, 182, 207, - 229, 94, 213, 406, 188, 156, 210, 112, 182, 182, - 182, 182, 182, 182, 113, 96, 96, 112, 112, 112, - 112, 112, 112, 115, 115, 115, 115, 115, 214, 156, - - 156, 132, 196, 183, 132, 218, 216, 94, 232, 132, - 233, 156, 180, 183, 183, 183, 183, 183, 183, 96, - 213, 96, 180, 180, 180, 180, 180, 180, 121, 184, - 184, 184, 121, 239, 96, 156, 156, 156, 191, 41, - 156, 94, 156, 242, 243, 274, 241, 185, 191, 191, - 191, 191, 191, 191, 50, 96, 41, 185, 185, 185, - 185, 185, 185, 49, 49, 49, 120, 94, 272, 214, - 379, 50, 214, 204, 122, 132, 94, 248, 156, 214, - 280, 96, 123, 204, 204, 204, 204, 204, 204, 124, - 96, 234, 123, 123, 123, 123, 123, 123, 129, 129, - - 129, 129, 129, 227, 156, 156, 156, 156, 211, 156, - 347, 156, 156, 309, 348, 306, 447, 189, 211, 211, - 211, 211, 211, 211, 132, 238, 240, 189, 189, 189, - 189, 189, 189, 153, 153, 153, 153, 153, 156, 94, - 94, 132, 156, 156, 156, 156, 167, 94, 373, 374, - 310, 268, 202, 96, 96, 156, 267, 156, 156, 156, - 94, 96, 202, 202, 202, 202, 202, 202, 164, 164, - 164, 164, 164, 156, 96, 286, 271, 273, 221, 275, - 387, 219, 367, 303, 357, 264, 356, 212, 221, 221, - 221, 221, 221, 221, 222, 287, 286, 212, 212, 212, - - 212, 212, 212, 223, 222, 222, 222, 222, 222, 222, - 156, 289, 156, 223, 223, 223, 223, 223, 223, 181, - 181, 181, 181, 181, 371, 214, 286, 214, 156, 225, - 312, 399, 311, 317, 156, 352, 355, 354, 224, 225, - 225, 225, 225, 225, 225, 226, 287, 286, 224, 224, - 224, 224, 224, 224, 230, 226, 226, 226, 226, 226, - 226, 286, 289, 156, 230, 230, 230, 230, 230, 230, - 190, 190, 190, 190, 190, 284, 284, 284, 284, 284, - 236, 287, 445, 322, 322, 322, 322, 322, 255, 231, - 236, 236, 236, 236, 236, 236, 323, 156, 156, 231, - - 231, 231, 231, 231, 231, 203, 203, 203, 203, 203, - 322, 322, 322, 322, 322, 244, 156, 353, 94, 343, - 346, 436, 340, 323, 237, 244, 244, 244, 244, 244, - 244, 245, 96, 286, 237, 237, 237, 237, 237, 237, - 246, 245, 245, 245, 245, 245, 245, 156, 289, 156, - 246, 246, 246, 246, 246, 246, 251, 251, 251, 251, - 251, 258, 253, 156, 94, 286, 286, 254, 432, 255, - 388, 258, 258, 258, 258, 258, 258, 259, 96, 285, - 156, 118, 256, 260, 286, 287, 287, 259, 259, 259, - 259, 259, 259, 260, 260, 260, 260, 260, 260, 261, - - 156, 156, 369, 397, 287, 262, 335, 394, 395, 261, - 261, 261, 261, 261, 261, 262, 262, 262, 262, 262, - 262, 263, 115, 115, 115, 115, 115, 265, 156, 286, - 286, 263, 263, 263, 263, 263, 263, 265, 265, 265, - 265, 265, 265, 266, 289, 289, 156, 156, 118, 269, - 435, 424, 407, 266, 266, 266, 266, 266, 266, 269, - 269, 269, 269, 269, 269, 270, 129, 129, 129, 129, - 129, 276, 321, 156, 94, 270, 270, 270, 270, 270, - 270, 276, 276, 276, 276, 276, 276, 277, 96, 156, - 320, 380, 132, 278, 156, 446, 396, 277, 277, 277, - - 277, 277, 277, 278, 278, 278, 278, 278, 278, 251, - 251, 251, 251, 251, 434, 253, 319, 156, 403, 156, - 254, 288, 255, 284, 284, 284, 284, 284, 297, 481, - 94, 286, 96, 408, 481, 256, 255, 459, 297, 297, - 297, 297, 297, 297, 96, 156, 289, 156, 156, 256, - 284, 284, 284, 284, 290, 398, 292, 156, 419, 409, - 298, 292, 292, 293, 393, 420, 318, 156, 156, 294, - 298, 298, 298, 298, 298, 298, 295, 299, 421, 294, - 294, 294, 294, 294, 294, 300, 156, 299, 299, 299, - 299, 299, 299, 301, 132, 300, 300, 300, 300, 300, - - 300, 302, 433, 301, 301, 301, 301, 301, 301, 304, - 296, 302, 302, 302, 302, 302, 302, 305, 283, 304, - 304, 304, 304, 304, 304, 307, 282, 305, 305, 305, - 305, 305, 305, 308, 281, 307, 307, 307, 307, 307, - 307, 313, 156, 308, 308, 308, 308, 308, 308, 314, - 132, 313, 313, 313, 313, 313, 313, 315, 156, 314, - 314, 314, 314, 314, 314, 422, 156, 315, 315, 315, - 315, 315, 315, 285, 285, 285, 324, 156, 156, 326, - 410, 156, 404, 156, 474, 405, 411, 284, 284, 284, - 284, 284, 327, 481, 156, 418, 156, 454, 481, 328, - - 255, 423, 327, 327, 327, 327, 327, 327, 288, 288, - 288, 329, 156, 256, 156, 438, 465, 156, 132, 331, - 284, 284, 284, 284, 284, 425, 481, 332, 156, 156, - 156, 481, 451, 255, 333, 437, 443, 332, 332, 332, - 332, 332, 332, 229, 257, 156, 256, 284, 284, 284, - 284, 284, 156, 481, 156, 444, 156, 470, 481, 471, - 255, 284, 284, 284, 284, 284, 336, 481, 452, 156, - 475, 453, 481, 256, 255, 156, 336, 336, 336, 336, - 336, 336, 428, 428, 428, 428, 428, 256, 290, 290, - 290, 290, 290, 156, 481, 429, 466, 250, 337, 481, - - 457, 255, 153, 153, 153, 153, 153, 334, 337, 337, - 337, 337, 337, 337, 256, 249, 156, 334, 334, 334, - 334, 334, 334, 284, 284, 284, 284, 290, 156, 292, - 156, 156, 132, 338, 292, 292, 293, 458, 460, 156, - 132, 132, 294, 338, 338, 338, 338, 338, 338, 295, - 339, 132, 294, 294, 294, 294, 294, 294, 341, 469, - 339, 339, 339, 339, 339, 339, 342, 156, 341, 341, - 341, 341, 341, 341, 344, 132, 342, 342, 342, 342, - 342, 342, 345, 229, 344, 344, 344, 344, 344, 344, - 473, 156, 345, 345, 345, 345, 345, 345, 91, 91, - - 91, 91, 91, 349, 481, 481, 481, 481, 481, 156, - 94, 463, 480, 349, 349, 349, 349, 349, 349, 350, - 481, 156, 156, 479, 96, 118, 220, 478, 217, 350, - 350, 350, 350, 350, 350, 358, 322, 322, 322, 358, - 166, 286, 464, 362, 322, 322, 322, 362, 359, 156, - 156, 156, 156, 200, 286, 132, 363, 476, 477, 132, - 366, 287, 325, 360, 360, 360, 325, 132, 286, 289, - 366, 366, 366, 366, 366, 366, 358, 322, 322, 322, - 358, 361, 286, 181, 181, 181, 181, 181, 287, 359, - 132, 361, 361, 361, 361, 361, 361, 285, 285, 285, - - 324, 132, 287, 326, 132, 132, 132, 40, 132, 118, - 132, 190, 190, 190, 190, 190, 327, 40, 40, 40, - 40, 40, 40, 328, 132, 132, 327, 327, 327, 327, - 327, 327, 330, 364, 364, 364, 330, 132, 128, 118, - 118, 176, 368, 286, 166, 203, 203, 203, 203, 203, - 156, 365, 368, 368, 368, 368, 368, 368, 289, 151, - 132, 365, 365, 365, 365, 365, 365, 288, 288, 288, - 329, 156, 132, 59, 65, 61, 128, 49, 331, 125, - 118, 108, 103, 102, 93, 81, 332, 49, 49, 49, - 49, 49, 49, 333, 370, 60, 332, 332, 332, 332, - - 332, 332, 372, 59, 370, 370, 370, 370, 370, 370, - 51, 48, 372, 372, 372, 372, 372, 372, 164, 164, - 164, 164, 164, 375, 481, 36, 36, 481, 481, 481, - 94, 481, 481, 375, 375, 375, 375, 375, 375, 376, - 481, 481, 481, 481, 96, 481, 481, 481, 481, 376, - 376, 376, 376, 376, 376, 362, 322, 322, 322, 362, - 377, 481, 481, 481, 481, 481, 286, 481, 363, 481, - 377, 377, 377, 377, 377, 377, 378, 481, 481, 156, - 481, 289, 481, 481, 481, 381, 378, 378, 378, 378, - 378, 378, 382, 481, 383, 389, 481, 481, 481, 384, - - 385, 390, 481, 386, 481, 389, 389, 389, 389, 389, - 389, 390, 390, 390, 390, 390, 390, 391, 481, 481, - 481, 481, 481, 392, 481, 481, 481, 391, 391, 391, - 391, 391, 391, 392, 392, 392, 392, 392, 392, 400, - 481, 481, 481, 481, 481, 401, 481, 481, 481, 400, - 400, 400, 400, 400, 400, 401, 401, 401, 401, 401, - 401, 402, 481, 481, 481, 481, 481, 412, 481, 481, - 481, 402, 402, 402, 402, 402, 402, 412, 412, 412, - 412, 412, 412, 413, 481, 481, 481, 481, 481, 252, - 481, 481, 481, 413, 413, 413, 413, 413, 413, 252, - - 252, 252, 252, 252, 252, 414, 414, 414, 414, 414, - 481, 481, 285, 481, 481, 481, 481, 481, 481, 481, - 481, 415, 285, 285, 285, 285, 285, 285, 288, 481, - 481, 416, 414, 414, 414, 414, 414, 481, 288, 288, - 288, 288, 288, 288, 481, 481, 481, 481, 415, 427, - 481, 481, 428, 428, 428, 428, 428, 481, 416, 427, - 427, 427, 427, 427, 427, 429, 428, 428, 428, 428, - 428, 481, 428, 428, 428, 428, 428, 481, 431, 429, - 481, 481, 481, 481, 481, 429, 481, 481, 481, 442, - 481, 481, 431, 439, 439, 439, 439, 439, 431, 442, - - 442, 442, 442, 442, 442, 481, 429, 428, 428, 428, - 428, 428, 440, 481, 481, 481, 481, 481, 481, 431, - 429, 481, 440, 440, 440, 440, 440, 440, 448, 481, - 481, 481, 481, 431, 481, 481, 481, 481, 448, 448, - 448, 448, 448, 448, 428, 428, 428, 428, 428, 455, - 481, 481, 428, 428, 428, 428, 428, 429, 481, 455, - 455, 455, 455, 455, 455, 429, 481, 481, 481, 456, - 431, 449, 449, 449, 449, 449, 481, 481, 431, 456, - 456, 456, 456, 456, 456, 481, 481, 481, 481, 481, - 450, 481, 481, 481, 481, 481, 461, 481, 481, 481, - - 450, 450, 450, 450, 450, 450, 461, 461, 461, 461, - 461, 461, 462, 481, 481, 481, 481, 481, 467, 481, - 481, 481, 462, 462, 462, 462, 462, 462, 467, 467, - 467, 467, 467, 467, 468, 481, 481, 481, 481, 481, - 430, 481, 481, 481, 468, 468, 468, 468, 468, 468, - 430, 430, 430, 430, 430, 430, 472, 481, 481, 481, - 481, 481, 430, 481, 481, 481, 472, 472, 472, 472, - 472, 472, 430, 430, 430, 430, 430, 430, 40, 481, - 40, 40, 40, 40, 40, 40, 40, 40, 40, 46, - 46, 481, 46, 46, 49, 481, 49, 49, 49, 49, - - 49, 49, 49, 49, 49, 56, 56, 481, 56, 56, - 84, 481, 481, 84, 84, 91, 91, 91, 91, 91, - 91, 91, 91, 91, 95, 481, 95, 95, 481, 95, - 95, 110, 110, 110, 110, 110, 110, 110, 110, 110, - 110, 110, 115, 115, 115, 115, 115, 115, 115, 115, - 115, 117, 117, 481, 117, 117, 121, 121, 121, 121, - 121, 121, 121, 121, 121, 121, 121, 127, 127, 127, - 127, 127, 127, 127, 127, 127, 127, 127, 127, 67, - 67, 129, 129, 129, 129, 129, 129, 129, 129, 129, - 131, 131, 481, 131, 131, 153, 153, 153, 153, 153, - - 153, 153, 153, 153, 155, 155, 481, 155, 155, 164, - 164, 164, 164, 164, 164, 164, 164, 164, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 187, 187, 187, - 187, 187, 187, 187, 187, 187, 187, 187, 187, 190, - 190, 190, 190, 190, 190, 190, 190, 190, 203, 203, - 203, 203, 203, 203, 203, 203, 203, 215, 215, 215, - 481, 215, 228, 228, 228, 228, 228, 228, 228, 228, - 228, 228, 228, 228, 247, 247, 247, 481, 247, 252, - 252, 252, 252, 481, 252, 252, 252, 252, 252, 252, - 279, 279, 279, 481, 279, 285, 481, 285, 285, 285, - - 285, 285, 285, 285, 285, 285, 288, 481, 288, 288, - 288, 288, 288, 288, 288, 288, 288, 291, 291, 291, - 291, 291, 291, 291, 291, 291, 291, 291, 316, 316, - 316, 481, 316, 325, 325, 325, 325, 325, 325, 325, - 325, 325, 325, 325, 330, 330, 330, 330, 330, 330, - 330, 330, 330, 330, 330, 351, 351, 351, 481, 351, - 417, 417, 417, 481, 481, 481, 417, 481, 481, 417, - 417, 426, 426, 426, 426, 426, 426, 426, 426, 426, - 430, 430, 430, 481, 481, 430, 430, 430, 481, 430, - 430, 441, 441, 441, 441, 441, 441, 441, 441, 441, - - 7, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481 + 21, 8, 22, 8, 8, 8, 23, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, + 25, 24, 24, 24, 24, 24, 24, 26, 24, 24, + 24, 24, 24, 27, 28, 24, 24, 24, 24, 24, + 24, 24, 24, 24, 24, 24, 24, 24, 25, 24, + 24, 24, 24, 24, 24, 26, 24, 24, 24, 24, + 24, 8, 29, 30, 24, 31, 36, 31, 36, 41, + 41, 32, 154, 32, 37, 37, 37, 37, 37, 37, + + 37, 37, 37, 37, 33, 34, 33, 34, 38, 38, + 38, 38, 38, 91, 91, 36, 54, 36, 52, 52, + 32, 91, 32, 91, 94, 95, 94, 95, 108, 41, + 50, 154, 33, 34, 33, 34, 42, 135, 53, 56, + 91, 104, 39, 41, 154, 35, 130, 35, 57, 96, + 154, 105, 58, 93, 93, 91, 108, 481, 52, 91, + 481, 93, 97, 93, 91, 135, 53, 56, 107, 104, + 50, 39, 43, 94, 94, 44, 57, 96, 53, 105, + 93, 132, 45, 45, 45, 45, 45, 45, 154, 42, + 98, 106, 137, 47, 147, 93, 107, 159, 128, 93, + + 130, 154, 188, 130, 93, 130, 53, 130, 47, 150, + 132, 45, 45, 45, 45, 45, 45, 61, 98, 106, + 137, 91, 147, 154, 62, 63, 159, 64, 37, 37, + 37, 37, 37, 154, 65, 65, 66, 67, 68, 65, + 69, 70, 71, 65, 72, 65, 73, 74, 65, 75, + 65, 76, 77, 78, 65, 65, 65, 65, 65, 65, + 79, 93, 80, 65, 65, 66, 67, 68, 65, 69, + 70, 71, 72, 65, 73, 74, 65, 75, 65, 76, + 77, 78, 65, 65, 65, 65, 65, 65, 131, 91, + 138, 65, 82, 136, 130, 154, 38, 38, 38, 38, + + 38, 481, 130, 59, 84, 154, 160, 85, 91, 130, + 86, 94, 95, 133, 87, 88, 131, 89, 155, 138, + 91, 136, 156, 65, 134, 94, 141, 130, 90, 93, + 39, 41, 154, 84, 154, 160, 85, 154, 126, 86, + 145, 133, 87, 88, 146, 89, 100, 155, 93, 176, + 156, 65, 134, 100, 100, 100, 100, 100, 100, 39, + 93, 229, 130, 481, 139, 188, 130, 126, 154, 145, + 140, 91, 50, 146, 65, 65, 142, 176, 130, 158, + 91, 41, 100, 100, 100, 100, 100, 100, 40, 40, + 40, 109, 139, 143, 111, 152, 157, 144, 140, 90, + + 130, 154, 91, 194, 167, 142, 154, 112, 158, 166, + 154, 93, 91, 173, 112, 112, 112, 112, 112, 112, + 93, 143, 91, 152, 157, 144, 91, 42, 41, 40, + 91, 91, 167, 91, 41, 212, 130, 170, 166, 172, + 113, 173, 93, 112, 112, 112, 112, 112, 112, 116, + 220, 174, 93, 481, 213, 154, 116, 116, 116, 116, + 116, 116, 93, 41, 175, 170, 93, 481, 172, 91, + 93, 93, 357, 93, 42, 93, 191, 41, 220, 174, + 42, 192, 117, 195, 186, 116, 116, 116, 116, 116, + 116, 119, 175, 193, 130, 201, 130, 196, 119, 119, + + 119, 119, 119, 119, 50, 191, 130, 130, 213, 93, + 192, 130, 195, 186, 197, 217, 215, 154, 50, 204, + 194, 193, 41, 130, 201, 196, 205, 119, 119, 119, + 119, 119, 119, 49, 49, 49, 120, 199, 206, 154, + 91, 212, 197, 208, 122, 154, 207, 130, 204, 154, + 209, 271, 123, 130, 205, 93, 356, 154, 91, 123, + 123, 123, 123, 123, 123, 199, 206, 91, 42, 154, + 154, 208, 481, 91, 91, 207, 213, 355, 354, 209, + 93, 93, 41, 353, 247, 124, 231, 154, 123, 123, + 123, 123, 123, 123, 100, 154, 219, 227, 93, 232, + + 234, 100, 100, 100, 100, 100, 100, 93, 213, 130, + 237, 238, 130, 93, 93, 231, 279, 285, 154, 154, + 241, 285, 130, 50, 219, 227, 235, 232, 239, 234, + 100, 100, 100, 100, 100, 100, 149, 257, 237, 238, + 154, 240, 154, 149, 149, 149, 149, 149, 149, 241, + 117, 154, 267, 268, 272, 235, 239, 91, 288, 154, + 213, 285, 242, 154, 371, 257, 130, 286, 316, 154, + 240, 296, 149, 149, 149, 149, 149, 149, 162, 264, + 267, 268, 272, 273, 154, 162, 162, 162, 162, 162, + 162, 242, 250, 250, 250, 250, 250, 93, 252, 296, + + 154, 285, 403, 253, 285, 254, 92, 286, 264, 154, + 335, 285, 273, 270, 162, 162, 162, 162, 162, 162, + 164, 154, 309, 320, 319, 274, 308, 164, 164, 164, + 164, 164, 164, 154, 250, 250, 250, 250, 250, 335, + 252, 270, 288, 154, 255, 253, 346, 254, 154, 306, + 286, 309, 288, 274, 92, 308, 164, 164, 164, 164, + 164, 164, 99, 99, 99, 99, 99, 154, 114, 318, + 114, 311, 154, 310, 91, 346, 343, 347, 306, 213, + 154, 171, 154, 154, 367, 369, 255, 352, 171, 171, + 171, 171, 171, 171, 283, 283, 283, 283, 283, 311, + + 481, 310, 317, 154, 343, 481, 347, 254, 179, 222, + 179, 222, 367, 369, 93, 154, 379, 171, 171, 171, + 171, 171, 171, 110, 177, 177, 177, 110, 282, 41, + 283, 283, 283, 283, 283, 321, 321, 321, 321, 321, + 481, 447, 178, 254, 379, 285, 255, 373, 322, 178, + 178, 178, 178, 178, 178, 283, 283, 283, 283, 283, + 345, 321, 321, 321, 321, 321, 154, 154, 254, 281, + 447, 154, 280, 154, 322, 42, 373, 374, 178, 178, + 178, 178, 178, 178, 40, 40, 40, 109, 345, 130, + 111, 286, 130, 229, 92, 283, 283, 283, 283, 283, + + 481, 154, 446, 112, 380, 285, 374, 255, 254, 154, + 112, 112, 112, 112, 112, 112, 283, 283, 283, 283, + 283, 283, 283, 283, 283, 283, 481, 249, 481, 254, + 446, 285, 248, 380, 254, 154, 113, 399, 285, 112, + 112, 112, 112, 112, 112, 180, 406, 255, 154, 130, + 130, 286, 180, 180, 180, 180, 180, 180, 358, 321, + 321, 321, 358, 154, 285, 481, 399, 245, 255, 245, + 481, 359, 471, 255, 406, 285, 130, 286, 117, 288, + 285, 180, 180, 180, 180, 180, 180, 182, 130, 362, + 321, 321, 321, 362, 182, 182, 182, 182, 182, 182, + + 285, 130, 363, 99, 99, 99, 99, 99, 154, 229, + 286, 110, 177, 177, 177, 110, 288, 41, 117, 92, + 387, 288, 216, 182, 182, 182, 182, 182, 182, 118, + 118, 118, 118, 118, 163, 163, 163, 163, 163, 165, + 388, 288, 154, 121, 184, 184, 184, 121, 183, 387, + 92, 154, 154, 92, 41, 183, 183, 183, 183, 183, + 183, 200, 154, 42, 181, 181, 181, 181, 181, 388, + 161, 161, 161, 161, 161, 189, 189, 189, 189, 189, + 393, 259, 130, 259, 183, 183, 183, 183, 183, 183, + 121, 184, 184, 184, 121, 50, 277, 298, 277, 298, + + 130, 41, 453, 202, 202, 202, 202, 202, 393, 185, + 394, 395, 396, 130, 154, 407, 185, 185, 185, 185, + 185, 185, 154, 358, 321, 321, 321, 358, 408, 285, + 453, 397, 154, 154, 154, 130, 359, 154, 154, 394, + 395, 396, 50, 154, 407, 185, 185, 185, 185, 185, + 185, 49, 49, 49, 120, 154, 408, 409, 418, 397, + 434, 398, 122, 362, 321, 321, 321, 362, 404, 154, + 123, 405, 154, 154, 285, 286, 363, 123, 123, 123, + 123, 123, 123, 154, 130, 409, 418, 419, 434, 314, + 398, 314, 154, 350, 130, 350, 420, 404, 410, 375, + + 405, 375, 130, 124, 411, 154, 123, 123, 123, 123, + 123, 123, 190, 154, 130, 288, 419, 154, 130, 190, + 190, 190, 190, 190, 190, 420, 410, 289, 289, 289, + 289, 289, 411, 389, 470, 389, 154, 130, 435, 422, + 254, 423, 421, 414, 414, 414, 414, 414, 190, 190, + 190, 190, 190, 190, 148, 148, 148, 148, 148, 415, + 154, 154, 470, 154, 154, 433, 424, 435, 422, 425, + 423, 421, 154, 198, 437, 438, 436, 130, 154, 255, + 198, 198, 198, 198, 198, 198, 130, 154, 329, 364, + 364, 364, 329, 433, 424, 417, 154, 128, 425, 285, + + 154, 154, 117, 437, 438, 436, 130, 117, 432, 198, + 198, 198, 198, 198, 198, 203, 154, 414, 414, 414, + 414, 414, 203, 203, 203, 203, 203, 203, 324, 360, + 360, 360, 324, 415, 285, 169, 432, 165, 154, 151, + 288, 443, 130, 130, 59, 444, 481, 481, 481, 481, + 481, 203, 203, 203, 203, 203, 203, 161, 161, 161, + 161, 161, 481, 154, 426, 426, 426, 426, 426, 417, + 443, 154, 445, 452, 444, 457, 210, 427, 79, 154, + 286, 61, 154, 210, 210, 210, 210, 210, 210, 426, + 426, 426, 426, 426, 128, 125, 451, 154, 417, 117, + + 445, 452, 427, 103, 457, 458, 460, 102, 454, 154, + 154, 475, 210, 210, 210, 210, 210, 210, 163, 163, + 163, 163, 163, 154, 451, 101, 154, 154, 154, 426, + 426, 426, 426, 426, 458, 460, 454, 211, 474, 475, + 476, 429, 427, 477, 211, 211, 211, 211, 211, 211, + 426, 426, 426, 426, 426, 426, 426, 426, 426, 426, + 81, 154, 154, 427, 60, 154, 59, 474, 427, 476, + 463, 459, 477, 211, 211, 211, 211, 211, 211, 218, + 154, 429, 51, 48, 478, 481, 218, 218, 218, 218, + 218, 218, 426, 426, 426, 426, 426, 481, 464, 459, + + 465, 469, 429, 466, 481, 427, 154, 429, 154, 154, + 154, 154, 481, 478, 481, 218, 218, 218, 218, 218, + 218, 110, 177, 177, 177, 110, 464, 41, 465, 469, + 481, 466, 426, 426, 426, 426, 426, 473, 481, 481, + 221, 481, 481, 154, 429, 427, 481, 221, 221, 221, + 221, 221, 221, 441, 441, 441, 441, 441, 448, 448, + 448, 448, 448, 481, 481, 473, 427, 480, 479, 481, + 481, 427, 481, 42, 481, 154, 221, 221, 221, 221, + 221, 221, 223, 154, 429, 481, 481, 481, 481, 223, + 223, 223, 223, 223, 223, 480, 479, 481, 481, 481, + + 481, 481, 481, 481, 481, 429, 481, 481, 481, 481, + 429, 481, 481, 481, 481, 481, 481, 481, 223, 223, + 223, 223, 223, 223, 181, 181, 181, 181, 181, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 224, 481, 481, 481, 481, 481, 481, + 224, 224, 224, 224, 224, 224, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 224, + 224, 224, 224, 224, 224, 118, 118, 118, 118, 118, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + + 481, 481, 481, 481, 225, 481, 481, 481, 481, 481, + 481, 225, 225, 225, 225, 225, 225, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 225, 225, 225, 225, 225, 225, 121, 184, 184, 184, + 121, 481, 481, 481, 481, 481, 481, 41, 481, 481, + 481, 481, 481, 481, 481, 226, 481, 481, 481, 481, + 481, 481, 226, 226, 226, 226, 226, 226, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 50, 481, + + 481, 226, 226, 226, 226, 226, 226, 189, 189, 189, + 189, 189, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 230, 481, 481, 481, + 481, 481, 481, 230, 230, 230, 230, 230, 230, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 230, 230, 230, 230, 230, 230, 233, 481, + 481, 481, 481, 481, 481, 233, 233, 233, 233, 233, + 233, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + + 481, 481, 481, 481, 233, 233, 233, 233, 233, 233, + 202, 202, 202, 202, 202, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 236, + 481, 481, 481, 481, 481, 481, 236, 236, 236, 236, + 236, 236, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 236, 236, 236, 236, 236, + 236, 243, 481, 481, 481, 481, 481, 481, 243, 243, + 243, 243, 243, 243, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + + 481, 481, 481, 481, 481, 481, 481, 243, 243, 243, + 243, 243, 243, 163, 163, 163, 163, 163, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 244, 481, 481, 481, 481, 481, 481, 244, + 244, 244, 244, 244, 244, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 244, 244, + 244, 244, 244, 244, 256, 481, 481, 481, 481, 481, + 481, 256, 256, 256, 256, 256, 256, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 256, 256, 256, 256, 256, 256, 110, 177, 177, 177, + 110, 481, 41, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 258, 481, 481, 481, 481, + 481, 481, 258, 258, 258, 258, 258, 258, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 42, 481, + 481, 258, 258, 258, 258, 258, 258, 260, 481, 481, + 481, 481, 481, 481, 260, 260, 260, 260, 260, 260, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 260, 260, 260, 260, 260, 260, 181, + 181, 181, 181, 181, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 261, 481, + 481, 481, 481, 481, 481, 261, 261, 261, 261, 261, + 261, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 261, 261, 261, 261, 261, 261, + 118, 118, 118, 118, 118, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 262, + + 481, 481, 481, 481, 481, 481, 262, 262, 262, 262, + 262, 262, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 262, 262, 262, 262, 262, + 262, 121, 184, 184, 184, 121, 481, 481, 481, 481, + 481, 481, 41, 481, 481, 481, 481, 481, 481, 481, + 263, 481, 481, 481, 481, 481, 481, 263, 263, 263, + 263, 263, 263, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 50, 481, 481, 263, 263, 263, 263, + + 263, 263, 189, 189, 189, 189, 189, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 265, 481, 481, 481, 481, 481, 481, 265, 265, + 265, 265, 265, 265, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 265, 265, 265, + 265, 265, 265, 266, 481, 481, 481, 481, 481, 481, + 266, 266, 266, 266, 266, 266, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 266, + + 266, 266, 266, 266, 266, 202, 202, 202, 202, 202, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 269, 481, 481, 481, 481, 481, + 481, 269, 269, 269, 269, 269, 269, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 269, 269, 269, 269, 269, 269, 275, 481, 481, 481, + 481, 481, 481, 275, 275, 275, 275, 275, 275, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + + 481, 481, 275, 275, 275, 275, 275, 275, 163, 163, + 163, 163, 163, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 276, 481, 481, + 481, 481, 481, 481, 276, 276, 276, 276, 276, 276, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 276, 276, 276, 276, 276, 276, 283, + 283, 283, 283, 289, 481, 291, 481, 481, 481, 481, + 291, 291, 292, 481, 481, 481, 481, 481, 293, 481, + 481, 481, 481, 481, 481, 293, 293, 293, 293, 293, + + 293, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 294, 481, 481, 293, 293, 293, 293, 293, 293, + 295, 481, 481, 481, 481, 481, 481, 295, 295, 295, + 295, 295, 295, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 295, 295, 295, 295, + 295, 295, 110, 177, 177, 177, 110, 481, 41, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 297, 481, 481, 481, 481, 481, 481, 297, 297, + + 297, 297, 297, 297, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 42, 481, 481, 297, 297, 297, + 297, 297, 297, 299, 481, 481, 481, 481, 481, 481, + 299, 299, 299, 299, 299, 299, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 117, 481, 481, 299, + 299, 299, 299, 299, 299, 181, 181, 181, 181, 181, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 300, 481, 481, 481, 481, 481, + + 481, 300, 300, 300, 300, 300, 300, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 117, 481, 481, + 300, 300, 300, 300, 300, 300, 118, 118, 118, 118, + 118, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 301, 481, 481, 481, 481, + 481, 481, 301, 301, 301, 301, 301, 301, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 301, 301, 301, 301, 301, 301, 121, 184, 184, + + 184, 121, 481, 481, 481, 481, 481, 481, 41, 481, + 481, 481, 481, 481, 481, 481, 302, 481, 481, 481, + 481, 481, 481, 302, 302, 302, 302, 302, 302, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 50, + 481, 481, 302, 302, 302, 302, 302, 302, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 92, 481, 481, + 481, 481, 481, 481, 92, 92, 92, 92, 92, 92, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + + 481, 481, 481, 303, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 92, 92, 92, 92, 92, 92, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 303, 189, 189, 189, 189, 189, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 304, 481, 481, 481, 481, 481, 481, 304, 304, + 304, 304, 304, 304, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 304, 304, 304, + 304, 304, 304, 305, 481, 481, 481, 481, 481, 481, + + 305, 305, 305, 305, 305, 305, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 305, + 305, 305, 305, 305, 305, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 129, 481, 481, 481, 481, 481, + 481, 129, 129, 129, 129, 129, 129, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 129, 129, 129, 129, 129, 129, 202, 202, 202, 202, + + 202, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 307, 481, 481, 481, 481, + 481, 481, 307, 307, 307, 307, 307, 307, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 307, 307, 307, 307, 307, 307, 312, 481, 481, + 481, 481, 481, 481, 312, 312, 312, 312, 312, 312, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 312, 312, 312, 312, 312, 312, 163, + + 163, 163, 163, 163, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 313, 481, + 481, 481, 481, 481, 481, 313, 313, 313, 313, 313, + 313, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 313, 313, 313, 313, 313, 313, + 284, 284, 284, 323, 481, 481, 325, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 326, + 481, 481, 481, 481, 481, 481, 326, 326, 326, 326, + 326, 326, 481, 481, 481, 481, 481, 481, 481, 481, + + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 327, 481, 481, 326, 326, 326, 326, 326, + 326, 287, 287, 287, 328, 481, 481, 481, 481, 481, + 481, 481, 330, 481, 481, 481, 481, 481, 481, 481, + 331, 481, 481, 481, 481, 481, 481, 331, 331, 331, + 331, 331, 331, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 332, 481, 481, 331, 331, 331, 331, + 331, 331, 289, 289, 289, 289, 289, 481, 481, 481, + 481, 481, 481, 481, 481, 254, 481, 481, 481, 481, + + 481, 333, 481, 481, 481, 481, 481, 481, 333, 333, + 333, 333, 333, 333, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 255, 481, 481, 333, 333, 333, + 333, 333, 333, 283, 283, 283, 283, 289, 481, 291, + 481, 481, 481, 481, 291, 291, 292, 481, 481, 481, + 481, 481, 293, 481, 481, 481, 481, 481, 481, 293, + 293, 293, 293, 293, 293, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 294, 481, 481, 293, 293, + + 293, 293, 293, 293, 334, 481, 481, 481, 481, 481, + 481, 334, 334, 334, 334, 334, 334, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 334, 334, 334, 334, 334, 334, 110, 177, 177, 177, + 110, 481, 41, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 336, 481, 481, 481, 481, + 481, 481, 336, 336, 336, 336, 336, 336, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 42, 481, + + 481, 336, 336, 336, 336, 336, 336, 181, 181, 181, + 181, 181, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 337, 481, 481, 481, + 481, 481, 481, 337, 337, 337, 337, 337, 337, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 117, + 481, 481, 337, 337, 337, 337, 337, 337, 118, 118, + 118, 118, 118, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 338, 481, 481, + 481, 481, 481, 481, 338, 338, 338, 338, 338, 338, + + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 338, 338, 338, 338, 338, 338, 121, + 184, 184, 184, 121, 481, 481, 481, 481, 481, 481, + 41, 481, 481, 481, 481, 481, 481, 481, 339, 481, + 481, 481, 481, 481, 481, 339, 339, 339, 339, 339, + 339, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 50, 481, 481, 339, 339, 339, 339, 339, 339, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + + 481, 481, 481, 481, 481, 481, 340, 481, 481, 92, + 481, 481, 481, 481, 481, 481, 92, 92, 92, 92, + 92, 92, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 92, 92, 92, 92, 92, + 92, 189, 189, 189, 189, 189, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 341, 481, 481, 481, 481, 481, 481, 341, 341, 341, + 341, 341, 341, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + + 481, 481, 481, 481, 481, 481, 341, 341, 341, 341, + 341, 341, 148, 148, 148, 148, 148, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 342, 481, 481, 481, 481, 481, 481, 342, 342, + 342, 342, 342, 342, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 342, 342, 342, + 342, 342, 342, 202, 202, 202, 202, 202, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 344, 481, 481, 481, 481, 481, 481, 344, + + 344, 344, 344, 344, 344, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 344, 344, + 344, 344, 344, 344, 348, 481, 481, 481, 481, 481, + 481, 348, 348, 348, 348, 348, 348, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 348, 348, 348, 348, 348, 348, 163, 163, 163, 163, + 163, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 349, 481, 481, 481, 481, + + 481, 481, 349, 349, 349, 349, 349, 349, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 349, 349, 349, 349, 349, 349, 324, 360, 360, + 360, 324, 481, 285, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 361, 481, 481, 481, + 481, 481, 481, 361, 361, 361, 361, 361, 361, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 286, + 481, 481, 361, 361, 361, 361, 361, 361, 284, 284, + + 284, 323, 481, 481, 325, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 326, 481, 481, + 481, 481, 481, 481, 326, 326, 326, 326, 326, 326, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 327, 481, 481, 326, 326, 326, 326, 326, 326, 329, + 364, 364, 364, 329, 481, 481, 481, 481, 481, 481, + 285, 481, 481, 481, 481, 481, 481, 481, 365, 481, + 481, 481, 481, 481, 481, 365, 365, 365, 365, 365, + 365, 481, 481, 481, 481, 481, 481, 481, 481, 481, + + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 288, 481, 481, 365, 365, 365, 365, 365, 365, + 287, 287, 287, 328, 481, 481, 481, 481, 481, 481, + 481, 330, 481, 481, 481, 481, 481, 481, 481, 331, + 481, 481, 481, 481, 481, 481, 331, 331, 331, 331, + 331, 331, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 332, 481, 481, 331, 331, 331, 331, 331, + 331, 289, 289, 289, 289, 289, 481, 481, 481, 481, + 481, 481, 481, 481, 254, 481, 481, 481, 481, 481, + + 366, 481, 481, 481, 481, 481, 481, 366, 366, 366, + 366, 366, 366, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 255, 481, 481, 366, 366, 366, 366, + 366, 366, 368, 481, 481, 481, 481, 481, 481, 368, + 368, 368, 368, 368, 368, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 368, 368, + 368, 368, 368, 368, 115, 481, 481, 481, 481, 481, + 481, 115, 115, 115, 115, 115, 115, 481, 481, 481, + + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 115, 115, 115, 115, 115, 115, 370, 481, 481, 481, + 481, 481, 481, 370, 370, 370, 370, 370, 370, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 370, 370, 370, 370, 370, 370, 148, 148, + 148, 148, 148, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 129, 481, 481, + 481, 481, 481, 481, 129, 129, 129, 129, 129, 129, + + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 129, 129, 129, 129, 129, 129, 202, + 202, 202, 202, 202, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 372, 481, + 481, 481, 481, 481, 481, 372, 372, 372, 372, 372, + 372, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 372, 372, 372, 372, 372, 372, + 376, 481, 481, 481, 481, 481, 481, 376, 376, 376, + + 376, 376, 376, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 376, 376, 376, 376, + 376, 376, 377, 481, 481, 481, 481, 481, 481, 377, + 377, 377, 377, 377, 377, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 377, 377, + 377, 377, 377, 377, 289, 289, 289, 289, 289, 481, + 481, 481, 481, 481, 481, 481, 481, 254, 481, 481, + 481, 481, 481, 378, 481, 481, 481, 481, 481, 481, + + 378, 378, 378, 378, 378, 378, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 255, 481, 481, 378, + 378, 378, 378, 378, 378, 381, 481, 481, 481, 481, + 481, 481, 382, 481, 383, 481, 481, 481, 481, 384, + 385, 481, 481, 386, 481, 481, 481, 481, 154, 481, + 481, 481, 481, 481, 381, 481, 481, 481, 481, 481, + 382, 481, 383, 481, 481, 481, 481, 384, 385, 481, + 481, 386, 390, 481, 481, 481, 481, 481, 481, 390, + 390, 390, 390, 390, 390, 481, 481, 481, 481, 481, + + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 390, 390, + 390, 390, 390, 390, 391, 481, 481, 481, 481, 481, + 481, 391, 391, 391, 391, 391, 391, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 391, 391, 391, 391, 391, 391, 392, 481, 481, 481, + 481, 481, 481, 392, 392, 392, 392, 392, 392, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + + 481, 481, 392, 392, 392, 392, 392, 392, 400, 481, + 481, 481, 481, 481, 481, 400, 400, 400, 400, 400, + 400, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 400, 400, 400, 400, 400, 400, + 401, 481, 481, 481, 481, 481, 481, 401, 401, 401, + 401, 401, 401, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 401, 401, 401, 401, + 401, 401, 402, 481, 481, 481, 481, 481, 481, 402, + + 402, 402, 402, 402, 402, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 402, 402, + 402, 402, 402, 402, 412, 481, 481, 481, 481, 481, + 481, 412, 412, 412, 412, 412, 412, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 412, 412, 412, 412, 412, 412, 413, 481, 481, 481, + 481, 481, 481, 413, 413, 413, 413, 413, 413, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 413, 413, 413, 413, 413, 413, 431, 481, + 481, 481, 481, 481, 481, 431, 431, 431, 431, 431, + 431, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 431, 431, 431, 431, 431, 431, + 440, 481, 481, 481, 481, 481, 481, 440, 440, 440, + 440, 440, 440, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 440, 440, 440, 440, + + 440, 440, 441, 441, 441, 441, 441, 481, 481, 481, + 481, 481, 481, 481, 481, 427, 481, 481, 481, 481, + 481, 442, 481, 481, 481, 481, 481, 481, 442, 442, + 442, 442, 442, 442, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 429, 481, 481, 442, 442, 442, + 442, 442, 442, 448, 448, 448, 448, 448, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 449, 481, 481, 481, 481, 481, 481, 449, + 449, 449, 449, 449, 449, 481, 481, 481, 481, 481, + + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 449, 449, + 449, 449, 449, 449, 450, 481, 481, 481, 481, 481, + 481, 450, 450, 450, 450, 450, 450, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 450, 450, 450, 450, 450, 450, 455, 481, 481, 481, + 481, 481, 481, 455, 455, 455, 455, 455, 455, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + + 481, 481, 455, 455, 455, 455, 455, 455, 456, 481, + 481, 481, 481, 481, 481, 456, 456, 456, 456, 456, + 456, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 456, 456, 456, 456, 456, 456, + 461, 481, 481, 481, 481, 481, 481, 461, 461, 461, + 461, 461, 461, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 461, 461, 461, 461, + 461, 461, 462, 481, 481, 481, 481, 481, 481, 462, + + 462, 462, 462, 462, 462, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 462, 462, + 462, 462, 462, 462, 467, 481, 481, 481, 481, 481, + 481, 467, 467, 467, 467, 467, 467, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 467, 467, 467, 467, 467, 467, 468, 481, 481, 481, + 481, 481, 481, 468, 468, 468, 468, 468, 468, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 468, 468, 468, 468, 468, 468, 472, 481, + 481, 481, 481, 481, 481, 472, 472, 472, 472, 472, + 472, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 472, 472, 472, 472, 472, 472, + 40, 481, 481, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 46, 46, 481, 46, 46, 49, 481, + 481, 49, 49, 49, 49, 49, 49, 49, 49, 49, + 49, 55, 55, 481, 55, 55, 83, 481, 481, 83, + + 83, 92, 481, 92, 92, 481, 92, 92, 99, 99, + 99, 99, 99, 99, 99, 99, 99, 99, 110, 110, + 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, + 110, 115, 115, 481, 115, 115, 118, 118, 118, 118, + 118, 118, 118, 118, 118, 118, 121, 121, 121, 121, + 121, 121, 121, 121, 121, 121, 121, 121, 121, 127, + 127, 127, 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 129, 129, 481, 129, 129, 148, 148, + 148, 148, 148, 148, 148, 148, 148, 148, 153, 153, + 481, 153, 153, 161, 161, 161, 161, 161, 161, 161, + + 161, 161, 161, 163, 163, 163, 163, 163, 163, 163, + 163, 163, 163, 168, 168, 168, 181, 181, 181, 181, + 181, 181, 181, 181, 181, 181, 49, 49, 481, 49, + 49, 49, 49, 49, 49, 49, 49, 49, 49, 121, + 121, 121, 121, 121, 121, 121, 121, 121, 121, 121, + 121, 121, 127, 127, 127, 127, 127, 127, 127, 127, + 127, 127, 127, 127, 127, 127, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, + 202, 202, 202, 202, 202, 202, 202, 202, 202, 202, + + 214, 214, 214, 214, 40, 481, 481, 40, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 228, 228, 228, + 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, + 228, 246, 246, 246, 246, 251, 251, 251, 251, 251, + 251, 481, 251, 251, 251, 251, 251, 251, 40, 40, + 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 187, 187, 187, 187, 187, 187, 187, 187, 187, + 187, 187, 187, 187, 187, 278, 278, 278, 278, 251, + 251, 251, 251, 251, 251, 481, 251, 251, 251, 251, + 251, 251, 284, 481, 481, 284, 284, 284, 284, 284, + + 284, 284, 284, 284, 284, 287, 481, 481, 287, 287, + 287, 287, 287, 287, 287, 287, 287, 287, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 115, 115, 481, 115, 115, 49, + 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, + 49, 49, 315, 315, 315, 315, 324, 324, 324, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 287, + 481, 481, 287, 287, 287, 287, 287, 287, 287, 287, + 287, 287, 329, 329, 329, 329, 329, 329, 329, 329, + + 329, 329, 329, 329, 329, 251, 251, 251, 251, 251, + 481, 481, 251, 251, 251, 251, 251, 251, 290, 290, + 290, 290, 290, 290, 290, 290, 290, 290, 290, 290, + 290, 40, 40, 40, 40, 40, 40, 40, 40, 40, + 40, 40, 40, 40, 115, 115, 481, 115, 115, 49, + 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, + 49, 49, 351, 351, 351, 351, 284, 284, 481, 284, + 284, 284, 284, 284, 284, 284, 284, 284, 284, 324, + 324, 324, 324, 324, 324, 324, 324, 324, 324, 324, + 324, 324, 287, 287, 481, 287, 287, 287, 287, 287, + + 287, 287, 287, 287, 287, 329, 329, 329, 329, 329, + 329, 329, 329, 329, 329, 329, 329, 329, 251, 251, + 251, 251, 251, 481, 481, 251, 251, 251, 251, 251, + 251, 416, 416, 416, 416, 481, 481, 481, 481, 416, + 481, 481, 416, 416, 428, 428, 428, 428, 481, 481, + 481, 428, 428, 428, 481, 428, 428, 430, 430, 430, + 430, 430, 430, 430, 430, 430, 430, 439, 439, 439, + 439, 439, 439, 439, 439, 439, 439, 7, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481 } ; -static yyconst short int yy_chk[2462] = +static yyconst flex_int16_t yy_chk[6664] = { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -569,263 +1049,725 @@ static yyconst short int yy_chk[2462] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 3, 480, 4, 9, 9, 9, 9, 9, 12, 3, - 17, 4, 10, 10, 10, 10, 10, 11, 11, 11, - 11, 11, 3, 3, 4, 4, 13, 69, 12, 13, - 15, 53, 53, 17, 69, 3, 13, 4, 26, 13, - - 13, 13, 13, 13, 13, 15, 18, 27, 23, 18, - 27, 27, 26, 49, 11, 40, 18, 28, 23, 477, - 28, 27, 52, 23, 89, 56, 23, 89, 49, 23, - 32, 28, 18, 23, 23, 40, 23, 43, 27, 56, - 43, 18, 21, 24, 32, 52, 66, 43, 66, 21, - 21, 28, 21, 24, 24, 24, 24, 24, 24, 21, - 32, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 3, 5, 4, 6, 15, + 12, 3, 480, 4, 9, 9, 9, 9, 9, 10, + + 10, 10, 10, 10, 3, 3, 4, 4, 11, 11, + 11, 11, 11, 24, 32, 5, 18, 6, 17, 18, + 3, 25, 4, 33, 25, 25, 33, 33, 39, 49, + 15, 477, 3, 3, 4, 4, 12, 69, 17, 18, + 36, 32, 11, 40, 470, 3, 69, 4, 18, 25, + 464, 33, 18, 24, 32, 55, 39, 43, 52, 26, + 43, 25, 26, 33, 34, 69, 17, 18, 36, 32, + 49, 11, 13, 53, 53, 13, 18, 25, 52, 33, + 36, 67, 13, 13, 13, 13, 13, 13, 459, 40, + 26, 34, 71, 43, 78, 55, 36, 88, 128, 26, + + 78, 443, 128, 67, 34, 71, 52, 80, 13, 80, + 67, 13, 13, 13, 13, 13, 13, 21, 26, 34, + 71, 92, 78, 88, 21, 21, 88, 21, 37, 37, + 37, 37, 37, 437, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, + 21, 92, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, - 21, 21, 21, 21, 21, 21, 21, 21, 34, 33, - 36, 21, 33, 33, 37, 37, 37, 37, 37, 59, - - 44, 59, 34, 33, 36, 38, 38, 38, 38, 38, - 44, 44, 44, 44, 44, 44, 45, 86, 34, 57, - 33, 36, 57, 57, 59, 47, 45, 45, 45, 45, - 45, 45, 47, 57, 86, 47, 47, 47, 47, 47, - 47, 55, 38, 42, 42, 42, 42, 58, 68, 42, - 71, 55, 55, 55, 55, 55, 55, 72, 88, 144, - 128, 58, 42, 68, 128, 88, 144, 70, 58, 42, - 71, 73, 42, 42, 42, 42, 42, 42, 50, 50, - 50, 50, 70, 78, 74, 72, 78, 73, 65, 50, - 78, 80, 470, 70, 74, 76, 76, 50, 65, 65, - - 65, 65, 65, 65, 50, 75, 76, 50, 50, 50, - 50, 50, 50, 77, 80, 82, 141, 83, 77, 87, - 75, 90, 91, 85, 90, 82, 75, 83, 83, 83, - 83, 83, 83, 85, 87, 77, 91, 138, 152, 77, - 138, 109, 95, 464, 141, 152, 109, 96, 110, 111, - 82, 92, 92, 92, 92, 92, 95, 96, 96, 96, - 96, 96, 96, 92, 98, 99, 109, 459, 110, 111, - 92, 98, 101, 104, 105, 107, 121, 92, 98, 99, - 92, 92, 92, 92, 92, 92, 101, 104, 105, 107, - 135, 121, 100, 104, 106, 133, 150, 100, 122, 135, - - 101, 99, 100, 100, 100, 100, 100, 100, 106, 107, - 105, 120, 148, 122, 133, 443, 150, 437, 148, 177, - 114, 120, 106, 112, 112, 112, 112, 112, 149, 112, - 114, 114, 114, 114, 114, 114, 120, 157, 160, 177, - 157, 201, 112, 149, 160, 201, 395, 158, 126, 112, - 161, 159, 112, 112, 112, 112, 112, 112, 113, 113, - 113, 113, 126, 158, 113, 161, 126, 162, 118, 159, - 229, 164, 168, 395, 229, 432, 162, 113, 118, 118, - 118, 118, 118, 118, 113, 164, 168, 113, 113, 113, - 113, 113, 113, 116, 116, 116, 116, 116, 169, 422, - - 388, 192, 196, 119, 194, 171, 169, 172, 192, 196, - 194, 206, 116, 119, 119, 119, 119, 119, 119, 171, - 173, 172, 116, 116, 116, 116, 116, 116, 123, 123, - 123, 123, 123, 206, 173, 208, 209, 210, 132, 123, - 387, 175, 241, 209, 210, 241, 208, 123, 132, 132, - 132, 132, 132, 132, 123, 175, 184, 123, 123, 123, - 123, 123, 123, 124, 124, 124, 124, 219, 239, 215, - 367, 184, 247, 156, 124, 199, 186, 215, 239, 351, - 247, 219, 124, 156, 156, 156, 156, 156, 156, 124, - 186, 199, 124, 124, 124, 124, 124, 124, 130, 130, - - 130, 130, 130, 186, 268, 205, 271, 310, 163, 207, - 310, 312, 438, 271, 312, 268, 438, 130, 163, 163, - 163, 163, 163, 163, 130, 205, 207, 130, 130, 130, - 130, 130, 130, 154, 154, 154, 154, 154, 235, 167, - 174, 232, 272, 347, 348, 346, 167, 264, 347, 348, - 272, 235, 154, 167, 174, 238, 232, 240, 242, 154, - 227, 264, 154, 154, 154, 154, 154, 154, 165, 165, - 165, 165, 165, 373, 227, 253, 238, 240, 178, 242, - 373, 174, 335, 264, 321, 227, 320, 165, 178, 178, - 178, 178, 178, 178, 179, 253, 254, 165, 165, 165, - - 165, 165, 165, 180, 179, 179, 179, 179, 179, 179, - 273, 254, 275, 180, 180, 180, 180, 180, 180, 182, - 182, 182, 182, 182, 343, 279, 285, 316, 386, 183, - 275, 386, 273, 279, 343, 316, 319, 318, 182, 183, - 183, 183, 183, 183, 183, 185, 285, 288, 182, 182, - 182, 182, 182, 182, 189, 185, 185, 185, 185, 185, - 185, 325, 288, 435, 189, 189, 189, 189, 189, 189, - 191, 191, 191, 191, 191, 284, 284, 284, 284, 284, - 202, 325, 435, 286, 286, 286, 286, 286, 284, 191, - 202, 202, 202, 202, 202, 202, 286, 306, 309, 191, - - 191, 191, 191, 191, 191, 204, 204, 204, 204, 204, - 322, 322, 322, 322, 322, 211, 423, 317, 303, 306, - 309, 423, 303, 322, 204, 211, 211, 211, 211, 211, - 211, 212, 303, 330, 204, 204, 204, 204, 204, 204, - 214, 212, 212, 212, 212, 212, 212, 418, 330, 311, - 214, 214, 214, 214, 214, 214, 218, 218, 218, 218, - 218, 221, 218, 374, 340, 359, 360, 218, 418, 218, - 374, 221, 221, 221, 221, 221, 221, 222, 340, 324, - 384, 301, 218, 223, 324, 359, 360, 222, 222, 222, - 222, 222, 222, 223, 223, 223, 223, 223, 223, 224, - - 381, 382, 340, 384, 324, 225, 296, 381, 382, 224, - 224, 224, 224, 224, 224, 225, 225, 225, 225, 225, - 225, 226, 337, 337, 337, 337, 337, 230, 410, 363, - 364, 226, 226, 226, 226, 226, 226, 230, 230, 230, - 230, 230, 230, 231, 363, 364, 396, 421, 337, 236, - 421, 410, 396, 231, 231, 231, 231, 231, 231, 236, - 236, 236, 236, 236, 236, 237, 341, 341, 341, 341, - 341, 244, 283, 436, 369, 237, 237, 237, 237, 237, - 237, 244, 244, 244, 244, 244, 244, 245, 369, 383, - 282, 369, 341, 246, 420, 436, 383, 245, 245, 245, - - 245, 245, 245, 246, 246, 246, 246, 246, 246, 251, - 251, 251, 251, 251, 420, 251, 281, 453, 393, 397, - 251, 329, 251, 252, 252, 252, 252, 252, 258, 252, - 380, 329, 393, 397, 252, 251, 252, 453, 258, 258, - 258, 258, 258, 258, 380, 398, 329, 405, 385, 252, - 256, 256, 256, 256, 256, 385, 256, 406, 405, 398, - 259, 256, 256, 256, 380, 406, 280, 407, 274, 256, - 259, 259, 259, 259, 259, 259, 256, 260, 407, 256, - 256, 256, 256, 256, 256, 261, 419, 260, 260, 260, - 260, 260, 260, 262, 267, 261, 261, 261, 261, 261, - - 261, 263, 419, 262, 262, 262, 262, 262, 262, 265, - 257, 263, 263, 263, 263, 263, 263, 266, 250, 265, - 265, 265, 265, 265, 265, 269, 249, 266, 266, 266, - 266, 266, 266, 270, 248, 269, 269, 269, 269, 269, - 269, 276, 243, 270, 270, 270, 270, 270, 270, 277, - 234, 276, 276, 276, 276, 276, 276, 278, 408, 277, - 277, 277, 277, 277, 277, 408, 399, 278, 278, 278, - 278, 278, 278, 287, 287, 287, 287, 394, 471, 287, - 399, 404, 394, 447, 471, 394, 399, 290, 290, 290, - 290, 290, 287, 290, 409, 404, 458, 447, 290, 287, - - 290, 409, 287, 287, 287, 287, 287, 287, 289, 289, - 289, 289, 425, 290, 411, 425, 458, 444, 233, 289, - 291, 291, 291, 291, 291, 411, 291, 289, 424, 433, - 465, 291, 444, 291, 289, 424, 433, 289, 289, 289, - 289, 289, 289, 228, 220, 445, 291, 292, 292, 292, - 292, 292, 434, 292, 446, 434, 473, 465, 292, 466, - 292, 293, 293, 293, 293, 293, 297, 293, 445, 466, - 473, 446, 293, 292, 293, 460, 297, 297, 297, 297, - 297, 297, 428, 428, 428, 428, 428, 293, 294, 294, - 294, 294, 294, 451, 294, 428, 460, 217, 299, 294, - - 451, 294, 344, 344, 344, 344, 344, 294, 299, 299, - 299, 299, 299, 299, 294, 216, 203, 294, 294, 294, - 294, 294, 294, 295, 295, 295, 295, 295, 344, 295, - 452, 454, 198, 300, 295, 295, 295, 452, 454, 463, - 197, 195, 295, 300, 300, 300, 300, 300, 300, 295, - 302, 193, 295, 295, 295, 295, 295, 295, 304, 463, - 302, 302, 302, 302, 302, 302, 305, 469, 304, 304, - 304, 304, 304, 304, 307, 190, 305, 305, 305, 305, - 305, 305, 308, 187, 307, 307, 307, 307, 307, 307, - 469, 479, 308, 308, 308, 308, 308, 308, 313, 313, - - 313, 313, 313, 314, 415, 415, 415, 415, 415, 478, - 313, 457, 479, 314, 314, 314, 314, 314, 314, 315, - 415, 457, 476, 478, 313, 181, 176, 476, 170, 315, - 315, 315, 315, 315, 315, 326, 326, 326, 326, 326, - 166, 326, 457, 331, 331, 331, 331, 331, 326, 155, - 474, 475, 153, 151, 331, 147, 331, 474, 475, 146, - 334, 326, 327, 327, 327, 327, 327, 145, 327, 331, - 334, 334, 334, 334, 334, 334, 358, 358, 358, 358, - 358, 327, 358, 368, 368, 368, 368, 368, 327, 358, - 143, 327, 327, 327, 327, 327, 327, 328, 328, 328, - - 328, 142, 358, 328, 140, 139, 137, 336, 136, 368, - 134, 370, 370, 370, 370, 370, 328, 336, 336, 336, - 336, 336, 336, 328, 131, 129, 328, 328, 328, 328, - 328, 328, 332, 332, 332, 332, 332, 370, 127, 117, - 115, 108, 338, 332, 97, 372, 372, 372, 372, 372, - 84, 332, 338, 338, 338, 338, 338, 338, 332, 81, - 79, 332, 332, 332, 332, 332, 332, 333, 333, 333, - 333, 372, 67, 63, 62, 61, 60, 339, 333, 54, - 46, 39, 30, 29, 25, 22, 333, 339, 339, 339, - 339, 339, 339, 333, 342, 20, 333, 333, 333, 333, - - 333, 333, 345, 19, 342, 342, 342, 342, 342, 342, - 16, 14, 345, 345, 345, 345, 345, 345, 349, 349, - 349, 349, 349, 350, 7, 6, 5, 0, 0, 0, - 349, 0, 0, 350, 350, 350, 350, 350, 350, 361, - 0, 0, 0, 0, 349, 0, 0, 0, 0, 361, - 361, 361, 361, 361, 361, 362, 362, 362, 362, 362, - 365, 0, 0, 0, 0, 0, 362, 0, 362, 0, - 365, 365, 365, 365, 365, 365, 366, 0, 0, 371, - 0, 362, 0, 0, 0, 371, 366, 366, 366, 366, - 366, 366, 371, 0, 371, 375, 0, 0, 0, 371, - - 371, 376, 0, 371, 0, 375, 375, 375, 375, 375, - 375, 376, 376, 376, 376, 376, 376, 377, 0, 0, - 0, 0, 0, 378, 0, 0, 0, 377, 377, 377, - 377, 377, 377, 378, 378, 378, 378, 378, 378, 390, - 0, 0, 0, 0, 0, 391, 0, 0, 0, 390, - 390, 390, 390, 390, 390, 391, 391, 391, 391, 391, - 391, 392, 0, 0, 0, 0, 0, 400, 0, 0, - 0, 392, 392, 392, 392, 392, 392, 400, 400, 400, - 400, 400, 400, 401, 0, 0, 0, 0, 0, 402, - 0, 0, 0, 401, 401, 401, 401, 401, 401, 402, - - 402, 402, 402, 402, 402, 403, 403, 403, 403, 403, - 0, 0, 412, 0, 0, 0, 0, 0, 0, 0, - 0, 403, 412, 412, 412, 412, 412, 412, 413, 0, - 0, 403, 414, 414, 414, 414, 414, 0, 413, 413, - 413, 413, 413, 413, 0, 0, 0, 0, 414, 416, - 0, 0, 417, 417, 417, 417, 417, 0, 414, 416, - 416, 416, 416, 416, 416, 417, 426, 426, 426, 426, - 426, 0, 430, 430, 430, 430, 430, 0, 417, 426, - 0, 0, 0, 0, 0, 430, 0, 0, 0, 431, - 0, 0, 426, 427, 427, 427, 427, 427, 430, 431, - - 431, 431, 431, 431, 431, 0, 427, 439, 439, 439, - 439, 439, 427, 0, 0, 0, 0, 0, 0, 427, - 439, 0, 427, 427, 427, 427, 427, 427, 440, 0, - 0, 0, 0, 439, 0, 0, 0, 0, 440, 440, - 440, 440, 440, 440, 441, 441, 441, 441, 441, 448, - 0, 0, 449, 449, 449, 449, 449, 441, 0, 448, - 448, 448, 448, 448, 448, 449, 0, 0, 0, 450, - 441, 442, 442, 442, 442, 442, 0, 0, 449, 450, - 450, 450, 450, 450, 450, 0, 0, 0, 0, 0, - 442, 0, 0, 0, 0, 0, 455, 0, 0, 0, - - 442, 442, 442, 442, 442, 442, 455, 455, 455, 455, - 455, 455, 456, 0, 0, 0, 0, 0, 461, 0, - 0, 0, 456, 456, 456, 456, 456, 456, 461, 461, - 461, 461, 461, 461, 462, 0, 0, 0, 0, 0, - 467, 0, 0, 0, 462, 462, 462, 462, 462, 462, - 467, 467, 467, 467, 467, 467, 468, 0, 0, 0, - 0, 0, 472, 0, 0, 0, 468, 468, 468, 468, - 468, 468, 472, 472, 472, 472, 472, 472, 482, 0, - 482, 482, 482, 482, 482, 482, 482, 482, 482, 483, - 483, 0, 483, 483, 484, 0, 484, 484, 484, 484, - - 484, 484, 484, 484, 484, 485, 485, 0, 485, 485, - 486, 0, 0, 486, 486, 487, 487, 487, 487, 487, - 487, 487, 487, 487, 488, 0, 488, 488, 0, 488, - 488, 489, 489, 489, 489, 489, 489, 489, 489, 489, - 489, 489, 490, 490, 490, 490, 490, 490, 490, 490, - 490, 491, 491, 0, 491, 491, 492, 492, 492, 492, - 492, 492, 492, 492, 492, 492, 492, 493, 493, 493, + 21, 21, 21, 21, 21, 21, 21, 21, 66, 99, + 72, 21, 23, 70, 70, 432, 38, 38, 38, 38, + + 38, 59, 66, 59, 23, 422, 89, 23, 56, 72, + 23, 56, 56, 68, 23, 23, 66, 23, 84, 72, + 57, 70, 85, 59, 68, 74, 74, 68, 23, 99, + 38, 120, 89, 23, 85, 89, 23, 84, 57, 23, + 76, 68, 23, 23, 76, 23, 27, 84, 56, 108, + 85, 59, 68, 27, 27, 27, 27, 27, 27, 38, + 57, 229, 74, 82, 73, 229, 76, 57, 388, 76, + 73, 96, 120, 76, 495, 495, 75, 108, 73, 87, + 105, 110, 27, 27, 27, 27, 27, 27, 42, 42, + 42, 42, 73, 75, 42, 82, 86, 75, 73, 82, + + 75, 87, 95, 141, 96, 75, 387, 42, 87, 95, + 86, 96, 98, 105, 42, 42, 42, 42, 42, 42, + 105, 75, 104, 82, 86, 75, 106, 110, 111, 109, + 163, 166, 96, 107, 109, 167, 141, 98, 166, 104, + 42, 105, 95, 42, 42, 42, 42, 42, 42, 45, + 176, 106, 98, 121, 351, 345, 45, 45, 45, 45, + 45, 45, 104, 121, 107, 98, 106, 122, 104, 126, + 163, 166, 320, 107, 111, 167, 132, 122, 176, 106, + 109, 135, 45, 145, 126, 45, 45, 45, 45, 45, + 45, 47, 107, 138, 138, 152, 132, 146, 47, 47, + + 47, 47, 47, 47, 121, 132, 145, 135, 168, 126, + 135, 146, 145, 126, 147, 170, 168, 152, 122, 155, + 194, 138, 177, 147, 152, 146, 156, 47, 47, 47, + 47, 47, 47, 50, 50, 50, 50, 150, 157, 156, + 172, 173, 147, 159, 50, 155, 158, 150, 155, 157, + 160, 238, 50, 194, 156, 170, 319, 159, 174, 50, + 50, 50, 50, 50, 50, 150, 157, 175, 177, 158, + 160, 159, 184, 186, 219, 158, 214, 318, 317, 160, + 172, 173, 184, 316, 214, 50, 192, 238, 50, 50, + 50, 50, 50, 50, 58, 310, 174, 186, 174, 197, + + 199, 58, 58, 58, 58, 58, 58, 175, 246, 192, + 204, 205, 197, 186, 219, 192, 246, 253, 205, 204, + 208, 252, 199, 184, 174, 186, 201, 197, 206, 199, + 58, 58, 58, 58, 58, 58, 79, 220, 204, 205, + 206, 207, 208, 79, 79, 79, 79, 79, 79, 208, + 299, 201, 234, 235, 239, 201, 206, 227, 253, 207, + 278, 284, 209, 239, 343, 220, 234, 252, 278, 235, + 207, 257, 79, 79, 79, 79, 79, 79, 90, 227, + 234, 235, 239, 240, 209, 90, 90, 90, 90, 90, + 90, 209, 217, 217, 217, 217, 217, 227, 217, 257, + + 343, 287, 393, 217, 323, 217, 393, 284, 227, 240, + 296, 328, 240, 237, 90, 90, 90, 90, 90, 90, + 93, 237, 271, 282, 281, 241, 270, 93, 93, 93, + 93, 93, 93, 241, 250, 250, 250, 250, 250, 296, + 250, 237, 287, 271, 217, 250, 309, 250, 270, 268, + 323, 271, 328, 241, 340, 270, 93, 93, 93, 93, + 93, 93, 100, 100, 100, 100, 100, 268, 490, 280, + 490, 274, 309, 272, 100, 309, 306, 311, 268, 315, + 272, 100, 274, 306, 335, 340, 250, 315, 100, 100, + 100, 100, 100, 100, 251, 251, 251, 251, 251, 274, + + 251, 272, 279, 311, 306, 251, 311, 251, 502, 512, + 502, 512, 335, 340, 100, 273, 367, 100, 100, 100, + 100, 100, 100, 112, 112, 112, 112, 112, 249, 112, + 283, 283, 283, 283, 283, 285, 285, 285, 285, 285, + 324, 438, 112, 283, 367, 324, 251, 346, 285, 112, + 112, 112, 112, 112, 112, 289, 289, 289, 289, 289, + 308, 321, 321, 321, 321, 321, 438, 308, 289, 248, + 438, 346, 247, 242, 321, 112, 346, 347, 112, 112, + 112, 112, 112, 112, 113, 113, 113, 113, 308, 232, + 113, 324, 231, 228, 369, 290, 290, 290, 290, 290, + + 359, 347, 436, 113, 369, 359, 347, 289, 290, 436, + 113, 113, 113, 113, 113, 113, 291, 291, 291, 291, + 291, 292, 292, 292, 292, 292, 360, 216, 329, 291, + 436, 360, 215, 369, 292, 202, 113, 386, 329, 113, + 113, 113, 113, 113, 113, 116, 395, 290, 395, 196, + 195, 359, 116, 116, 116, 116, 116, 116, 325, 325, + 325, 325, 325, 386, 325, 363, 386, 514, 291, 514, + 364, 325, 466, 292, 395, 363, 193, 360, 116, 329, + 364, 116, 116, 116, 116, 116, 116, 117, 191, 330, + 330, 330, 330, 330, 117, 117, 117, 117, 117, 117, + + 330, 189, 330, 334, 334, 334, 334, 334, 466, 187, + 325, 336, 336, 336, 336, 336, 363, 336, 181, 334, + 373, 364, 169, 117, 117, 117, 117, 117, 117, 119, + 119, 119, 119, 119, 349, 349, 349, 349, 349, 165, + 374, 330, 373, 339, 339, 339, 339, 339, 119, 373, + 349, 161, 153, 380, 339, 119, 119, 119, 119, 119, + 119, 151, 374, 336, 368, 368, 368, 368, 368, 374, + 348, 348, 348, 348, 348, 370, 370, 370, 370, 370, + 380, 518, 148, 518, 119, 119, 119, 119, 119, 119, + 123, 123, 123, 123, 123, 339, 520, 527, 520, 527, + + 144, 123, 446, 372, 372, 372, 372, 372, 380, 123, + 381, 382, 383, 143, 446, 396, 123, 123, 123, 123, + 123, 123, 348, 358, 358, 358, 358, 358, 397, 358, + 446, 384, 381, 382, 383, 142, 358, 384, 396, 381, + 382, 383, 123, 397, 396, 123, 123, 123, 123, 123, + 123, 124, 124, 124, 124, 372, 397, 398, 404, 384, + 420, 385, 124, 362, 362, 362, 362, 362, 394, 420, + 124, 394, 398, 404, 362, 358, 362, 124, 124, 124, + 124, 124, 124, 385, 140, 398, 404, 405, 420, 530, + 385, 530, 394, 540, 139, 540, 406, 394, 399, 547, + + 394, 547, 137, 124, 399, 405, 124, 124, 124, 124, + 124, 124, 130, 399, 136, 362, 405, 406, 134, 130, + 130, 130, 130, 130, 130, 406, 399, 402, 402, 402, + 402, 402, 399, 548, 465, 548, 465, 133, 421, 408, + 402, 409, 407, 403, 403, 403, 403, 403, 130, 130, + 130, 130, 130, 130, 149, 149, 149, 149, 149, 403, + 407, 408, 465, 409, 421, 419, 410, 421, 408, 411, + 409, 407, 410, 149, 424, 425, 423, 131, 419, 402, + 149, 149, 149, 149, 149, 149, 129, 411, 413, 413, + 413, 413, 413, 419, 410, 403, 424, 127, 411, 413, + + 423, 425, 118, 424, 425, 423, 149, 115, 418, 149, + 149, 149, 149, 149, 149, 154, 418, 414, 414, 414, + 414, 414, 154, 154, 154, 154, 154, 154, 412, 412, + 412, 412, 412, 414, 412, 97, 418, 94, 83, 81, + 413, 433, 77, 65, 63, 434, 415, 415, 415, 415, + 415, 154, 154, 154, 154, 154, 154, 162, 162, 162, + 162, 162, 415, 433, 426, 426, 426, 426, 426, 414, + 433, 434, 435, 445, 434, 451, 162, 426, 62, 445, + 412, 61, 435, 162, 162, 162, 162, 162, 162, 416, + 416, 416, 416, 416, 60, 54, 444, 451, 415, 46, + + 435, 445, 416, 30, 451, 452, 454, 29, 447, 162, + 444, 473, 162, 162, 162, 162, 162, 162, 164, 164, + 164, 164, 164, 447, 444, 28, 473, 452, 454, 428, + 428, 428, 428, 428, 452, 454, 447, 164, 471, 473, + 474, 416, 428, 475, 164, 164, 164, 164, 164, 164, + 430, 430, 430, 430, 430, 439, 439, 439, 439, 439, + 22, 471, 474, 430, 20, 475, 19, 471, 439, 474, + 457, 453, 475, 164, 164, 164, 164, 164, 164, 171, + 453, 428, 16, 14, 476, 7, 171, 171, 171, 171, + 171, 171, 441, 441, 441, 441, 441, 0, 457, 453, + + 458, 463, 430, 460, 0, 441, 457, 439, 476, 458, + 463, 460, 0, 476, 0, 171, 171, 171, 171, 171, + 171, 178, 178, 178, 178, 178, 457, 178, 458, 463, + 0, 460, 448, 448, 448, 448, 448, 469, 0, 0, + 178, 0, 0, 469, 441, 448, 0, 178, 178, 178, + 178, 178, 178, 468, 468, 468, 468, 468, 472, 472, + 472, 472, 472, 0, 0, 469, 468, 479, 478, 0, + 0, 472, 0, 178, 0, 479, 178, 178, 178, 178, + 178, 178, 180, 478, 448, 0, 0, 0, 0, 180, + 180, 180, 180, 180, 180, 479, 478, 0, 0, 0, + + 0, 0, 0, 0, 0, 468, 0, 0, 0, 0, + 472, 0, 0, 0, 0, 0, 0, 0, 180, 180, + 180, 180, 180, 180, 182, 182, 182, 182, 182, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 182, 0, 0, 0, 0, 0, 0, + 182, 182, 182, 182, 182, 182, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 182, + 182, 182, 182, 182, 182, 183, 183, 183, 183, 183, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 183, 0, 0, 0, 0, 0, + 0, 183, 183, 183, 183, 183, 183, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 183, 183, 183, 183, 183, 183, 185, 185, 185, 185, + 185, 0, 0, 0, 0, 0, 0, 185, 0, 0, + 0, 0, 0, 0, 0, 185, 0, 0, 0, 0, + 0, 0, 185, 185, 185, 185, 185, 185, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 185, 0, + + 0, 185, 185, 185, 185, 185, 185, 190, 190, 190, + 190, 190, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 190, 0, 0, 0, + 0, 0, 0, 190, 190, 190, 190, 190, 190, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 190, 190, 190, 190, 190, 190, 198, 0, + 0, 0, 0, 0, 0, 198, 198, 198, 198, 198, + 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 198, 198, 198, 198, 198, 198, + 203, 203, 203, 203, 203, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 203, + 0, 0, 0, 0, 0, 0, 203, 203, 203, 203, + 203, 203, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 203, 203, 203, 203, 203, + 203, 210, 0, 0, 0, 0, 0, 0, 210, 210, + 210, 210, 210, 210, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 210, 210, 210, + 210, 210, 210, 211, 211, 211, 211, 211, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 211, 0, 0, 0, 0, 0, 0, 211, + 211, 211, 211, 211, 211, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 211, 211, + 211, 211, 211, 211, 218, 0, 0, 0, 0, 0, + 0, 218, 218, 218, 218, 218, 218, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 218, 218, 218, 218, 218, 218, 221, 221, 221, 221, + 221, 0, 221, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 221, 0, 0, 0, 0, + 0, 0, 221, 221, 221, 221, 221, 221, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 221, 0, + 0, 221, 221, 221, 221, 221, 221, 223, 0, 0, + 0, 0, 0, 0, 223, 223, 223, 223, 223, 223, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 223, 223, 223, 223, 223, 223, 224, + 224, 224, 224, 224, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 224, 0, + 0, 0, 0, 0, 0, 224, 224, 224, 224, 224, + 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 224, 224, 224, 224, 224, 224, + 225, 225, 225, 225, 225, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, + + 0, 0, 0, 0, 0, 0, 225, 225, 225, 225, + 225, 225, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 225, 225, 225, 225, 225, + 225, 226, 226, 226, 226, 226, 0, 0, 0, 0, + 0, 0, 226, 0, 0, 0, 0, 0, 0, 0, + 226, 0, 0, 0, 0, 0, 0, 226, 226, 226, + 226, 226, 226, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 226, 0, 0, 226, 226, 226, 226, + + 226, 226, 230, 230, 230, 230, 230, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 230, 0, 0, 0, 0, 0, 0, 230, 230, + 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, + 230, 230, 230, 233, 0, 0, 0, 0, 0, 0, + 233, 233, 233, 233, 233, 233, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 233, + + 233, 233, 233, 233, 233, 236, 236, 236, 236, 236, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 236, 0, 0, 0, 0, 0, + 0, 236, 236, 236, 236, 236, 236, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 236, 236, 236, 236, 236, 236, 243, 0, 0, 0, + 0, 0, 0, 243, 243, 243, 243, 243, 243, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 243, 243, 243, 243, 243, 243, 244, 244, + 244, 244, 244, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 244, 0, 0, + 0, 0, 0, 0, 244, 244, 244, 244, 244, 244, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 244, 244, 244, 244, 244, 244, 255, + 255, 255, 255, 255, 0, 255, 0, 0, 0, 0, + 255, 255, 255, 0, 0, 0, 0, 0, 255, 0, + 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, + + 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 255, 0, 0, 255, 255, 255, 255, 255, 255, + 256, 0, 0, 0, 0, 0, 0, 256, 256, 256, + 256, 256, 256, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 256, 256, 256, 256, + 256, 256, 258, 258, 258, 258, 258, 0, 258, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 258, 0, 0, 0, 0, 0, 0, 258, 258, + + 258, 258, 258, 258, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 258, 0, 0, 258, 258, 258, + 258, 258, 258, 260, 0, 0, 0, 0, 0, 0, + 260, 260, 260, 260, 260, 260, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 260, 0, 0, 260, + 260, 260, 260, 260, 260, 261, 261, 261, 261, 261, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 261, 0, 0, 0, 0, 0, + + 0, 261, 261, 261, 261, 261, 261, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 261, 0, 0, + 261, 261, 261, 261, 261, 261, 262, 262, 262, 262, + 262, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 262, 0, 0, 0, 0, + 0, 0, 262, 262, 262, 262, 262, 262, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 262, 262, 262, 262, 262, 262, 263, 263, 263, + + 263, 263, 0, 0, 0, 0, 0, 0, 263, 0, + 0, 0, 0, 0, 0, 0, 263, 0, 0, 0, + 0, 0, 0, 263, 263, 263, 263, 263, 263, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 263, + 0, 0, 263, 263, 263, 263, 263, 263, 264, 264, + 264, 264, 264, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 264, 0, 0, + 0, 0, 0, 0, 264, 264, 264, 264, 264, 264, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 264, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 264, 264, 264, 264, 264, 264, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 264, 265, 265, 265, 265, 265, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 265, 0, 0, 0, 0, 0, 0, 265, 265, + 265, 265, 265, 265, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 265, 265, 265, + 265, 265, 265, 266, 0, 0, 0, 0, 0, 0, + + 266, 266, 266, 266, 266, 266, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 266, + 266, 266, 266, 266, 266, 267, 267, 267, 267, 267, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 267, 0, 0, 0, 0, 0, + 0, 267, 267, 267, 267, 267, 267, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 267, 267, 267, 267, 267, 267, 269, 269, 269, 269, + + 269, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 269, 0, 0, 0, 0, + 0, 0, 269, 269, 269, 269, 269, 269, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 269, 269, 269, 269, 269, 269, 275, 0, 0, + 0, 0, 0, 0, 275, 275, 275, 275, 275, 275, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 275, 275, 275, 275, 275, 275, 276, + + 276, 276, 276, 276, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 276, 0, + 0, 0, 0, 0, 0, 276, 276, 276, 276, 276, + 276, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 276, 276, 276, 276, 276, 276, + 286, 286, 286, 286, 0, 0, 286, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 286, + 0, 0, 0, 0, 0, 0, 286, 286, 286, 286, + 286, 286, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 286, 0, 0, 286, 286, 286, 286, 286, + 286, 288, 288, 288, 288, 0, 0, 0, 0, 0, + 0, 0, 288, 0, 0, 0, 0, 0, 0, 0, + 288, 0, 0, 0, 0, 0, 0, 288, 288, 288, + 288, 288, 288, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 288, 0, 0, 288, 288, 288, 288, + 288, 288, 293, 293, 293, 293, 293, 0, 0, 0, + 0, 0, 0, 0, 0, 293, 0, 0, 0, 0, + + 0, 293, 0, 0, 0, 0, 0, 0, 293, 293, + 293, 293, 293, 293, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 293, 0, 0, 293, 293, 293, + 293, 293, 293, 294, 294, 294, 294, 294, 0, 294, + 0, 0, 0, 0, 294, 294, 294, 0, 0, 0, + 0, 0, 294, 0, 0, 0, 0, 0, 0, 294, + 294, 294, 294, 294, 294, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 294, 0, 0, 294, 294, + + 294, 294, 294, 294, 295, 0, 0, 0, 0, 0, + 0, 295, 295, 295, 295, 295, 295, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 295, 295, 295, 295, 295, 295, 297, 297, 297, 297, + 297, 0, 297, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 297, 0, 0, 0, 0, + 0, 0, 297, 297, 297, 297, 297, 297, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 297, 0, + + 0, 297, 297, 297, 297, 297, 297, 300, 300, 300, + 300, 300, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 300, 0, 0, 0, + 0, 0, 0, 300, 300, 300, 300, 300, 300, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 300, + 0, 0, 300, 300, 300, 300, 300, 300, 301, 301, + 301, 301, 301, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 301, 0, 0, + 0, 0, 0, 0, 301, 301, 301, 301, 301, 301, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 301, 301, 301, 301, 301, 301, 302, + 302, 302, 302, 302, 0, 0, 0, 0, 0, 0, + 302, 0, 0, 0, 0, 0, 0, 0, 302, 0, + 0, 0, 0, 0, 0, 302, 302, 302, 302, 302, + 302, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 302, 0, 0, 302, 302, 302, 302, 302, 302, + 303, 303, 303, 303, 303, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 303, 0, 0, 303, + 0, 0, 0, 0, 0, 0, 303, 303, 303, 303, + 303, 303, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 303, 303, 303, 303, 303, + 303, 304, 304, 304, 304, 304, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 304, 0, 0, 0, 0, 0, 0, 304, 304, 304, + 304, 304, 304, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 304, 304, 304, 304, + 304, 304, 305, 305, 305, 305, 305, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 305, 0, 0, 0, 0, 0, 0, 305, 305, + 305, 305, 305, 305, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 305, 305, 305, + 305, 305, 305, 307, 307, 307, 307, 307, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 307, 0, 0, 0, 0, 0, 0, 307, + + 307, 307, 307, 307, 307, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 307, 307, + 307, 307, 307, 307, 312, 0, 0, 0, 0, 0, + 0, 312, 312, 312, 312, 312, 312, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 312, 312, 312, 312, 312, 312, 313, 313, 313, 313, + 313, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 313, 0, 0, 0, 0, + + 0, 0, 313, 313, 313, 313, 313, 313, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 313, 313, 313, 313, 313, 313, 326, 326, 326, + 326, 326, 0, 326, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 326, 0, 0, 0, + 0, 0, 0, 326, 326, 326, 326, 326, 326, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 326, + 0, 0, 326, 326, 326, 326, 326, 326, 327, 327, + + 327, 327, 0, 0, 327, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 327, 0, 0, + 0, 0, 0, 0, 327, 327, 327, 327, 327, 327, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 327, 0, 0, 327, 327, 327, 327, 327, 327, 331, + 331, 331, 331, 331, 0, 0, 0, 0, 0, 0, + 331, 0, 0, 0, 0, 0, 0, 0, 331, 0, + 0, 0, 0, 0, 0, 331, 331, 331, 331, 331, + 331, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 331, 0, 0, 331, 331, 331, 331, 331, 331, + 332, 332, 332, 332, 0, 0, 0, 0, 0, 0, + 0, 332, 0, 0, 0, 0, 0, 0, 0, 332, + 0, 0, 0, 0, 0, 0, 332, 332, 332, 332, + 332, 332, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 332, 0, 0, 332, 332, 332, 332, 332, + 332, 333, 333, 333, 333, 333, 0, 0, 0, 0, + 0, 0, 0, 0, 333, 0, 0, 0, 0, 0, + + 333, 0, 0, 0, 0, 0, 0, 333, 333, 333, + 333, 333, 333, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 333, 0, 0, 333, 333, 333, 333, + 333, 333, 337, 0, 0, 0, 0, 0, 0, 337, + 337, 337, 337, 337, 337, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 337, 337, + 337, 337, 337, 337, 338, 0, 0, 0, 0, 0, + 0, 338, 338, 338, 338, 338, 338, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 338, 338, 338, 338, 338, 338, 341, 0, 0, 0, + 0, 0, 0, 341, 341, 341, 341, 341, 341, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 341, 341, 341, 341, 341, 341, 342, 342, + 342, 342, 342, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 342, 0, 0, + 0, 0, 0, 0, 342, 342, 342, 342, 342, 342, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 342, 342, 342, 342, 342, 342, 344, + 344, 344, 344, 344, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 344, 0, + 0, 0, 0, 0, 0, 344, 344, 344, 344, 344, + 344, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 344, 344, 344, 344, 344, 344, + 361, 0, 0, 0, 0, 0, 0, 361, 361, 361, + + 361, 361, 361, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 361, 361, 361, 361, + 361, 361, 365, 0, 0, 0, 0, 0, 0, 365, + 365, 365, 365, 365, 365, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 365, 365, + 365, 365, 365, 365, 366, 366, 366, 366, 366, 0, + 0, 0, 0, 0, 0, 0, 0, 366, 0, 0, + 0, 0, 0, 366, 0, 0, 0, 0, 0, 0, + + 366, 366, 366, 366, 366, 366, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 366, 0, 0, 366, + 366, 366, 366, 366, 366, 371, 0, 0, 0, 0, + 0, 0, 371, 0, 371, 0, 0, 0, 0, 371, + 371, 0, 0, 371, 0, 0, 0, 0, 371, 0, + 0, 0, 0, 0, 371, 0, 0, 0, 0, 0, + 371, 0, 371, 0, 0, 0, 0, 371, 371, 0, + 0, 371, 376, 0, 0, 0, 0, 0, 0, 376, + 376, 376, 376, 376, 376, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 376, 376, + 376, 376, 376, 376, 377, 0, 0, 0, 0, 0, + 0, 377, 377, 377, 377, 377, 377, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 377, 377, 377, 377, 377, 377, 378, 0, 0, 0, + 0, 0, 0, 378, 378, 378, 378, 378, 378, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 378, 378, 378, 378, 378, 378, 390, 0, + 0, 0, 0, 0, 0, 390, 390, 390, 390, 390, + 390, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 390, 390, 390, 390, 390, 390, + 391, 0, 0, 0, 0, 0, 0, 391, 391, 391, + 391, 391, 391, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 391, 391, 391, 391, + 391, 391, 392, 0, 0, 0, 0, 0, 0, 392, + + 392, 392, 392, 392, 392, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 392, 392, + 392, 392, 392, 392, 400, 0, 0, 0, 0, 0, + 0, 400, 400, 400, 400, 400, 400, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 400, 400, 400, 400, 400, 400, 401, 0, 0, 0, + 0, 0, 0, 401, 401, 401, 401, 401, 401, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 401, 401, 401, 401, 401, 401, 417, 0, + 0, 0, 0, 0, 0, 417, 417, 417, 417, 417, + 417, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 417, 417, 417, 417, 417, 417, + 429, 0, 0, 0, 0, 0, 0, 429, 429, 429, + 429, 429, 429, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 429, 429, 429, 429, + + 429, 429, 431, 431, 431, 431, 431, 0, 0, 0, + 0, 0, 0, 0, 0, 431, 0, 0, 0, 0, + 0, 431, 0, 0, 0, 0, 0, 0, 431, 431, + 431, 431, 431, 431, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 431, 0, 0, 431, 431, 431, + 431, 431, 431, 440, 440, 440, 440, 440, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 440, 0, 0, 0, 0, 0, 0, 440, + 440, 440, 440, 440, 440, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 440, 440, + 440, 440, 440, 440, 442, 0, 0, 0, 0, 0, + 0, 442, 442, 442, 442, 442, 442, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 442, 442, 442, 442, 442, 442, 449, 0, 0, 0, + 0, 0, 0, 449, 449, 449, 449, 449, 449, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 449, 449, 449, 449, 449, 449, 450, 0, + 0, 0, 0, 0, 0, 450, 450, 450, 450, 450, + 450, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 450, 450, 450, 450, 450, 450, + 455, 0, 0, 0, 0, 0, 0, 455, 455, 455, + 455, 455, 455, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 455, 455, 455, 455, + 455, 455, 456, 0, 0, 0, 0, 0, 0, 456, + + 456, 456, 456, 456, 456, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 456, 456, + 456, 456, 456, 456, 461, 0, 0, 0, 0, 0, + 0, 461, 461, 461, 461, 461, 461, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 461, 461, 461, 461, 461, 461, 462, 0, 0, 0, + 0, 0, 0, 462, 462, 462, 462, 462, 462, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 462, 462, 462, 462, 462, 462, 467, 0, + 0, 0, 0, 0, 0, 467, 467, 467, 467, 467, + 467, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 467, 467, 467, 467, 467, 467, + 482, 0, 0, 482, 482, 482, 482, 482, 482, 482, + 482, 482, 482, 483, 483, 0, 483, 483, 484, 0, + 0, 484, 484, 484, 484, 484, 484, 484, 484, 484, + 484, 485, 485, 0, 485, 485, 486, 0, 0, 486, + + 486, 487, 0, 487, 487, 0, 487, 487, 488, 488, + 488, 488, 488, 488, 488, 488, 488, 488, 489, 489, + 489, 489, 489, 489, 489, 489, 489, 489, 489, 489, + 489, 491, 491, 0, 491, 491, 492, 492, 492, 492, + 492, 492, 492, 492, 492, 492, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, 494, - 494, 495, 495, 495, 495, 495, 495, 495, 495, 495, - 496, 496, 0, 496, 496, 497, 497, 497, 497, 497, - - 497, 497, 497, 497, 498, 498, 0, 498, 498, 499, - 499, 499, 499, 499, 499, 499, 499, 499, 500, 500, - 500, 500, 500, 500, 500, 500, 500, 501, 501, 501, - 501, 501, 501, 501, 501, 501, 501, 501, 501, 502, - 502, 502, 502, 502, 502, 502, 502, 502, 503, 503, - 503, 503, 503, 503, 503, 503, 503, 504, 504, 504, - 0, 504, 505, 505, 505, 505, 505, 505, 505, 505, - 505, 505, 505, 505, 506, 506, 506, 0, 506, 507, - 507, 507, 507, 0, 507, 507, 507, 507, 507, 507, - 508, 508, 508, 0, 508, 509, 0, 509, 509, 509, - - 509, 509, 509, 509, 509, 509, 510, 0, 510, 510, - 510, 510, 510, 510, 510, 510, 510, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 512, 512, - 512, 0, 512, 513, 513, 513, 513, 513, 513, 513, - 513, 513, 513, 513, 514, 514, 514, 514, 514, 514, - 514, 514, 514, 514, 514, 515, 515, 515, 0, 515, - 516, 516, 516, 0, 0, 0, 516, 0, 0, 516, - 516, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 518, 518, 518, 0, 0, 518, 518, 518, 0, 518, - 518, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 494, 494, 494, 494, 494, 494, 494, 494, 494, 494, + 494, 494, 494, 496, 496, 0, 496, 496, 497, 497, + 497, 497, 497, 497, 497, 497, 497, 497, 498, 498, + 0, 498, 498, 499, 499, 499, 499, 499, 499, 499, + + 499, 499, 499, 500, 500, 500, 500, 500, 500, 500, + 500, 500, 500, 501, 501, 501, 503, 503, 503, 503, + 503, 503, 503, 503, 503, 503, 504, 504, 0, 504, + 504, 504, 504, 504, 504, 504, 504, 504, 504, 505, + 505, 505, 505, 505, 505, 505, 505, 505, 505, 505, + 505, 505, 506, 506, 506, 506, 506, 506, 506, 506, + 506, 506, 506, 506, 506, 506, 507, 507, 507, 507, + 507, 507, 507, 507, 507, 507, 507, 507, 507, 507, + 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, + 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, + + 510, 510, 510, 510, 511, 0, 0, 511, 511, 511, + 511, 511, 511, 511, 511, 511, 511, 513, 513, 513, + 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, + 513, 515, 515, 515, 515, 516, 516, 516, 516, 516, + 516, 0, 516, 516, 516, 516, 516, 516, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 521, 521, 521, 521, 522, + 522, 522, 522, 522, 522, 0, 522, 522, 522, 522, + 522, 522, 523, 0, 0, 523, 523, 523, 523, 523, + + 523, 523, 523, 523, 523, 524, 0, 0, 524, 524, + 524, 524, 524, 524, 524, 524, 524, 524, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 528, 528, 0, 528, 528, 529, + 529, 529, 529, 529, 529, 529, 529, 529, 529, 529, + 529, 529, 531, 531, 531, 531, 532, 532, 532, 532, + 532, 532, 532, 532, 532, 532, 532, 532, 532, 533, + 0, 0, 533, 533, 533, 533, 533, 533, 533, 533, + 533, 533, 534, 534, 534, 534, 534, 534, 534, 534, + + 534, 534, 534, 534, 534, 535, 535, 535, 535, 535, + 0, 0, 535, 535, 535, 535, 535, 535, 536, 536, + 536, 536, 536, 536, 536, 536, 536, 536, 536, 536, + 536, 537, 537, 537, 537, 537, 537, 537, 537, 537, + 537, 537, 537, 537, 538, 538, 0, 538, 538, 539, + 539, 539, 539, 539, 539, 539, 539, 539, 539, 539, + 539, 539, 541, 541, 541, 541, 542, 542, 0, 542, + 542, 542, 542, 542, 542, 542, 542, 542, 542, 543, + 543, 543, 543, 543, 543, 543, 543, 543, 543, 543, + 543, 543, 544, 544, 0, 544, 544, 544, 544, 544, + + 544, 544, 544, 544, 544, 545, 545, 545, 545, 545, + 545, 545, 545, 545, 545, 545, 545, 545, 546, 546, + 546, 546, 546, 0, 0, 546, 546, 546, 546, 546, + 546, 549, 549, 549, 549, 0, 0, 0, 0, 549, + 0, 0, 549, 549, 550, 550, 550, 550, 0, 0, + 0, 550, 550, 550, 0, 550, 550, 551, 551, 551, + 551, 551, 551, 551, 551, 551, 551, 552, 552, 552, + 552, 552, 552, 552, 552, 552, 552, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, + 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, @@ -833,38 +1775,35 @@ static yyconst short int yy_chk[2462] = 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, 481, - 481 + 481, 481, 481 } ; #line 1 "<stdin>" -#define INITIAL 0 -#define YY_STACK_USED 1 -#define mediaquery 1 YY_DECL - { +{ register yy_state_type yy_current_state; register UChar *yy_cp, *yy_bp; register int yy_act; while ( 1 ) /* loops until end-of-file is reached */ { - yy_cp = yy_c_buf_p; + yy_cp = (yy_c_buf_p); /* Support of yytext. */ - *yy_cp = yy_hold_char; + *yy_cp = (yy_hold_char); /* yy_bp points to the position in yy_ch_buf of the start of * the current run. */ yy_bp = yy_cp; - yy_current_state = yy_start; + yy_current_state = (yy_start); do { register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; if ( yy_accept[yy_current_state] ) { - yy_last_accepting_state = yy_current_state; - yy_last_accepting_cpos = yy_cp; + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; } while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) { @@ -875,37 +1814,37 @@ YY_DECL yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; ++yy_cp; } - while ( yy_base[yy_current_state] != 2401 ); + while ( yy_base[yy_current_state] != 6578 ); yy_find_action: yy_act = yy_accept[yy_current_state]; if ( yy_act == 0 ) { /* have to back up */ - yy_cp = yy_last_accepting_cpos; - yy_current_state = yy_last_accepting_state; + yy_cp = (yy_last_accepting_cpos); + yy_current_state = (yy_last_accepting_state); yy_act = yy_accept[yy_current_state]; } YY_DO_BEFORE_ACTION; - - switch ( yy_act ) { /* beginning of action switch */ case 0: /* must back up */ /* undo the effects of YY_DO_BEFORE_ACTION */ - *yy_cp = yy_hold_char; - yy_cp = yy_last_accepting_cpos; - yy_current_state = yy_last_accepting_state; + *yy_cp = (yy_hold_char); + yy_cp = (yy_last_accepting_cpos); + yy_current_state = (yy_last_accepting_state); goto yy_find_action; case 1: +/* rule 1 can match eol */ YY_RULE_SETUP #line 31 "<stdin>" {countLines(); /* ignore comments */ } YY_BREAK case 2: +/* rule 2 can match eol */ YY_RULE_SETUP #line 33 "<stdin>" {countLines(); yyTok = WHITESPACE; return yyTok;} @@ -966,11 +1905,13 @@ YY_RULE_SETUP {BEGIN(mediaquery); yyTok = VARIABLES_FOR; return yyTok; } YY_BREAK case 14: +/* rule 14 can match eol */ YY_RULE_SETUP #line 47 "<stdin>" {yyTok = STRING; return yyTok;} YY_BREAK case 15: +/* rule 15 can match eol */ YY_RULE_SETUP #line 48 "<stdin>" {yyTok = IDENT; return yyTok;} @@ -986,6 +1927,7 @@ YY_RULE_SETUP {yyTok = HEX; return yyTok;} YY_BREAK case 18: +/* rule 18 can match eol */ YY_RULE_SETUP #line 52 "<stdin>" {yyTok = IDSEL; return yyTok;} @@ -1071,11 +2013,13 @@ YY_RULE_SETUP {yyTok = WEBKIT_KEYFRAME_RULE_SYM; return yyTok; } YY_BREAK case 35: +/* rule 35 can match eol */ YY_RULE_SETUP #line 71 "<stdin>" {yyTok = ATKEYWORD; return yyTok; } YY_BREAK case 36: +/* rule 36 can match eol */ YY_RULE_SETUP #line 73 "<stdin>" {yyTok = IMPORTANT_SYM; return yyTok;} @@ -1171,6 +2115,7 @@ YY_RULE_SETUP {yyTok = KHERZ; return yyTok;} YY_BREAK case 55: +/* rule 55 can match eol */ YY_RULE_SETUP #line 93 "<stdin>" {yyTok = DIMEN; return yyTok;} @@ -1196,21 +2141,25 @@ YY_RULE_SETUP {yyTok = NOTFUNCTION; return yyTok;} YY_BREAK case 60: +/* rule 60 can match eol */ YY_RULE_SETUP #line 99 "<stdin>" {yyTok = URI; return yyTok;} YY_BREAK case 61: +/* rule 61 can match eol */ YY_RULE_SETUP #line 100 "<stdin>" {yyTok = URI; return yyTok;} YY_BREAK case 62: +/* rule 62 can match eol */ YY_RULE_SETUP #line 101 "<stdin>" { yyTok = VARCALL; return yyTok; } YY_BREAK case 63: +/* rule 63 can match eol */ YY_RULE_SETUP #line 102 "<stdin>" {yyTok = FUNCTION; return yyTok;} @@ -1242,6 +2191,7 @@ YY_RULE_SETUP #line 111 "<stdin>" ECHO; YY_BREAK +#line 2746 "<stdout>" case YY_END_OF_BUFFER: yy_c_buf_p = yy_cp - 1; yy_cp = yy_c_buf_p; @@ -1255,4 +2205,4 @@ case YY_STATE_EOF(forkeyword): "fatal flex scanner internal error--no action found" ); } /* end of action switch */ } /* end of scanning one token */ - } /* end of yylex */ +} /* end of yylex */ diff --git a/src/3rdparty/webkit/WebCore/history/qt/HistoryItemQt.cpp b/src/3rdparty/webkit/WebCore/history/qt/HistoryItemQt.cpp index 8bbd233..c5fb069 100644 --- a/src/3rdparty/webkit/WebCore/history/qt/HistoryItemQt.cpp +++ b/src/3rdparty/webkit/WebCore/history/qt/HistoryItemQt.cpp @@ -25,8 +25,9 @@ bool WebCore::HistoryItem::restoreState(QDataStream& in, int version) { - // we support up to version 2 - if (version > 2) + // we only support version 1 for now + + if (version != 1) return false; WebCore::String url; @@ -47,7 +48,6 @@ bool WebCore::HistoryItem::restoreState(QDataStream& in, int version) WebCore::IntPoint scrollPoint; WTF::Vector<int> weeklyVisitCounts; WTF::Vector<int> dailyVisitCounts; - long long documentSequenceNumber; // bool loadFormdata; // WebCore::String formContentType; // WTF::Vector<char> formData; @@ -79,12 +79,6 @@ bool WebCore::HistoryItem::restoreState(QDataStream& in, int version) setTitle(title); setAlternateTitle(altTitle); - if (version > 1) - { - in >> documentSequenceNumber; - setDocumentSequenceNumber(documentSequenceNumber); - } - // at the end load userData in >> validUserData; if (validUserData) { @@ -98,16 +92,15 @@ bool WebCore::HistoryItem::restoreState(QDataStream& in, int version) QDataStream& WebCore::HistoryItem::saveState(QDataStream& out, int version) const { + // we only support version 1 for now. + if (version != 1) + return out; + out << urlString() << title() << alternateTitle() << lastVisitedTime(); out << originalURLString() << referrer() << target() << parent(); out << lastVisitWasHTTPNonGet() << lastVisitWasFailure() << isTargetItem(); out << visitCount() << documentState() << scrollPoint(); out << dailyVisitCounts() << weeklyVisitCounts(); - - // Since version 2 - Q_ASSERT_X(version > 1, "HistoryItem::saveState()", "Stream version should be greater than 1"); - out << documentSequenceNumber(); - /*if (m_formData) { out << true; out << formContentType(); diff --git a/src/3rdparty/webkit/WebCore/html/HTMLInputElement.cpp b/src/3rdparty/webkit/WebCore/html/HTMLInputElement.cpp index 6a214ab..4c5a93e 100644 --- a/src/3rdparty/webkit/WebCore/html/HTMLInputElement.cpp +++ b/src/3rdparty/webkit/WebCore/html/HTMLInputElement.cpp @@ -740,7 +740,11 @@ void HTMLInputElement::aboutToUnload() bool HTMLInputElement::shouldUseInputMethod() const { - return m_type == TEXT || m_type == SEARCH || m_type == ISINDEX; + // The reason IME's are disabled for the password field is because IMEs + // can access the underlying password and display it in clear text -- + // e.g. you can use it to access the stored password for any site + // with only trivial effort. + return isTextField() && inputType() != PASSWORD; } void HTMLInputElement::handleFocusEvent() diff --git a/src/3rdparty/webkit/WebCore/html/HTMLMetaElement.cpp b/src/3rdparty/webkit/WebCore/html/HTMLMetaElement.cpp index cf667ca..6c49323 100644 --- a/src/3rdparty/webkit/WebCore/html/HTMLMetaElement.cpp +++ b/src/3rdparty/webkit/WebCore/html/HTMLMetaElement.cpp @@ -63,9 +63,15 @@ void HTMLMetaElement::insertedIntoDocument() void HTMLMetaElement::process() { + if (!inDocument() || m_content.isNull()) + return; + + if (equalIgnoringCase(name(), "viewport")) + document()->processViewport(m_content); + // Get the document to process the tag, but only if we're actually part of DOM tree (changing a meta tag while // it's not in the tree shouldn't have any effect on the document) - if (inDocument() && !m_equiv.isNull() && !m_content.isNull()) + if (!m_equiv.isNull()) document()->processHttpEquiv(m_equiv, m_content); } diff --git a/src/3rdparty/webkit/WebCore/loader/FrameLoader.cpp b/src/3rdparty/webkit/WebCore/loader/FrameLoader.cpp index 0323e97..316caab 100644 --- a/src/3rdparty/webkit/WebCore/loader/FrameLoader.cpp +++ b/src/3rdparty/webkit/WebCore/loader/FrameLoader.cpp @@ -1274,7 +1274,11 @@ bool FrameLoader::requestObject(RenderEmbeddedObject* renderer, const String& ur bool useFallback; if (shouldUsePlugin(completedURL, mimeType, renderer->hasFallbackContent(), useFallback)) { Settings* settings = m_frame->settings(); - if (!allowPlugins(AboutToInstantiatePlugin) + if ((!allowPlugins(AboutToInstantiatePlugin) + // Application plugins are plugins implemented by the user agent, for example Qt plugins, + // as opposed to third-party code such as flash. The user agent decides whether or not they are + // permitted, rather than WebKit. + && !MIMETypeRegistry::isApplicationPluginMIMEType(mimeType)) || (!settings->isJavaEnabled() && MIMETypeRegistry::isJavaAppletMIMEType(mimeType))) return false; if (isDocumentSandboxed(SandboxPlugins)) diff --git a/src/3rdparty/webkit/WebCore/page/ChromeClient.h b/src/3rdparty/webkit/WebCore/page/ChromeClient.h index 34e2893..0bfdbaf 100644 --- a/src/3rdparty/webkit/WebCore/page/ChromeClient.h +++ b/src/3rdparty/webkit/WebCore/page/ChromeClient.h @@ -56,6 +56,7 @@ namespace WebCore { class Widget; struct FrameLoadRequest; + struct ViewportArguments; struct WindowFeatures; #if USE(ACCELERATED_COMPOSITING) @@ -145,6 +146,8 @@ namespace WebCore { virtual void setToolTip(const String&, TextDirection) = 0; + virtual void didReceiveViewportArguments(Frame*, const ViewportArguments&) const { } + virtual void print(Frame*) = 0; #if ENABLE(DATABASE) @@ -211,6 +214,9 @@ namespace WebCore { // Sets a flag to specify that the view needs to be updated, so we need // to do an eager layout before the drawing. virtual void scheduleCompositingLayerSync() = 0; + // Returns whether or not the client can render the composited layer, + // regardless of the settings. + virtual bool allowsAcceleratedCompositing() const { return true; } #endif virtual bool supportsFullscreenForNode(const Node*) { return false; } @@ -231,10 +237,11 @@ namespace WebCore { #endif #if ENABLE(WIDGETS_10_SUPPORT) - virtual bool isDocked() { return false; } + virtual bool isWindowed() { return false; } virtual bool isFloating() { return false; } - virtual bool isApplication() { return false; } virtual bool isFullscreen() { return false; } + virtual bool isMaximized() { return false; } + virtual bool isMinimized() { return false; } #endif protected: diff --git a/src/3rdparty/webkit/WebCore/page/FocusController.cpp b/src/3rdparty/webkit/WebCore/page/FocusController.cpp index 089fb8f..fdd117b 100644 --- a/src/3rdparty/webkit/WebCore/page/FocusController.cpp +++ b/src/3rdparty/webkit/WebCore/page/FocusController.cpp @@ -341,51 +341,96 @@ bool FocusController::advanceFocusDirectionally(FocusDirection direction, Keyboa return true; } -static void updateFocusCandidateIfCloser(Node* focusedNode, Node* candidate, long long distance, FocusCandidate& closestFocusCandidate) +// FIXME: Make this method more modular, and simpler to understand and maintain. +static void updateFocusCandidateIfCloser(Node* focusedNode, const FocusCandidate& candidate, FocusCandidate& closest) { - // Bail out if |distance| is bigger than the current closest candidate. - if (distance >= closestFocusCandidate.distance) + bool sameDocument = candidate.document() == closest.document(); + if (sameDocument) { + if (closest.alignment > candidate.alignment + || (closest.parentAlignment && candidate.alignment > closest.parentAlignment)) + return; + } else if (closest.alignment > candidate.alignment + && (closest.parentAlignment && candidate.alignment > closest.parentAlignment)) return; - // If |focusedNode| and |candidate| are in the same document AND - // current |closestFocusCandidadte| is not in an {i}frame that is - // preferable to get focused. - if (focusedNode->document() == candidate->document() - && distance < closestFocusCandidate.parentDistance) { - closestFocusCandidate.node = candidate; - closestFocusCandidate.distance = distance; - closestFocusCandidate.parentDistance = maxDistance(); - } else if (focusedNode->document() != candidate->document()) { - // If the |focusedNode| is in an inner document and the |candidate| is - // in a different document, we only consider to change focus if there is - // not another already good focusable candidate in the same document as - // |focusedNode|. - if (!((isInRootDocument(candidate) && !isInRootDocument(focusedNode)) - && focusedNode->document() == closestFocusCandidate.document())) { - closestFocusCandidate.node = candidate; - closestFocusCandidate.distance = distance; - } + if (candidate.alignment != None + || (closest.parentAlignment >= candidate.alignment + && closest.document() == candidate.document())) { + + // If we are now in an higher precedent case, lets reset the current closest's + // distance so we force it to be bigger than any result we will get from + // spatialDistance(). + if (closest.alignment < candidate.alignment + && closest.parentAlignment < candidate.alignment) + closest.distance = maxDistance(); + + closest.alignment = candidate.alignment; + } + + // Bail out if candidate's distance is larger than that of the closest candidate. + if (candidate.distance >= closest.distance) + return; + + if (closest.isNull()) { + closest = candidate; + return; + } + + // If the focused node and the candadate are in the same document and current + // closest candidate is not in an {i}frame that is preferable to get focused ... + if (focusedNode->document() == candidate.document() + && candidate.distance < closest.parentDistance) + closest = candidate; + else if (focusedNode->document() != candidate.document()) { + // If the focusedNode is in an inner document and candidate is in a + // different document, we only consider to change focus if there is not + // another already good focusable candidate in the same document as focusedNode. + if (!((isInRootDocument(candidate.node) && !isInRootDocument(focusedNode)) + && focusedNode->document() == closest.document())) + closest = candidate; } } -void FocusController::findFocusableNodeInDirection(Document* document, Node* focusedNode, FocusDirection direction, KeyboardEvent* event, FocusCandidate& closestFocusCandidate) +void FocusController::findFocusableNodeInDirection(Document* document, Node* focusedNode, + FocusDirection direction, KeyboardEvent* event, + FocusCandidate& closestFocusCandidate, + const FocusCandidate& candidateParent) { ASSERT(document); + ASSERT(candidateParent.isNull() || static_cast<HTMLFrameOwnerElement*>(candidateParent.node)); - // Walk all the child nodes and update focusCandidate if we find a nearer node. + // Walk all the child nodes and update closestFocusCandidate if we find a nearer node. for (Node* candidate = document->firstChild(); candidate; candidate = candidate->traverseNextNode()) { // Inner documents case. + if (candidate->isFrameOwnerElement()) deepFindFocusableNodeInDirection(focusedNode, candidate, direction, event, closestFocusCandidate); else if (candidate != focusedNode && candidate->isKeyboardFocusable(event)) { - long long distance = distanceInDirection(focusedNode, candidate, - direction, closestFocusCandidate); - updateFocusCandidateIfCloser(focusedNode, candidate, distance, closestFocusCandidate); + FocusCandidate currentFocusCandidate(candidate); + + // Get distance and alignment from current candidate. + distanceDataForNode(direction, focusedNode, currentFocusCandidate); + + // Bail out if distance is maximum. + if (currentFocusCandidate.distance == maxDistance()) + continue; + + // If candidateParent is not null, it means that we are in a recursive call + // from deepFineFocusableNodeInDirection (i.e. processing an element in an iframe), + // and holds the distance and alignment data of the iframe element itself. + if (!candidateParent.isNull()) { + currentFocusCandidate.parentAlignment = candidateParent.alignment; + currentFocusCandidate.parentDistance = candidateParent.distance; + } + + updateFocusCandidateIfCloser(focusedNode, currentFocusCandidate, closestFocusCandidate); } } } -void FocusController::deepFindFocusableNodeInDirection(Node* focusedNode, Node* candidate, FocusDirection direction, KeyboardEvent* event, FocusCandidate& closestFocusCandidate) +void FocusController::deepFindFocusableNodeInDirection(Node* focusedNode, Node* candidate, + FocusDirection direction, KeyboardEvent* event, + FocusCandidate& closestFocusCandidate) { HTMLFrameOwnerElement* owner = static_cast<HTMLFrameOwnerElement*>(candidate); if (!owner->contentFrame()) @@ -400,20 +445,12 @@ void FocusController::deepFindFocusableNodeInDirection(Node* focusedNode, Node* else { // Check if the current {i}frame element itself is a good candidate // to move focus to. If it is, then we traverse its inner nodes. - // Lets pass a copy of the best candidate, to not get fooled by a - // frame without focusable elements. - FocusCandidate focusCandidateCopy = closestFocusCandidate; - long long distance = distanceInDirection(focusedNode, candidate, direction, focusCandidateCopy); - if (distance < focusCandidateCopy.distance) { - focusCandidateCopy.parentAlignment = focusCandidateCopy.alignment; - focusCandidateCopy.parentDistance = distance; - - findFocusableNodeInDirection(innerDocument, focusedNode, direction, event, focusCandidateCopy); - - // If we really have an inner closer focus candidate node, take it. - if (closestFocusCandidate.node != focusCandidateCopy.node) - closestFocusCandidate = focusCandidateCopy; - } + FocusCandidate candidateParent = FocusCandidate(candidate); + distanceDataForNode(direction, focusedNode, candidateParent); + + // FIXME: Consider alignment? + if (candidateParent.distance < closestFocusCandidate.distance) + findFocusableNodeInDirection(innerDocument, focusedNode, direction, event, closestFocusCandidate, candidateParent); } } diff --git a/src/3rdparty/webkit/WebCore/page/FocusController.h b/src/3rdparty/webkit/WebCore/page/FocusController.h index 75591c7..dfa3780 100644 --- a/src/3rdparty/webkit/WebCore/page/FocusController.h +++ b/src/3rdparty/webkit/WebCore/page/FocusController.h @@ -27,6 +27,7 @@ #define FocusController_h #include "FocusDirection.h" +#include "SpatialNavigation.h" #include <wtf/Forward.h> #include <wtf/Noncopyable.h> #include <wtf/RefPtr.h> @@ -38,7 +39,6 @@ class Frame; class KeyboardEvent; class Node; class Page; -struct FocusCandidate; class FocusController : public Noncopyable { public: @@ -63,7 +63,8 @@ private: bool advanceFocusDirectionally(FocusDirection, KeyboardEvent*); bool advanceFocusInDocumentOrder(FocusDirection, KeyboardEvent*, bool initialFocus); - void findFocusableNodeInDirection(Document*, Node*, FocusDirection, KeyboardEvent*, FocusCandidate&); + void findFocusableNodeInDirection(Document*, Node*, FocusDirection, KeyboardEvent*, FocusCandidate& closestFocusCandidate, + const FocusCandidate& parentCandidate = FocusCandidate()); void deepFindFocusableNodeInDirection(Node*, Node*, FocusDirection, KeyboardEvent*, FocusCandidate&); Page* m_page; diff --git a/src/3rdparty/webkit/WebCore/page/FrameView.cpp b/src/3rdparty/webkit/WebCore/page/FrameView.cpp index 45764de..39c92de 100644 --- a/src/3rdparty/webkit/WebCore/page/FrameView.cpp +++ b/src/3rdparty/webkit/WebCore/page/FrameView.cpp @@ -1067,6 +1067,7 @@ void FrameView::scrollPositionChanged() if (!m_nestedLayoutCount) { if (RenderView* root = m_frame->contentRenderer()) { root->updateWidgetPositions(); + root->layer()->updateRepaintRectsAfterScroll(); #if USE(ACCELERATED_COMPOSITING) if (root->usesCompositing()) root->compositor()->updateCompositingLayers(CompositingUpdateOnScroll); diff --git a/src/3rdparty/webkit/WebCore/page/SpatialNavigation.cpp b/src/3rdparty/webkit/WebCore/page/SpatialNavigation.cpp index 86c9c5d..890eacd 100644 --- a/src/3rdparty/webkit/WebCore/page/SpatialNavigation.cpp +++ b/src/3rdparty/webkit/WebCore/page/SpatialNavigation.cpp @@ -46,16 +46,21 @@ static bool areRectsFullyAligned(FocusDirection, const IntRect&, const IntRect&) static bool areRectsPartiallyAligned(FocusDirection, const IntRect&, const IntRect&); static bool isRectInDirection(FocusDirection, const IntRect&, const IntRect&); static void deflateIfOverlapped(IntRect&, IntRect&); +static bool checkNegativeCoordsForNode(Node*, const IntRect&); -long long distanceInDirection(Node* start, Node* dest, FocusDirection direction, FocusCandidate& candidate) +void distanceDataForNode(FocusDirection direction, Node* start, FocusCandidate& candidate) { RenderObject* startRender = start->renderer(); - if (!startRender) - return maxDistance(); + if (!startRender) { + candidate.distance = maxDistance(); + return; + } - RenderObject* destRender = dest->renderer(); - if (!destRender) - return maxDistance(); + RenderObject* destRender = candidate.node->renderer(); + if (!destRender) { + candidate.distance = maxDistance(); + return; + } IntRect curRect = renderRectRelativeToRootDocument(startRender); IntRect targetRect = renderRectRelativeToRootDocument(destRender); @@ -64,40 +69,34 @@ long long distanceInDirection(Node* start, Node* dest, FocusDirection direction, // deflate both. deflateIfOverlapped(curRect, targetRect); + // If empty rects or negative width or height, bail out. if (curRect.isEmpty() || targetRect.isEmpty() - || targetRect.x() < 0 || targetRect.y() < 0) - return maxDistance(); + || targetRect.width() <= 0 || targetRect.height() <= 0) { + candidate.distance = maxDistance(); + return; + } - if (!isRectInDirection(direction, curRect, targetRect)) - return maxDistance(); + // Negative coordinates can be used if node is scrolled up offscreen. + if (!checkNegativeCoordsForNode(start, curRect)) { + candidate.distance = maxDistance(); + return; + } + + if (!checkNegativeCoordsForNode(candidate.node, targetRect)) { + candidate.distance = maxDistance(); + return; + } + + if (!isRectInDirection(direction, curRect, targetRect)) { + candidate.distance = maxDistance(); + return; + } // The distance between two nodes is not to be considered alone when evaluating/looking // for the best focus candidate node. Alignment of rects can be also a good point to be // considered in order to make the algorithm to behavior in a more intuitive way. - RectsAlignment alignment = alignmentForRects(direction, curRect, targetRect); - - bool sameDocument = dest->document() == candidate.document(); - if (sameDocument) { - if (candidate.alignment > alignment || (candidate.parentAlignment && alignment > candidate.parentAlignment)) - return maxDistance(); - } else if (candidate.alignment > alignment && (candidate.parentAlignment && alignment > candidate.parentAlignment)) - return maxDistance(); - - // FIXME_tonikitoo: simplify the logic here ! - if (alignment != None - || (!candidate.isNull() && candidate.parentAlignment >= alignment - && candidate.document() == dest->document())) { - - // If we are now in an higher precedent case, lets reset the current |candidate|'s - // |distance| so we force it to be bigger than the result we will get from - // |spatialDistance| (see below). - if (candidate.alignment < alignment && candidate.parentAlignment < alignment) - candidate.distance = maxDistance(); - - candidate.alignment = alignment; - } - - return spatialDistance(direction, curRect, targetRect); + candidate.alignment = alignmentForRects(direction, curRect, targetRect); + candidate.distance = spatialDistance(direction, curRect, targetRect); } // FIXME: This function does not behave correctly with transformed frames. @@ -107,6 +106,11 @@ static IntRect renderRectRelativeToRootDocument(RenderObject* render) IntRect rect(render->absoluteClippedOverflowRect()); + if (rect.isEmpty()) { + Element* e = static_cast<Element*>(render->node()); + rect = e->getRect(); + } + // In cases when the |render|'s associated node is in a scrollable inner // document, we only consider its scrollOffset if it is not offscreen. Node* node = render->node(); @@ -432,6 +436,9 @@ bool hasOffscreenRect(Node* node) return true; IntRect rect(render->absoluteClippedOverflowRect()); + if (rect.isEmpty()) + return true; + return !containerViewportRect.intersects(rect); } @@ -500,4 +507,24 @@ static void deflateIfOverlapped(IntRect& a, IntRect& b) b.inflate(fudgeFactor); } +static bool checkNegativeCoordsForNode(Node* node, const IntRect& curRect) +{ + ASSERT(node || node->renderer()); + + if (curRect.x() > 0 && curRect.y() > 0) + return true; + + bool canBeScrolled = false; + + RenderObject* renderer = node->renderer(); + for (; renderer; renderer = renderer->parent()) { + if (renderer->isBox() && toRenderBox(renderer)->canBeScrolledAndHasScrollableArea()) { + canBeScrolled = true; + break; + } + } + + return canBeScrolled; +} + } // namespace WebCore diff --git a/src/3rdparty/webkit/WebCore/page/SpatialNavigation.h b/src/3rdparty/webkit/WebCore/page/SpatialNavigation.h index 7c183df..90ff1cf 100644 --- a/src/3rdparty/webkit/WebCore/page/SpatialNavigation.h +++ b/src/3rdparty/webkit/WebCore/page/SpatialNavigation.h @@ -118,7 +118,7 @@ struct FocusCandidate { RectsAlignment parentAlignment; }; -long long distanceInDirection(Node*, Node*, FocusDirection, FocusCandidate&); +void distanceDataForNode(FocusDirection direction, Node* start, FocusCandidate& candidate); bool scrollInDirection(Frame*, FocusDirection); void scrollIntoView(Element*); bool hasOffscreenRect(Node*); diff --git a/src/3rdparty/webkit/WebCore/page/qt/EventHandlerQt.cpp b/src/3rdparty/webkit/WebCore/page/qt/EventHandlerQt.cpp index 2fcce5b..5b24eae 100644 --- a/src/3rdparty/webkit/WebCore/page/qt/EventHandlerQt.cpp +++ b/src/3rdparty/webkit/WebCore/page/qt/EventHandlerQt.cpp @@ -51,7 +51,7 @@ #include "NotImplemented.h" QT_BEGIN_NAMESPACE -Q_DECL_IMPORT extern bool qt_tab_all_widgets; // from qapplication.cpp +Q_GUI_EXPORT extern bool qt_tab_all_widgets; // from qapplication.cpp QT_END_NAMESPACE namespace WebCore { diff --git a/src/3rdparty/webkit/WebCore/platform/Arena.h b/src/3rdparty/webkit/WebCore/platform/Arena.h index b6f6931..bc49307 100644 --- a/src/3rdparty/webkit/WebCore/platform/Arena.h +++ b/src/3rdparty/webkit/WebCore/platform/Arena.h @@ -44,7 +44,7 @@ namespace WebCore { -typedef unsigned long uword; +typedef uintptr_t uword; struct Arena { Arena* next; // next arena diff --git a/src/3rdparty/webkit/WebCore/platform/MIMETypeRegistry.h b/src/3rdparty/webkit/WebCore/platform/MIMETypeRegistry.h index 8801ac1..27c2c3a 100644 --- a/src/3rdparty/webkit/WebCore/platform/MIMETypeRegistry.h +++ b/src/3rdparty/webkit/WebCore/platform/MIMETypeRegistry.h @@ -67,6 +67,10 @@ public: // Check to see if a mime type is a valid Java applet mime type static bool isJavaAppletMIMEType(const String& mimeType); + // Check to see if a mime type is a plugin implemented by the + // browser (e.g. a Qt Plugin). + static bool isApplicationPluginMIMEType(const String& mimeType); + static HashSet<String>& getSupportedImageMIMETypes(); static HashSet<String>& getSupportedImageResourceMIMETypes(); static HashSet<String>& getSupportedImageMIMETypesForEncoding(); diff --git a/src/3rdparty/webkit/WebCore/platform/StaticConstructors.h b/src/3rdparty/webkit/WebCore/platform/StaticConstructors.h index c0a9a53..0d817a4df 100644 --- a/src/3rdparty/webkit/WebCore/platform/StaticConstructors.h +++ b/src/3rdparty/webkit/WebCore/platform/StaticConstructors.h @@ -51,7 +51,7 @@ #ifndef SKIP_STATIC_CONSTRUCTORS_ON_GCC // Define an global in the normal way. -#if COMPILER(MSVC7) +#if COMPILER(MSVC7_OR_LOWER) #define DEFINE_GLOBAL(type, name) \ const type name; #elif COMPILER(WINSCW) @@ -65,7 +65,7 @@ #else // Define an correctly-sized array of pointers to avoid static initialization. // Use an array of pointers instead of an array of char in case there is some alignment issue. -#if COMPILER(MSVC7) +#if COMPILER(MSVC7_OR_LOWER) #define DEFINE_GLOBAL(type, name) \ void * name[(sizeof(type) + sizeof(void *) - 1) / sizeof(void *)]; #elif COMPILER(WINSCW) diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontPlatformDataQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontPlatformDataQt.cpp index 0a1075f..0565deb 100644 --- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontPlatformDataQt.cpp +++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontPlatformDataQt.cpp @@ -58,6 +58,9 @@ FontPlatformData::FontPlatformData(const FontDescription& description, const Ato font.setLetterSpacing(QFont::AbsoluteSpacing, letterSpacing); const bool smallCaps = description.smallCaps(); font.setCapitalization(smallCaps ? QFont::SmallCaps : QFont::MixedCase); +#if QT_VERSION >= QT_VERSION_CHECK(4, 7, 0) + font.setStyleStrategy(QFont::ForceIntegerMetrics); +#endif m_data->bold = font.bold(); m_data->size = font.pointSizeF(); diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontQt.cpp index fd75e34..1e92dcc 100644 --- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontQt.cpp +++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/FontQt.cpp @@ -180,9 +180,7 @@ float Font::floatWidthForComplexText(const TextRun& run, HashSet<const SimpleFon String sanitized = Font::normalizeSpaces(String(run.characters(), run.length())); QString string = fromRawDataWithoutRef(sanitized); - QTextLayout layout(string, font()); - QTextLine line = setupLayout(&layout, run); - int w = int(line.naturalTextWidth()); + int w = QFontMetrics(font()).width(string); // WebKit expects us to ignore word spacing on the first character (as opposed to what Qt does) if (treatAsSpace(run[0])) w -= m_wordSpacing; diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsLayerQt.cpp b/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsLayerQt.cpp index 2913eef..1c4c275 100644 --- a/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsLayerQt.cpp +++ b/src/3rdparty/webkit/WebCore/platform/graphics/qt/GraphicsLayerQt.cpp @@ -32,15 +32,13 @@ #include <QtCore/qmetaobject.h> #include <QtCore/qset.h> #include <QtCore/qtimer.h> -#include <QtGui/qbitmap.h> #include <QtGui/qcolor.h> #include <QtGui/qgraphicseffect.h> #include <QtGui/qgraphicsitem.h> #include <QtGui/qgraphicsscene.h> -#include <QtGui/qmatrix4x4.h> #include <QtGui/qpainter.h> -#include <QtGui/qpalette.h> #include <QtGui/qpixmap.h> +#include <QtGui/qpixmapcache.h> #include <QtGui/qstyleoption.h> namespace WebCore { @@ -134,6 +132,8 @@ public: // the compositor lets us special-case images and colors, so we try to do so enum StaticContentType { HTMLContentType, PixmapContentType, ColorContentType, MediaContentType}; + const GraphicsLayerQtImpl* rootLayer() const; + GraphicsLayerQtImpl(GraphicsLayerQt* newLayer); virtual ~GraphicsLayerQtImpl(); @@ -142,28 +142,25 @@ public: virtual QRectF boundingRect() const; virtual void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*); - // we manage transforms ourselves because transform-origin acts differently in webkit and in Qt + // We manage transforms ourselves because transform-origin acts differently in webkit and in Qt, and we need it as a fallback in case we encounter an un-invertible matrix void setBaseTransform(const TransformationMatrix&); - QTransform computeTransform(const TransformationMatrix& baseTransform) const; void updateTransform(); // let the compositor-API tell us which properties were changed void notifyChange(ChangeMask); + // actual rendering of the web-content into a QPixmap + // We prefer to use our own caching because it gives us a higher level of granularity than QGraphicsItem cache modes - + // sometimes we need to cache the contents even `though the item needs to be updated, e.g. when the background-color is changed. + // TODO: investigate if QGraphicsItem caching can be improved to support that out of the box. + QPixmap recache(const QRegion&); + // called when the compositor is ready for us to show the changes on screen // this is called indirectly from ChromeClientQt::setNeedsOneShotDrawingSynchronization // (meaning the sync would happen together with the next draw) // or ChromeClientQt::scheduleCompositingLayerSync (meaning the sync will happen ASAP) void flushChanges(bool recursive = true, bool forceTransformUpdate = false); - // optimization: when we have an animation running on an element with no contents, that has child-elements with contents, - // ALL of them have to have ItemCoordinateCache and not DeviceCoordinateCache - void adjustCachingRecursively(bool animationIsRunning); - - // optimization: returns true if this or an ancestor has a transform animation running. - // this enables us to use ItemCoordinatesCache while the animation is running, otherwise we have to recache for every frame - bool isTransformAnimationRunning() const; - public slots: // we need to notify the client (aka the layer compositor) when the animation actually starts void notifyAnimationStarted(); @@ -179,6 +176,7 @@ public: GraphicsLayerQt* m_layer; TransformationMatrix m_baseTransform; + TransformationMatrix m_transformRelativeToRootLayer; bool m_transformAnimationRunning; bool m_opacityAnimationRunning; QWeakPointer<MaskEffectQt> m_maskEffect; @@ -207,6 +205,7 @@ public: int m_changeMask; QSizeF m_size; + QPixmapCache::Key m_backingStoreKey; #ifndef QT_NO_ANIMATION QList<QWeakPointer<QAbstractAnimation> > m_animations; #endif @@ -259,9 +258,6 @@ GraphicsLayerQtImpl::GraphicsLayerQtImpl(GraphicsLayerQt* newLayer) // they are ignored and passed to the item below. setEnabled(true); - // we'll set the cache when we know what's going on - setCacheMode(NoCache); - connect(this, SIGNAL(notifyAnimationStartedAsync()), this, SLOT(notifyAnimationStarted()), Qt::QueuedConnection); } @@ -287,80 +283,138 @@ GraphicsLayerQtImpl::~GraphicsLayerQtImpl() #endif } -void GraphicsLayerQtImpl::adjustCachingRecursively(bool animationIsRunning) +const GraphicsLayerQtImpl* GraphicsLayerQtImpl::rootLayer() const { - // optimization: we make sure all our children have ItemCoordinateCache - - // otherwise we end up re-rendering them during the animation - const QList<QGraphicsItem*> children = childItems(); - - for (QList<QGraphicsItem*>::const_iterator it = children.begin(); it != children.end(); ++it) { - if (QGraphicsItem* item = *it) - if (GraphicsLayerQtImpl* layer = qobject_cast<GraphicsLayerQtImpl*>(item->toGraphicsObject())) { - if (layer->m_layer->drawsContent() && layer->m_currentContent.contentType == HTMLContentType) - layer->setCacheMode(animationIsRunning ? QGraphicsItem::ItemCoordinateCache : QGraphicsItem::DeviceCoordinateCache); - } - } + if (const GraphicsLayerQtImpl* parent = qobject_cast<const GraphicsLayerQtImpl*>(parentObject())) + return parent->rootLayer(); + return this; } -void GraphicsLayerQtImpl::updateTransform() -{ - setBaseTransform(isTransformAnimationRunning() ? m_baseTransform : m_layer->transform()); -} -void GraphicsLayerQtImpl::setBaseTransform(const TransformationMatrix& baseTransform) -{ - m_baseTransform = baseTransform; - setTransform(computeTransform(baseTransform)); -} -QTransform GraphicsLayerQtImpl::computeTransform(const TransformationMatrix& baseTransform) const +QPixmap GraphicsLayerQtImpl::recache(const QRegion& regionToUpdate) { - if (!m_layer) - return baseTransform; + if (!m_layer->drawsContent()) + return QPixmap(); - TransformationMatrix computedTransform; + QRegion region = regionToUpdate; + QPixmap pixmap; - // The origin for childrenTransform is always the center of the ancestor which contains the childrenTransform. - // this has to do with how WebCore implements -webkit-perspective and -webkit-perspective-origin, which are the CSS - // attribute that call setChildrenTransform - QPointF offset = -pos() - boundingRect().bottomRight() / 2; + // We might be drawing into an existing cache. + if (!QPixmapCache::find(m_backingStoreKey, &pixmap)) + region = QRegion(QRect(0, 0, m_size.width(), m_size.height())); - for (const GraphicsLayerQtImpl* ancestor = this; (ancestor = qobject_cast<GraphicsLayerQtImpl*>(ancestor->parentObject())); ) { - if (!ancestor->m_state.childrenTransform.isIdentity()) { - const QPointF offset = mapFromItem(ancestor, QPointF(ancestor->m_size.width() / 2, ancestor->m_size.height() / 2)); - computedTransform - .translate(offset.x(), offset.y()) - .multLeft(ancestor->m_state.childrenTransform) - .translate(-offset.x(), -offset.y()); - break; - } + if (m_size != pixmap.size()) { + pixmap = QPixmap(m_size.toSize()); + if (!m_layer->contentsOpaque()) + pixmap.fill(Qt::transparent); + m_pendingContent.regionToUpdate = QRegion(QRect(QPoint(0, 0), m_size.toSize())); } + QPainter painter(&pixmap); + GraphicsContext gc(&painter); + + // Clear the area in cache that we're drawing into + painter.setCompositionMode(QPainter::CompositionMode_Clear); + painter.fillRect(region.boundingRect(), Qt::transparent); + + // Render the actual contents into the cache + painter.setCompositionMode(QPainter::CompositionMode_SourceOver); + m_layer->paintGraphicsLayerContents(gc, region.boundingRect()); + + m_backingStoreKey = QPixmapCache::insert(pixmap); + return pixmap; +} + +void GraphicsLayerQtImpl::updateTransform() +{ + if (!m_transformAnimationRunning) + m_baseTransform = m_layer->transform(); + + TransformationMatrix localTransform; + + GraphicsLayerQtImpl* parent = qobject_cast<GraphicsLayerQtImpl*>(parentObject()); + // webkit has relative-to-size originPoint, graphics-view has a pixel originPoint, here we convert // we have to manage this ourselves because QGraphicsView's transformOrigin is incompatible const qreal originX = m_state.anchorPoint.x() * m_size.width(); const qreal originY = m_state.anchorPoint.y() * m_size.height(); - computedTransform - .translate3d(originX, originY, m_state.anchorPoint.z()) - .multLeft(baseTransform) + + // We ignore QGraphicsItem::pos completely, and use only transforms - because we have to maintain that ourselves for 3D. + localTransform + .translate3d(originX + m_state.pos.x(), originY + m_state.pos.y(), m_state.anchorPoint.z()) + .multLeft(m_baseTransform) .translate3d(-originX, -originY, -m_state.anchorPoint.z()); - // now we project to 2D - return QTransform(computedTransform); + // This is the actual 3D transform of this item, with the ancestors' transform baked in. + m_transformRelativeToRootLayer = TransformationMatrix(parent ? parent->m_transformRelativeToRootLayer : TransformationMatrix()) + .multLeft(localTransform); + + // Now we have enough information to determine if the layer is facing backwards. + if (!m_state.backfaceVisibility && m_transformRelativeToRootLayer.inverse().m33() < 0) { + setVisible(false); + // No point in making extra calculations for invisible elements. + return; + } + + // Simplistic depth test - we stack the item behind its parent if its computed z is lower than the parent's computed z at the item's center point. + if (parent) { + const QPointF centerPointMappedToRoot = rootLayer()->mapFromItem(this, m_size.width() / 2, m_size.height() / 2); + setFlag(ItemStacksBehindParent, + m_transformRelativeToRootLayer.mapPoint(FloatPoint3D(centerPointMappedToRoot.x(), centerPointMappedToRoot.y(), 0)).z() < + parent->m_transformRelativeToRootLayer.mapPoint(FloatPoint3D(centerPointMappedToRoot.x(), centerPointMappedToRoot.y(), 0)).z()); + } + + // The item is front-facing or backface-visibility is on. + setVisible(true); + + // Flatten to 2D-space of this item if it doesn't preserve 3D. + if (!m_state.preserves3D) { + m_transformRelativeToRootLayer.setM13(0); + m_transformRelativeToRootLayer.setM23(0); + m_transformRelativeToRootLayer.setM31(0); + m_transformRelativeToRootLayer.setM32(0); + m_transformRelativeToRootLayer.setM33(1); + m_transformRelativeToRootLayer.setM34(0); + m_transformRelativeToRootLayer.setM43(0); + } + + // Apply perspective for the use of this item's children. Perspective is always applied from the item's center. + if (!m_state.childrenTransform.isIdentity()) + m_transformRelativeToRootLayer + .translate(m_size.width() / 2, m_size.height() /2) + .multLeft(m_state.childrenTransform) + .translate(-m_size.width() / 2, -m_size.height() /2); + + bool inverseOk = true; + // Use QTransform::inverse to extrapolate the relative transform of this item, based on the parent's transform relative to + // the root layer and the desired transform for this item relative to the root layer. + const QTransform parentTransform = parent ? parent->itemTransform(rootLayer()) : QTransform(); + const QTransform transform2D = QTransform(m_transformRelativeToRootLayer) * parentTransform.inverted(&inverseOk); + + // In rare cases the transformation cannot be inversed - in that case we don't apply the transformation at all, otherwise we'd flicker. + // FIXME: This should be amended when Qt moves to a real 3D scene-graph. + if (!inverseOk) + return; + + setTransform(transform2D); + + const QList<QGraphicsItem*> children = childItems(); + for (QList<QGraphicsItem*>::const_iterator it = children.begin(); it != children.end(); ++it) + if (GraphicsLayerQtImpl* layer= qobject_cast<GraphicsLayerQtImpl*>((*it)->toGraphicsObject())) + layer->updateTransform(); } -bool GraphicsLayerQtImpl::isTransformAnimationRunning() const +void GraphicsLayerQtImpl::setBaseTransform(const TransformationMatrix& baseTransform) { - if (m_transformAnimationRunning) - return true; - if (GraphicsLayerQtImpl* parent = qobject_cast<GraphicsLayerQtImpl*>(parentObject())) - return parent->isTransformAnimationRunning(); - return false; + m_baseTransform = baseTransform; + updateTransform(); } QPainterPath GraphicsLayerQtImpl::opaqueArea() const { QPainterPath painterPath; + // we try out best to return the opaque area, maybe it will help graphics-view render less items if (m_currentContent.backgroundColor.isValid() && m_currentContent.backgroundColor.alpha() == 0xff) painterPath.addRect(boundingRect()); @@ -384,14 +438,16 @@ QRectF GraphicsLayerQtImpl::boundingRect() const void GraphicsLayerQtImpl::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) { if (m_currentContent.backgroundColor.isValid()) - painter->fillRect(option->exposedRect, QColor(m_currentContent.backgroundColor)); + painter->fillRect(option->rect, QColor(m_currentContent.backgroundColor)); switch (m_currentContent.contentType) { case HTMLContentType: if (m_state.drawsContent) { - // this is the expensive bit. we try to minimize calls to this area by proper caching - GraphicsContext gc(painter); - m_layer->paintGraphicsLayerContents(gc, option->exposedRect.toAlignedRect()); + QPixmap backingStore; + // We might need to recache, in case we try to paint and the cache was purged (e.g. if it was full). + if (!QPixmapCache::find(m_backingStoreKey, &backingStore) || backingStore.size() != m_size.toSize()) + backingStore = recache(QRegion(m_state.contentsRect)); + painter->drawPixmap(0, 0, backingStore); } break; case PixmapContentType: @@ -471,15 +527,11 @@ void GraphicsLayerQtImpl::flushChanges(bool recursive, bool forceUpdateTransform if (m_layer->maskLayer()) { if (GraphicsLayerQtImpl* mask = qobject_cast<GraphicsLayerQtImpl*>(m_layer->maskLayer()->platformLayer()->toGraphicsObject())) { mask->m_maskEffect = new MaskEffectQt(this, mask); - mask->setCacheMode(NoCache); setGraphicsEffect(mask->m_maskEffect.data()); } } } - if ((m_changeMask & PositionChange) && (m_layer->position() != m_state.pos)) - setPos(m_layer->position().x(), m_layer->position().y()); - if (m_changeMask & SizeChange) { if (m_layer->size() != m_state.size) { prepareGeometryChange(); @@ -489,9 +541,10 @@ void GraphicsLayerQtImpl::flushChanges(bool recursive, bool forceUpdateTransform // FIXME: this is a hack, due to a probable QGraphicsScene bug when rapidly modifying the perspective // but without this line we get graphic artifacts if ((m_changeMask & ChildrenTransformChange) && m_state.childrenTransform != m_layer->childrenTransform()) - scene()->update(); + if (scene()) + scene()->update(); - if (m_changeMask & (ChildrenTransformChange | Preserves3DChange | TransformChange | AnchorPointChange | SizeChange)) { + if (m_changeMask & (ChildrenTransformChange | Preserves3DChange | TransformChange | AnchorPointChange | SizeChange | BackfaceVisibilityChange | PositionChange)) { // due to the differences between the way WebCore handles transforms and the way Qt handles transforms, // all these elements affect the transforms of all the descendants. forceUpdateTransform = true; @@ -510,8 +563,6 @@ void GraphicsLayerQtImpl::flushChanges(bool recursive, bool forceUpdateTransform break; case ColorContentType: - // no point in caching a solid-color rectangle - setCacheMode(m_layer->maskLayer() ? QGraphicsItem::DeviceCoordinateCache : QGraphicsItem::NoCache); if (m_pendingContent.contentType != m_currentContent.contentType || m_pendingContent.contentsBackgroundColor != m_currentContent.contentsBackgroundColor) update(); m_state.drawsContent = false; @@ -526,14 +577,6 @@ void GraphicsLayerQtImpl::flushChanges(bool recursive, bool forceUpdateTransform update(); if (!m_state.drawsContent && m_layer->drawsContent()) update(); - if (m_layer->drawsContent() && !m_maskEffect) { - setCacheMode(isTransformAnimationRunning() ? ItemCoordinateCache : DeviceCoordinateCache); - - // HTML content: we want to use exposedRect so we don't use WebCore rendering if we don't have to - setFlag(QGraphicsItem::ItemUsesExtendedStyleOption, true); - } - else - setCacheMode(NoCache); setFlag(ItemHasNoContents, !m_layer->drawsContent()); break; @@ -563,15 +606,16 @@ void GraphicsLayerQtImpl::flushChanges(bool recursive, bool forceUpdateTransform if (m_maskEffect) m_maskEffect.data()->update(); - else if (m_changeMask & DisplayChange) + else if (m_changeMask & DisplayChange) { + // Recache now: all the content is ready and we don't want to wait until the paint event. + recache(m_pendingContent.regionToUpdate); update(m_pendingContent.regionToUpdate.boundingRect()); + m_pendingContent.regionToUpdate = QRegion(); + } if ((m_changeMask & BackgroundColorChange) && (m_pendingContent.backgroundColor != m_currentContent.backgroundColor)) update(); - // FIXME: the following flags are currently not handled, as they don't have a clear test or are in low priority - // GeometryOrientationChange, ContentsOrientationChange, BackfaceVisibilityChange, ChildrenTransformChange, Preserves3DChange - m_state.maskLayer = m_layer->maskLayer(); m_state.pos = m_layer->position(); m_state.anchorPoint = m_layer->anchorPoint(); @@ -591,7 +635,6 @@ void GraphicsLayerQtImpl::flushChanges(bool recursive, bool forceUpdateTransform m_currentContent.contentType = m_pendingContent.contentType; m_currentContent.mediaLayer = m_pendingContent.mediaLayer; m_currentContent.backgroundColor = m_pendingContent.backgroundColor; - m_currentContent.regionToUpdate |= m_pendingContent.regionToUpdate; m_currentContent.contentsBackgroundColor = m_pendingContent.contentsBackgroundColor; m_pendingContent.regionToUpdate = QRegion(); m_changeMask = NoChanges; @@ -1014,6 +1057,7 @@ public: , m_webkitPropertyID(values.property()) , m_webkitAnimation(anim) , m_keyframesName(name) + , m_fillsForwards(false) { } @@ -1037,6 +1081,7 @@ public: // we might need this in case the same animation is added again (i.e. resumed by WebCore) const Animation* m_webkitAnimation; QString m_keyframesName; + bool m_fillsForwards; }; // we'd rather have a templatized QAbstractAnimation than QPropertyAnimation / QVariantAnimation; @@ -1121,10 +1166,8 @@ public: ~TransformAnimationQt() { - // this came up during the compositing/animation LayoutTests - // when the animation dies, the transform has to go back to default - if (m_layer) - m_layer.data()->updateTransform(); + if (m_fillsForwards) + setCurrentTime(1); } // the idea is that we let WebCore manage the transform-operations @@ -1135,34 +1178,28 @@ public: { TransformationMatrix transformMatrix; - // sometimes the animation values from WebCore are misleading and we have to use the actual matrix as source - // The Mac implementation simply doesn't try to accelerate those (e.g. 360deg rotation), but we do. - if (progress == 1 || !targetOperations.size() || sourceOperations == targetOperations) { - TransformationMatrix sourceMatrix; - sourceOperations.apply(m_boxSize, sourceMatrix); - transformMatrix = m_sourceMatrix; - transformMatrix.blend(sourceMatrix, 1 - progress); - } else { - bool validTransformLists = true; - const int sourceOperationCount = sourceOperations.size(); - if (sourceOperationCount) { - if (targetOperations.size() != sourceOperationCount) - validTransformLists = false; - else - for (size_t j = 0; j < sourceOperationCount && validTransformLists; ++j) - if (!sourceOperations.operations()[j]->isSameType(*targetOperations.operations()[j])) - validTransformLists = false; - } + bool validTransformLists = true; + const int sourceOperationCount = sourceOperations.size(); + if (sourceOperationCount) { + if (targetOperations.size() != sourceOperationCount) + validTransformLists = false; + else + for (size_t j = 0; j < sourceOperationCount && validTransformLists; ++j) + if (!sourceOperations.operations()[j]->isSameType(*targetOperations.operations()[j])) + validTransformLists = false; + } - if (validTransformLists) { - for (size_t i = 0; i < targetOperations.size(); ++i) - targetOperations.operations()[i]->blend(sourceOperations.at(i), progress)->apply(transformMatrix, m_boxSize); - } else { - targetOperations.apply(m_boxSize, transformMatrix); - transformMatrix.blend(m_sourceMatrix, progress); - } + if (validTransformLists) { + for (size_t i = 0; i < targetOperations.size(); ++i) + targetOperations.operations()[i]->blend(sourceOperations.at(i), progress)->apply(transformMatrix, m_boxSize); + } else { + targetOperations.apply(m_boxSize, transformMatrix); + transformMatrix.blend(m_sourceMatrix, progress); } + m_layer.data()->setBaseTransform(transformMatrix); + if (m_fillsForwards) + m_layer.data()->m_layer->setTransform(m_layer.data()->m_baseTransform); } virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState) @@ -1177,10 +1214,11 @@ public: if (newState == QAbstractAnimation::Running) { m_sourceMatrix = m_layer.data()->m_layer->transform(); m_layer.data()->m_transformAnimationRunning = true; - m_layer.data()->adjustCachingRecursively(true); } else if (newState == QAbstractAnimation::Stopped) { + // We update the transform back to the default. This already takes fill-modes into account. m_layer.data()->m_transformAnimationRunning = false; - m_layer.data()->adjustCachingRecursively(false); + if (m_layer && m_layer.data()->m_layer) + m_layer.data()->setBaseTransform(m_layer.data()->m_layer->transform()); } } @@ -1194,6 +1232,11 @@ public: { } + ~OpacityAnimationQt() + { + if (m_fillsForwards) + setCurrentTime(1); + } virtual void applyFrame(const qreal& fromValue, const qreal& toValue, qreal progress) { qreal opacity = qBound(qreal(0), fromValue + (toValue-fromValue)*progress, qreal(1)); @@ -1204,6 +1247,8 @@ public: m_layer.data()->scene()->update(); m_layer.data()->setOpacity(opacity); + if (m_fillsForwards) + m_layer.data()->m_layer->setOpacity(opacity); } virtual void updateState(QAbstractAnimation::State newState, QAbstractAnimation::State oldState) @@ -1212,6 +1257,12 @@ public: if (m_layer) m_layer.data()->m_opacityAnimationRunning = (newState == QAbstractAnimation::Running); + + // If stopped, we update the opacity back to the default. This already takes fill-modes into account. + if (newState == Stopped) + if (m_layer && m_layer.data()->m_layer) + m_layer.data()->setOpacity(m_layer.data()->m_layer->opacity()); + } }; @@ -1220,7 +1271,7 @@ bool GraphicsLayerQt::addAnimation(const KeyframeValueList& values, const IntSiz if (!anim->duration() || !anim->iterationCount()) return false; - QAbstractAnimation* newAnim = 0; + AnimationQtBase* newAnim = 0; // fixed: we might already have the Qt animation object associated with this WebCore::Animation object for (QList<QWeakPointer<QAbstractAnimation> >::iterator it = m_impl->m_animations.begin(); it != m_impl->m_animations.end(); ++it) { @@ -1245,6 +1296,7 @@ bool GraphicsLayerQt::addAnimation(const KeyframeValueList& values, const IntSiz // we make sure WebCore::Animation and QAnimation are on the same terms newAnim->setLoopCount(anim->iterationCount()); + newAnim->m_fillsForwards = anim->fillsForwards(); m_impl->m_animations.append(QWeakPointer<QAbstractAnimation>(newAnim)); QObject::connect(&m_impl->m_suspendTimer, SIGNAL(timeout()), newAnim, SLOT(resume())); } @@ -1252,6 +1304,10 @@ bool GraphicsLayerQt::addAnimation(const KeyframeValueList& values, const IntSiz // flush now or flicker... m_impl->flushChanges(false); + // when fill-mode is backwards/both, we set the value to 0 before the delay takes place + if (anim->fillsBackwards()) + newAnim->setCurrentTime(0); + if (anim->delay()) QTimer::singleShot(anim->delay() * 1000, newAnim, SLOT(start())); else @@ -1272,6 +1328,8 @@ void GraphicsLayerQt::removeAnimationsForProperty(AnimatedPropertyID id) if (*it) { AnimationQtBase* anim = static_cast<AnimationQtBase*>(it->data()); if (anim && anim->m_webkitPropertyID == id) { + // We need to stop the animation right away, or it might flicker before it's deleted. + anim->stop(); anim->deleteLater(); it = m_impl->m_animations.erase(it); --it; @@ -1286,7 +1344,9 @@ void GraphicsLayerQt::removeAnimationsForKeyframes(const String& name) if (*it) { AnimationQtBase* anim = static_cast<AnimationQtBase*>((*it).data()); if (anim && anim->m_keyframesName == QString(name)) { - (*it).data()->deleteLater(); + // We need to stop the animation right away, or it might flicker before it's deleted. + anim->stop(); + anim->deleteLater(); it = m_impl->m_animations.erase(it); --it; } diff --git a/src/3rdparty/webkit/WebCore/platform/graphics/transforms/TransformationMatrix.h b/src/3rdparty/webkit/WebCore/platform/graphics/transforms/TransformationMatrix.h index cdf101d..96b4baa 100644 --- a/src/3rdparty/webkit/WebCore/platform/graphics/transforms/TransformationMatrix.h +++ b/src/3rdparty/webkit/WebCore/platform/graphics/transforms/TransformationMatrix.h @@ -47,7 +47,7 @@ #endif #if PLATFORM(WIN) || (PLATFORM(QT) && OS(WINDOWS)) || (PLATFORM(WX) && OS(WINDOWS)) -#if COMPILER(MINGW) +#if COMPILER(MINGW) && !COMPILER(MINGW64) typedef struct _XFORM XFORM; #else typedef struct tagXFORM XFORM; diff --git a/src/3rdparty/webkit/WebCore/platform/mac/MIMETypeRegistryMac.mm b/src/3rdparty/webkit/WebCore/platform/mac/MIMETypeRegistryMac.mm index 7d43505..82348e0 100644 --- a/src/3rdparty/webkit/WebCore/platform/mac/MIMETypeRegistryMac.mm +++ b/src/3rdparty/webkit/WebCore/platform/mac/MIMETypeRegistryMac.mm @@ -56,4 +56,9 @@ String MIMETypeRegistry::getPreferredExtensionForMIMEType(const String& type) return wkGetPreferredExtensionForMIMEType(type); } +bool MIMETypeRegistry::isApplicationPluginMIMEType(const String&) +{ + return false; +} + } diff --git a/src/3rdparty/webkit/WebCore/platform/network/qt/ResourceRequestQt.cpp b/src/3rdparty/webkit/WebCore/platform/network/qt/ResourceRequestQt.cpp index 341e6ae..fea64a0 100644 --- a/src/3rdparty/webkit/WebCore/platform/network/qt/ResourceRequestQt.cpp +++ b/src/3rdparty/webkit/WebCore/platform/network/qt/ResourceRequestQt.cpp @@ -32,12 +32,14 @@ namespace WebCore { // To achieve the best result we want WebKit to schedule the jobs so we // are using the limit as found in Qt. To allow Qt to fill its queue // and prepare jobs we will schedule two more downloads. +// Per TCP connection there is 1 current processed, 3 possibly pipelined +// and 2 ready to re-fill the pipeline. unsigned initializeMaximumHTTPConnectionCountPerHost() { #ifdef Q_OS_SYMBIAN - return 3 + 2; + return 3 * (1 + 3 + 2); #else - return 6 + 2; + return 6 * (1 + 3 + 2); #endif } diff --git a/src/3rdparty/webkit/WebCore/platform/qt/MIMETypeRegistryQt.cpp b/src/3rdparty/webkit/WebCore/platform/qt/MIMETypeRegistryQt.cpp index 22cee6f..4161f81 100644 --- a/src/3rdparty/webkit/WebCore/platform/qt/MIMETypeRegistryQt.cpp +++ b/src/3rdparty/webkit/WebCore/platform/qt/MIMETypeRegistryQt.cpp @@ -82,4 +82,10 @@ String MIMETypeRegistry::getMIMETypeForExtension(const String &ext) return "application/octet-stream"; } +bool MIMETypeRegistry::isApplicationPluginMIMEType(const String& mimeType) +{ + return mimeType.startsWith("application/x-qt-plugin", false) + || mimeType.startsWith("application/x-qt-styled-widget", false); +} + } diff --git a/src/3rdparty/webkit/WebCore/platform/qt/QWebPageClient.h b/src/3rdparty/webkit/WebCore/platform/qt/QWebPageClient.h index f03ff08..467941f 100644 --- a/src/3rdparty/webkit/WebCore/platform/qt/QWebPageClient.h +++ b/src/3rdparty/webkit/WebCore/platform/qt/QWebPageClient.h @@ -55,6 +55,7 @@ public: // if scheduleSync is true, we schedule a sync ourselves. otherwise, // we wait for the next update and sync the layers then. virtual void markForSync(bool scheduleSync = false) {} + virtual bool allowsAcceleratedCompositing() const { return false; } #endif #if QT_VERSION >= 0x040600 diff --git a/src/3rdparty/webkit/WebCore/platform/qt/SharedTimerQt.cpp b/src/3rdparty/webkit/WebCore/platform/qt/SharedTimerQt.cpp index e9bcaee..7c0fd05 100644 --- a/src/3rdparty/webkit/WebCore/platform/qt/SharedTimerQt.cpp +++ b/src/3rdparty/webkit/WebCore/platform/qt/SharedTimerQt.cpp @@ -40,6 +40,8 @@ namespace WebCore { class SharedTimerQt : public QObject { + Q_OBJECT + friend void setSharedTimerFiredFunction(void (*f)()); public: static SharedTimerQt* inst(); @@ -50,15 +52,18 @@ public: protected: void timerEvent(QTimerEvent* ev); +private slots: + void destroy(); + private: - SharedTimerQt(QObject* parent); + SharedTimerQt(); ~SharedTimerQt(); QBasicTimer m_timer; void (*m_timerFunction)(); }; -SharedTimerQt::SharedTimerQt(QObject* parent) - : QObject(parent) +SharedTimerQt::SharedTimerQt() + : QObject() , m_timerFunction(0) {} @@ -68,11 +73,18 @@ SharedTimerQt::~SharedTimerQt() (m_timerFunction)(); } +void SharedTimerQt::destroy() +{ + delete this; +} + SharedTimerQt* SharedTimerQt::inst() { static QPointer<SharedTimerQt> timer; - if (!timer) - timer = new SharedTimerQt(QCoreApplication::instance()); + if (!timer) { + timer = new SharedTimerQt(); + timer->connect(QCoreApplication::instance(), SIGNAL(aboutToQuit()), SLOT(destroy())); + } return timer; } @@ -129,6 +141,8 @@ void stopSharedTimer() SharedTimerQt::inst()->stop(); } +#include "SharedTimerQt.moc" + } // vim: ts=4 sw=4 et diff --git a/src/3rdparty/webkit/WebCore/platform/text/TextStream.cpp b/src/3rdparty/webkit/WebCore/platform/text/TextStream.cpp index ab73891..eed17a5 100644 --- a/src/3rdparty/webkit/WebCore/platform/text/TextStream.cpp +++ b/src/3rdparty/webkit/WebCore/platform/text/TextStream.cpp @@ -108,7 +108,7 @@ String TextStream::release() return String::adopt(m_text); } -#if OS(WINDOWS) && CPU(X86_64) && COMPILER(MSVC) +#if OS(WINDOWS) && CPU(X86_64) TextStream& TextStream::operator<<(__int64 i) { char buffer[printBufferSize]; diff --git a/src/3rdparty/webkit/WebCore/platform/text/TextStream.h b/src/3rdparty/webkit/WebCore/platform/text/TextStream.h index 1225505..522da53 100644 --- a/src/3rdparty/webkit/WebCore/platform/text/TextStream.h +++ b/src/3rdparty/webkit/WebCore/platform/text/TextStream.h @@ -45,7 +45,7 @@ public: TextStream& operator<<(const char*); TextStream& operator<<(void*); TextStream& operator<<(const String&); -#if OS(WINDOWS) && CPU(X86_64) && COMPILER(MSVC) +#if OS(WINDOWS) && CPU(X86_64) TextStream& operator<<(unsigned __int64); TextStream& operator<<(__int64); #endif diff --git a/src/3rdparty/webkit/WebCore/plugins/PluginView.cpp b/src/3rdparty/webkit/WebCore/plugins/PluginView.cpp index 38acdd9..df9a29b 100644 --- a/src/3rdparty/webkit/WebCore/plugins/PluginView.cpp +++ b/src/3rdparty/webkit/WebCore/plugins/PluginView.cpp @@ -345,7 +345,7 @@ void PluginView::stop() WNDPROC currentWndProc = (WNDPROC)GetWindowLongPtr(platformPluginWidget(), GWLP_WNDPROC); if (currentWndProc == PluginViewWndProc) - SetWindowLongPtr(platformPluginWidget(), GWLP_WNDPROC, (LONG)m_pluginWndProc); + SetWindowLongPtr(platformPluginWidget(), GWLP_WNDPROC, (LONG_PTR)m_pluginWndProc); #endif } #endif // XP_WIN @@ -1296,9 +1296,7 @@ void PluginView::keepAlive(NPP instance) view->keepAlive(); } -#endif -#if ENABLE(NETSCAPE_PLUGIN_API) NPError PluginView::getValueStatic(NPNVariable variable, void* value) { LOG(Plugins, "PluginView::getValueStatic(%s)", prettyNameForNPNVariable(variable).data()); @@ -1309,7 +1307,6 @@ NPError PluginView::getValueStatic(NPNVariable variable, void* value) return NPERR_GENERIC_ERROR; } -#endif NPError PluginView::getValue(NPNVariable variable, void* value) { @@ -1319,13 +1316,10 @@ NPError PluginView::getValue(NPNVariable variable, void* value) if (platformGetValue(variable, value, &result)) return result; -#if ENABLE(NETSCAPE_PLUGIN_API) if (platformGetValueStatic(variable, value, &result)) return result; -#endif switch (variable) { -#if ENABLE(NETSCAPE_PLUGIN_API) case NPNVWindowNPObject: { if (m_isJavaScriptPaused) return NPERR_GENERIC_ERROR; @@ -1360,7 +1354,6 @@ NPError PluginView::getValue(NPNVariable variable, void* value) return NPERR_NO_ERROR; } -#endif case NPNVprivateModeBool: { Page* page = m_parentFrame->page(); @@ -1374,6 +1367,7 @@ NPError PluginView::getValue(NPNVariable variable, void* value) return NPERR_GENERIC_ERROR; } } +#endif void PluginView::privateBrowsingStateChanged(bool privateBrowsingEnabled) { diff --git a/src/3rdparty/webkit/WebCore/plugins/PluginView.h b/src/3rdparty/webkit/WebCore/plugins/PluginView.h index 21a25f6..51b2127 100644 --- a/src/3rdparty/webkit/WebCore/plugins/PluginView.h +++ b/src/3rdparty/webkit/WebCore/plugins/PluginView.h @@ -139,8 +139,9 @@ namespace WebCore { static const char* userAgentStatic(); #endif void status(const char* message); - NPError getValue(NPNVariable variable, void* value); + #if ENABLE(NETSCAPE_PLUGIN_API) + NPError getValue(NPNVariable variable, void* value); static NPError getValueStatic(NPNVariable variable, void* value); #endif NPError setValue(NPPVariable variable, void* value); diff --git a/src/3rdparty/webkit/WebCore/plugins/PluginViewNone.cpp b/src/3rdparty/webkit/WebCore/plugins/PluginViewNone.cpp index ed5ad1b..bd51a98 100644 --- a/src/3rdparty/webkit/WebCore/plugins/PluginViewNone.cpp +++ b/src/3rdparty/webkit/WebCore/plugins/PluginViewNone.cpp @@ -67,12 +67,12 @@ NPError PluginView::handlePostReadFile(Vector<char>&, uint32, const char*) return 0; } +#if ENABLE(NETSCAPE_PLUGIN_API) bool PluginView::platformGetValue(NPNVariable, void*, NPError*) { return false; } -#if ENABLE(NETSCAPE_PLUGIN_API) bool PluginView::platformGetValueStatic(NPNVariable, void*, NPError*) { return false; @@ -126,4 +126,14 @@ void PluginView::keepAlive(NPP) } #endif +#if PLATFORM(MAC) || PLATFORM(CHROMIUM) || PLATFORM(EFL) +void PluginView::privateBrowsingStateChanged(bool) +{ +} + +void PluginView::setJavaScriptPaused(bool) +{ +} +#endif + } // namespace WebCore diff --git a/src/3rdparty/webkit/WebCore/plugins/symbian/PluginViewSymbian.cpp b/src/3rdparty/webkit/WebCore/plugins/symbian/PluginViewSymbian.cpp index bae3b7f..108fcca 100644 --- a/src/3rdparty/webkit/WebCore/plugins/symbian/PluginViewSymbian.cpp +++ b/src/3rdparty/webkit/WebCore/plugins/symbian/PluginViewSymbian.cpp @@ -414,11 +414,11 @@ bool PluginView::platformStart() void PluginView::platformDestroy() { - QWebPageClient* client = m_parentFrame->view()->hostWindow()->platformPageClient(); - if (client && qobject_cast<QGraphicsWebView*>(client->pluginParent())) - delete static_cast<PluginContainerSymbian*>(platformPluginWidget())->proxy(); - else - delete platformPluginWidget(); + if (platformPluginWidget()) { + PluginContainerSymbian* container = static_cast<PluginContainerSymbian*>(platformPluginWidget()); + delete container->proxy(); + delete container; + } } void PluginView::halt() diff --git a/src/3rdparty/webkit/WebCore/plugins/win/PluginViewWin.cpp b/src/3rdparty/webkit/WebCore/plugins/win/PluginViewWin.cpp index 9d869ab..e37714a 100644 --- a/src/3rdparty/webkit/WebCore/plugins/win/PluginViewWin.cpp +++ b/src/3rdparty/webkit/WebCore/plugins/win/PluginViewWin.cpp @@ -544,7 +544,7 @@ void PluginView::paintIntoTransformedContext(HDC hdc) NPEvent npEvent; npEvent.event = WM_WINDOWPOSCHANGED; - npEvent.lParam = reinterpret_cast<uint32>(&windowpos); + npEvent.lParam = reinterpret_cast<uintptr_t>(&windowpos); npEvent.wParam = 0; dispatchNPEvent(npEvent); @@ -552,7 +552,7 @@ void PluginView::paintIntoTransformedContext(HDC hdc) setNPWindowRect(frameRect()); npEvent.event = WM_PAINT; - npEvent.wParam = reinterpret_cast<uint32>(hdc); + npEvent.wParam = reinterpret_cast<uintptr_t>(hdc); // This is supposed to be a pointer to the dirty rect, but it seems that the Flash plugin // ignores it so we just pass null. @@ -829,7 +829,7 @@ void PluginView::setNPWindowRect(const IntRect& rect) #else WNDPROC currentWndProc = (WNDPROC)GetWindowLongPtr(platformPluginWidget(), GWLP_WNDPROC); if (currentWndProc != PluginViewWndProc) - m_pluginWndProc = (WNDPROC)SetWindowLongPtr(platformPluginWidget(), GWLP_WNDPROC, (LONG)PluginViewWndProc); + m_pluginWndProc = (WNDPROC)SetWindowLongPtr(platformPluginWidget(), GWLP_WNDPROC, (LONG_PTR)PluginViewWndProc); #endif } } @@ -978,7 +978,7 @@ bool PluginView::platformStart() // Calling SetWindowLongPtrA here makes the window proc ASCII, which is required by at least // the Shockwave Director plug-in. -#if OS(WINDOWS) && CPU(X86_64) && COMPILER(MSVC) +#if OS(WINDOWS) && CPU(X86_64) ::SetWindowLongPtrA(platformPluginWidget(), GWLP_WNDPROC, (LONG_PTR)DefWindowProcA); #elif OS(WINCE) ::SetWindowLong(platformPluginWidget(), GWL_WNDPROC, (LONG)DefWindowProc); diff --git a/src/3rdparty/webkit/WebCore/rendering/RenderBox.cpp b/src/3rdparty/webkit/WebCore/rendering/RenderBox.cpp index 1c0e837..c6818f8 100644 --- a/src/3rdparty/webkit/WebCore/rendering/RenderBox.cpp +++ b/src/3rdparty/webkit/WebCore/rendering/RenderBox.cpp @@ -1179,10 +1179,9 @@ void RenderBox::computeRectForRepaint(RenderBoxModelObject* repaintContainer, In IntPoint topLeft = rect.location(); topLeft.move(x(), y()); - if (style()->position() == FixedPosition) - fixed = true; + EPosition position = style()->position(); - if (o->isBlockFlow() && style()->position() != AbsolutePosition && style()->position() != FixedPosition) { + if (o->isBlockFlow() && position != AbsolutePosition && position != FixedPosition) { RenderBlock* cb = toRenderBlock(o); if (cb->hasColumns()) { IntRect repaintRect(topLeft, rect.size()); @@ -1195,16 +1194,17 @@ void RenderBox::computeRectForRepaint(RenderBoxModelObject* repaintContainer, In // We are now in our parent container's coordinate space. Apply our transform to obtain a bounding box // in the parent's coordinate space that encloses us. if (layer() && layer()->transform()) { - fixed = false; + fixed = position == FixedPosition; rect = layer()->transform()->mapRect(rect); // FIXME: this clobbers topLeft adjustment done for multicol above topLeft = rect.location(); topLeft.move(x(), y()); - } + } else if (position == FixedPosition) + fixed = true; - if (style()->position() == AbsolutePosition && o->isRelPositioned() && o->isRenderInline()) + if (position == AbsolutePosition && o->isRelPositioned() && o->isRenderInline()) topLeft += toRenderInline(o)->relativePositionedInlineOffset(this); - else if (style()->position() == RelativePosition && layer()) { + else if (position == RelativePosition && layer()) { // Apply the relative position offset when invalidating a rectangle. The layer // is translated, but the render box isn't, so we need to do this to get the // right dirty rect. Since this is called from RenderObject::setStyle, the relative position diff --git a/src/3rdparty/webkit/WebCore/rendering/RenderLayer.cpp b/src/3rdparty/webkit/WebCore/rendering/RenderLayer.cpp index 15ffb64..3314772 100644 --- a/src/3rdparty/webkit/WebCore/rendering/RenderLayer.cpp +++ b/src/3rdparty/webkit/WebCore/rendering/RenderLayer.cpp @@ -332,6 +332,22 @@ void RenderLayer::computeRepaintRects() m_outlineBox = renderer()->outlineBoundsForRepaint(repaintContainer); } +void RenderLayer::updateRepaintRectsAfterScroll(bool fixed) +{ + if (fixed || renderer()->style()->position() == FixedPosition) { + computeRepaintRects(); + fixed = true; + } else if (renderer()->hasTransform()) { + // Transforms act as fixed position containers, so nothing inside a + // transformed element can be fixed relative to the viewport if the + // transformed element is not fixed itself or child of a fixed element. + return; + } + + for (RenderLayer* child = firstChild(); child; child = child->nextSibling()) + child->updateRepaintRectsAfterScroll(fixed); +} + void RenderLayer::updateTransform() { // hasTransform() on the renderer is also true when there is transform-style: preserve-3d or perspective set, diff --git a/src/3rdparty/webkit/WebCore/rendering/RenderLayer.h b/src/3rdparty/webkit/WebCore/rendering/RenderLayer.h index 9210e95..81a66e1 100644 --- a/src/3rdparty/webkit/WebCore/rendering/RenderLayer.h +++ b/src/3rdparty/webkit/WebCore/rendering/RenderLayer.h @@ -395,6 +395,7 @@ public: // Return a cached repaint rect, computed relative to the layer renderer's containerForRepaint. IntRect repaintRect() const { return m_repaintRect; } void computeRepaintRects(); + void updateRepaintRectsAfterScroll(bool fixed = false); void setNeedsFullRepaint(bool f = true) { m_needsFullRepaint = f; } int staticX() const { return m_staticX; } diff --git a/src/3rdparty/webkit/WebCore/rendering/RenderLayerCompositor.cpp b/src/3rdparty/webkit/WebCore/rendering/RenderLayerCompositor.cpp index 93af664..c295a2c 100644 --- a/src/3rdparty/webkit/WebCore/rendering/RenderLayerCompositor.cpp +++ b/src/3rdparty/webkit/WebCore/rendering/RenderLayerCompositor.cpp @@ -128,6 +128,15 @@ void RenderLayerCompositor::cacheAcceleratedCompositingFlags() showRepaintCounter = settings->showRepaintCounter(); } + // We allow the chrome to override the settings, in case the page is rendered + // on a chrome that doesn't allow accelerated compositing. + if (hasAcceleratedCompositing) { + Frame* frame = m_renderView->frameView()->frame(); + Page* page = frame ? frame->page() : 0; + if (page) + hasAcceleratedCompositing = page->chrome()->client()->allowsAcceleratedCompositing(); + } + if (hasAcceleratedCompositing != m_hasAcceleratedCompositing || showDebugBorders != m_showDebugBorders || showRepaintCounter != m_showRepaintCounter) setCompositingLayersNeedRebuild(); |