<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>14759</bug_id>
          
          <creation_ts>2007-07-24 16:45:25 -0700</creation_ts>
          <short_desc>QtWebKit does not track link visited</short_desc>
          <delta_ts>2007-08-01 21:28:43 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Qt</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Adam Treat">manyoso</reporter>
          <assigned_to name="George Staikos">staikos</assigned_to>
          <cc>hausmann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>3772</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2007-07-24 16:45:25 -0700</bug_when>
    <thetext>Attached is a patch that allows clients of QtWebKit to track the visited links and display them appropriately.  It does this by introducing an interface that clients can implement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>3770</commentid>
    <comment_count>1</comment_count>
      <attachid>15675</attachid>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2007-07-24 16:47:29 -0700</bug_when>
    <thetext>Created attachment 15675
QWebHistoryInterface

Proposed patch that adds an interface for client apps to implement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>3771</commentid>
    <comment_count>2</comment_count>
      <attachid>15675</attachid>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2007-07-24 17:01:51 -0700</bug_when>
    <thetext>Comment on attachment 15675
QWebHistoryInterface

diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 050db5c..9c1f50a 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,12 @@
+2007-07-24  Adam Treat  &lt;treat@kde.org&gt;
+
+        Reviewed by NOBODY (OOPS!).
+
+        Add an interface to manage global history for clients
+
+        * WebCore.pro:
+        * platform/qt/TemporaryLinkStubs.cpp:
+
 2007-07-24  Beth Dakin  &lt;bdakin@apple.com&gt;
 
         Reviewed by Darin.
diff --git a/WebCore/WebCore.pro b/WebCore/WebCore.pro
index 4bd5a3b..c78a3cd 100644
--- a/WebCore/WebCore.pro
+++ b/WebCore/WebCore.pro
@@ -744,6 +744,7 @@ qt-port:HEADERS += \
     $$PWD/../WebKitQt/Api/qwebobjectplugin.h \
     $$PWD/../WebKitQt/Api/qwebobjectplugin_p.h \
     $$PWD/../WebKitQt/Api/qwebobjectpluginconnector.h \
+    $$PWD/../WebKitQt/Api/qwebhistoryinterface.h \
     $$PWD/../WebKitQt/Api/qcookiejar.h \
     $$PWD/../WebKitQt/WebCoreSupport/FrameLoaderClientQt.h
 
@@ -815,7 +816,8 @@ qt-port:SOURCES += \
     ../WebKitQt/Api/qwebpagehistory.cpp \
     ../WebKitQt/Api/qwebsettings.cpp \
     ../WebKitQt/Api/qwebobjectplugin.cpp \
-    ../WebKitQt/Api/qwebobjectpluginconnector.cpp 
+    ../WebKitQt/Api/qwebobjectpluginconnector.cpp \
+    ../WebKitQt/Api/qwebhistoryinterface.cpp
 
 gdk-port {
     HEADERS += \
diff --git a/WebCore/platform/qt/TemporaryLinkStubs.cpp b/WebCore/platform/qt/TemporaryLinkStubs.cpp
index 31f2fa2..afbfb6c 100644
--- a/WebCore/platform/qt/TemporaryLinkStubs.cpp
+++ b/WebCore/platform/qt/TemporaryLinkStubs.cpp
@@ -67,9 +67,6 @@
 
 using namespace WebCore;
 
-
-bool WebCore::historyContains(DeprecatedString const&amp;) { return false; }
-
 void Frame::setNeedsReapplyStyles() { notImplemented(); }
 
 void FrameView::updateBorder() { notImplemented(); }
diff --git a/WebKitQt/Api/headers.pri b/WebKitQt/Api/headers.pri
index 6331384..846b793 100644
--- a/WebKitQt/Api/headers.pri
+++ b/WebKitQt/Api/headers.pri
@@ -6,4 +6,5 @@ WEBKIT_API_HEADERS = $$PWD/qcookiejar.h \
                      $$PWD/qwebobjectpluginconnector.h \
                      $$PWD/qwebpage.h \
                      $$PWD/qwebpagehistory.h \
-                     $$PWD/qwebsettings.h
+                     $$PWD/qwebsettings.h \
+                     $$PWD/qwebhistoryinterface.h
diff --git a/WebKitQt/Api/qwebhistoryinterface.cpp b/WebKitQt/Api/qwebhistoryinterface.cpp
new file mode 100644
index 0000000..47ae506
--- /dev/null
+++ b/WebKitQt/Api/qwebhistoryinterface.cpp
@@ -0,0 +1,83 @@
+/*
+  Copyright (C) 2007 Staikos Computing Services Inc.  &lt;info@staikos.net&gt;
+
+  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., 59 Temple Place - Suite 330,
+  Boston, MA 02111-1307, USA.
+
+  This class provides all functionality needed tracking global history.
+*/
+
+#include &quot;qwebhistoryinterface.h&quot;
+
+#include &lt;QCoreApplication&gt;
+
+#include &quot;KURL.h&quot;
+
+namespace WebCore {
+
+bool historyContains(const DeprecatedString&amp; s)
+{
+    if (!QWebHistoryInterface::defaultInterface())
+        return false;
+
+    QUrl qurl = QString(KURL(s).url());
+    return QWebHistoryInterface::defaultInterface()-&gt;historyContains(qurl);
+}
+
+} // namespace WebCore
+
+static QWebHistoryInterface *default_interface = 0;
+
+static bool gRoutineAdded = false;
+
+static void gCleanupInterface()
+{
+    delete default_interface;
+    default_interface = 0;
+}
+
+/*!
+  Sets a new default interface that will be used by all of WebKit
+  for managing history.
+*/
+void QWebHistoryInterface::setDefaultInterface(QWebHistoryInterface *defaultInterface)
+{
+    if (default_interface == defaultInterface)
+        return;
+    if (default_interface)
+        delete default_interface;
+    default_interface = defaultInterface;
+    if (!gRoutineAdded) {
+        qAddPostRoutine(gCleanupInterface);
+        gRoutineAdded = true;
+    }
+}
+
+/*!
+  Returns the default interface that will be used by WebKit. If no
+  default interface has been set, QtWebkit will not track history.
+*/
+QWebHistoryInterface *QWebHistoryInterface::defaultInterface()
+{
+    return default_interface;
+}
+
+QWebHistoryInterface::QWebHistoryInterface(QObject *parent) : QObject(parent)
+{
+}
+
+QWebHistoryInterface::~QWebHistoryInterface()
+{
+}
diff --git a/WebKitQt/Api/qwebhistoryinterface.h b/WebKitQt/Api/qwebhistoryinterface.h
new file mode 100644
index 0000000..56507f7
--- /dev/null
+++ b/WebKitQt/Api/qwebhistoryinterface.h
@@ -0,0 +1,43 @@
+/*
+  Copyright (C) 2007 Staikos Computing Services, Inc.  &lt;info@staikos.net&gt;
+
+  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., 59 Temple Place - Suite 330,
+  Boston, MA 02111-1307, USA.
+
+  This class provides all functionality needed tracking global history.
+*/
+
+#ifndef QWEBHISTORYINTERFACE_H
+#define QWEBHISTORYINTERFACE_H
+
+#include &lt;qobject.h&gt;
+#include &lt;qurl.h&gt;
+
+#include &lt;qwebkitglobal.h&gt;
+
+class QWEBKIT_EXPORT QWebHistoryInterface : public QObject
+{
+    Q_OBJECT
+public:
+    QWebHistoryInterface(QObject *parent = 0);
+    ~QWebHistoryInterface();
+
+    static void setDefaultInterface(QWebHistoryInterface *defaultInterface);
+    static QWebHistoryInterface *defaultInterface();
+
+    virtual bool historyContains(const QUrl &amp;url) const = 0;
+};
+
+#endif
diff --git a/WebKitQt/ChangeLog b/WebKitQt/ChangeLog
index a7883be..b7cb2d6 100644
--- a/WebKitQt/ChangeLog
+++ b/WebKitQt/ChangeLog
@@ -1,5 +1,20 @@
 2007-07-24  Adam Treat  &lt;treat@kde.org&gt;
 
+        Reviewed by NOBODY (OOPS!).
+
+        Add an interface to manage global history for clients
+
+        * Api/headers.pri:
+        * Api/qwebhistoryinterface.cpp: Added.
+        (WebCore::historyContains):
+        (gCleanupInterface):
+        (QWebHistoryInterface::setDefaultInterface):
+        (QWebHistoryInterface::defaultInterface):
+        (QWebHistoryInterface::QWebHistoryInterface):
+        * Api/qwebhistoryinterface.h: Added.
+
+2007-07-24  Adam Treat  &lt;treat@kde.org&gt;
+
         Reviewed by Niko and Lars.
 
         These are no longer necessary or used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>3769</commentid>
    <comment_count>3</comment_count>
      <attachid>15675</attachid>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2007-07-24 17:02:59 -0700</bug_when>
    <thetext>Comment on attachment 15675
QWebHistoryInterface

diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 050db5c..9c1f50a 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,12 @@
+2007-07-24  Adam Treat  &lt;treat@kde.org&gt;
+
+        Reviewed by NOBODY (OOPS!).
+
+        Add an interface to manage global history for clients
+
+        * WebCore.pro:
+        * platform/qt/TemporaryLinkStubs.cpp:
+
 2007-07-24  Beth Dakin  &lt;bdakin@apple.com&gt;
 
         Reviewed by Darin.
diff --git a/WebCore/WebCore.pro b/WebCore/WebCore.pro
index 4bd5a3b..c78a3cd 100644
--- a/WebCore/WebCore.pro
+++ b/WebCore/WebCore.pro
@@ -744,6 +744,7 @@ qt-port:HEADERS += \
     $$PWD/../WebKitQt/Api/qwebobjectplugin.h \
     $$PWD/../WebKitQt/Api/qwebobjectplugin_p.h \
     $$PWD/../WebKitQt/Api/qwebobjectpluginconnector.h \
+    $$PWD/../WebKitQt/Api/qwebhistoryinterface.h \
     $$PWD/../WebKitQt/Api/qcookiejar.h \
     $$PWD/../WebKitQt/WebCoreSupport/FrameLoaderClientQt.h
 
@@ -815,7 +816,8 @@ qt-port:SOURCES += \
     ../WebKitQt/Api/qwebpagehistory.cpp \
     ../WebKitQt/Api/qwebsettings.cpp \
     ../WebKitQt/Api/qwebobjectplugin.cpp \
-    ../WebKitQt/Api/qwebobjectpluginconnector.cpp 
+    ../WebKitQt/Api/qwebobjectpluginconnector.cpp \
+    ../WebKitQt/Api/qwebhistoryinterface.cpp
 
 gdk-port {
     HEADERS += \
diff --git a/WebCore/platform/qt/TemporaryLinkStubs.cpp b/WebCore/platform/qt/TemporaryLinkStubs.cpp
index 31f2fa2..afbfb6c 100644
--- a/WebCore/platform/qt/TemporaryLinkStubs.cpp
+++ b/WebCore/platform/qt/TemporaryLinkStubs.cpp
@@ -67,9 +67,6 @@
 
 using namespace WebCore;
 
-
-bool WebCore::historyContains(DeprecatedString const&amp;) { return false; }
-
 void Frame::setNeedsReapplyStyles() { notImplemented(); }
 
 void FrameView::updateBorder() { notImplemented(); }
diff --git a/WebKitQt/Api/headers.pri b/WebKitQt/Api/headers.pri
index 6331384..846b793 100644
--- a/WebKitQt/Api/headers.pri
+++ b/WebKitQt/Api/headers.pri
@@ -6,4 +6,5 @@ WEBKIT_API_HEADERS = $$PWD/qcookiejar.h \
                      $$PWD/qwebobjectpluginconnector.h \
                      $$PWD/qwebpage.h \
                      $$PWD/qwebpagehistory.h \
-                     $$PWD/qwebsettings.h
+                     $$PWD/qwebsettings.h \
+                     $$PWD/qwebhistoryinterface.h
diff --git a/WebKitQt/Api/qwebhistoryinterface.cpp b/WebKitQt/Api/qwebhistoryinterface.cpp
new file mode 100644
index 0000000..47ae506
--- /dev/null
+++ b/WebKitQt/Api/qwebhistoryinterface.cpp
@@ -0,0 +1,83 @@
+/*
+  Copyright (C) 2007 Staikos Computing Services Inc.  &lt;info@staikos.net&gt;
+
+  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., 59 Temple Place - Suite 330,
+  Boston, MA 02111-1307, USA.
+
+  This class provides all functionality needed tracking global history.
+*/
+
+#include &quot;qwebhistoryinterface.h&quot;
+
+#include &lt;QCoreApplication&gt;
+
+#include &quot;KURL.h&quot;
+
+namespace WebCore {
+
+bool historyContains(const DeprecatedString&amp; s)
+{
+    if (!QWebHistoryInterface::defaultInterface())
+        return false;
+
+    QUrl qurl = QString(KURL(s).url());
+    return QWebHistoryInterface::defaultInterface()-&gt;historyContains(qurl);
+}
+
+} // namespace WebCore
+
+static QWebHistoryInterface *default_interface = 0;
+
+static bool gRoutineAdded = false;
+
+static void gCleanupInterface()
+{
+    delete default_interface;
+    default_interface = 0;
+}
+
+/*!
+  Sets a new default interface that will be used by all of WebKit
+  for managing history.
+*/
+void QWebHistoryInterface::setDefaultInterface(QWebHistoryInterface *defaultInterface)
+{
+    if (default_interface == defaultInterface)
+        return;
+    if (default_interface)
+        delete default_interface;
+    default_interface = defaultInterface;
+    if (!gRoutineAdded) {
+        qAddPostRoutine(gCleanupInterface);
+        gRoutineAdded = true;
+    }
+}
+
+/*!
+  Returns the default interface that will be used by WebKit. If no
+  default interface has been set, QtWebkit will not track history.
+*/
+QWebHistoryInterface *QWebHistoryInterface::defaultInterface()
+{
+    return default_interface;
+}
+
+QWebHistoryInterface::QWebHistoryInterface(QObject *parent) : QObject(parent)
+{
+}
+
+QWebHistoryInterface::~QWebHistoryInterface()
+{
+}
diff --git a/WebKitQt/Api/qwebhistoryinterface.h b/WebKitQt/Api/qwebhistoryinterface.h
new file mode 100644
index 0000000..56507f7
--- /dev/null
+++ b/WebKitQt/Api/qwebhistoryinterface.h
@@ -0,0 +1,43 @@
+/*
+  Copyright (C) 2007 Staikos Computing Services, Inc.  &lt;info@staikos.net&gt;
+
+  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., 59 Temple Place - Suite 330,
+  Boston, MA 02111-1307, USA.
+
+  This class provides all functionality needed tracking global history.
+*/
+
+#ifndef QWEBHISTORYINTERFACE_H
+#define QWEBHISTORYINTERFACE_H
+
+#include &lt;qobject.h&gt;
+#include &lt;qurl.h&gt;
+
+#include &lt;qwebkitglobal.h&gt;
+
+class QWEBKIT_EXPORT QWebHistoryInterface : public QObject
+{
+    Q_OBJECT
+public:
+    QWebHistoryInterface(QObject *parent = 0);
+    ~QWebHistoryInterface();
+
+    static void setDefaultInterface(QWebHistoryInterface *defaultInterface);
+    static QWebHistoryInterface *defaultInterface();
+
+    virtual bool historyContains(const QUrl &amp;url) const = 0;
+};
+
+#endif
diff --git a/WebKitQt/ChangeLog b/WebKitQt/ChangeLog
index a7883be..b7cb2d6 100644
--- a/WebKitQt/ChangeLog
+++ b/WebKitQt/ChangeLog
@@ -1,5 +1,20 @@
 2007-07-24  Adam Treat  &lt;treat@kde.org&gt;
 
+        Reviewed by NOBODY (OOPS!).
+
+        Add an interface to manage global history for clients
+
+        * Api/headers.pri:
+        * Api/qwebhistoryinterface.cpp: Added.
+        (WebCore::historyContains):
+        (gCleanupInterface):
+        (QWebHistoryInterface::setDefaultInterface):
+        (QWebHistoryInterface::defaultInterface):
+        (QWebHistoryInterface::QWebHistoryInterface):
+        * Api/qwebhistoryinterface.h: Added.
+
+2007-07-24  Adam Treat  &lt;treat@kde.org&gt;
+
         Reviewed by Niko and Lars.
 
         These are no longer necessary or used.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>3758</commentid>
    <comment_count>4</comment_count>
      <attachid>15676</attachid>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2007-07-24 17:11:23 -0700</bug_when>
    <thetext>Created attachment 15676
QWebHistoryInterface

Correct comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>3386</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2007-07-31 03:44:51 -0700</bug_when>
    <thetext>I have two suggestions:

+static QWebHistoryInterface *default_interface = 0;
+
+static bool gRoutineAdded = false;

The explicit initializations will make the variables end up in the data section instead of bss. I suggest to remove the intialization, they will still be initialized to zero (3.6.2).

+bool historyContains(const DeprecatedString&amp; s)
+{
+    if (!QWebHistoryInterface::defaultInterface())
+        return false;
+
+    QUrl qurl = QString(KURL(s).url());
+    return QWebHistoryInterface::defaultInterface()-&gt;historyContains(qurl);
+}

I recall that in KDE we used to have a similar interface (HistoryProvider) and passing a url turned out to be a noticeable performance bottleneck as this function is called very often and it parses a URL every time. We changed it to use a plain QString as a result of that. Even though KURL does not have this problem anymore AFAIK we still have to convert it to a QUrl and it&apos;ll be parsed again. I think a plain const QString &amp; is a safer choice here.


P.S.: Nice to see more git usage :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>3286</commentid>
    <comment_count>6</comment_count>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2007-08-01 06:16:16 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; The explicit initializations will make the variables end up in the data section
&gt; instead of bss. I suggest to remove the intialization, they will still be
&gt; initialized to zero (3.6.2).

I can make the other changes, but I&apos;m not sure what you mean here.  This follows from what qwebhistoryinterface does to create a singleton.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>3190</commentid>
    <comment_count>7</comment_count>
      <attachid>15800</attachid>
    <who name="Adam Treat">manyoso</who>
    <bug_when>2007-08-01 21:04:55 -0700</bug_when>
    <thetext>Created attachment 15800
Revised patch after suggestions

Revised comments reflecting comments</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>15675</attachid>
            <date>2007-07-24 16:47:29 -0700</date>
            <delta_ts>2007-07-24 17:11:23 -0700</delta_ts>
            <desc>QWebHistoryInterface</desc>
            <filename>global_history.patch</filename>
            <type>text/plain</type>
            <size>7423</size>
            <attacher name="Adam Treat">manyoso</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDUwZGI1Yy4uOWMxZjUwYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAwNy0wNy0yNCAgQWRhbSBUcmVhdCAg
PHRyZWF0QGtkZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIGFuIGludGVyZmFjZSB0byBtYW5hZ2UgZ2xvYmFsIGhpc3RvcnkgZm9yIGNs
aWVudHMKKworICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Rl
bXBvcmFyeUxpbmtTdHVicy5jcHA6CisKIDIwMDctMDctMjQgIEJldGggRGFraW4gIDxiZGFraW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluLgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggNGJkNWEzYi4uYzc4
YTNjZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNv
cmUucHJvCkBAIC03NDQsNiArNzQ0LDcgQEAgcXQtcG9ydDpIRUFERVJTICs9IFwKICAgICAkJFBX
RC8uLi9XZWJLaXRRdC9BcGkvcXdlYm9iamVjdHBsdWdpbi5oIFwKICAgICAkJFBXRC8uLi9XZWJL
aXRRdC9BcGkvcXdlYm9iamVjdHBsdWdpbl9wLmggXAogICAgICQkUFdELy4uL1dlYktpdFF0L0Fw
aS9xd2Vib2JqZWN0cGx1Z2luY29ubmVjdG9yLmggXAorICAgICQkUFdELy4uL1dlYktpdFF0L0Fw
aS9xd2ViaGlzdG9yeWludGVyZmFjZS5oIFwKICAgICAkJFBXRC8uLi9XZWJLaXRRdC9BcGkvcWNv
b2tpZWphci5oIFwKICAgICAkJFBXRC8uLi9XZWJLaXRRdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFF0LmgKIApAQCAtODE1LDcgKzgxNiw4IEBAIHF0LXBvcnQ6U09VUkNFUyArPSBc
CiAgICAgLi4vV2ViS2l0UXQvQXBpL3F3ZWJwYWdlaGlzdG9yeS5jcHAgXAogICAgIC4uL1dlYktp
dFF0L0FwaS9xd2Vic2V0dGluZ3MuY3BwIFwKICAgICAuLi9XZWJLaXRRdC9BcGkvcXdlYm9iamVj
dHBsdWdpbi5jcHAgXAotICAgIC4uL1dlYktpdFF0L0FwaS9xd2Vib2JqZWN0cGx1Z2luY29ubmVj
dG9yLmNwcCAKKyAgICAuLi9XZWJLaXRRdC9BcGkvcXdlYm9iamVjdHBsdWdpbmNvbm5lY3Rvci5j
cHAgXAorICAgIC4uL1dlYktpdFF0L0FwaS9xd2ViaGlzdG9yeWludGVyZmFjZS5jcHAKIAogZ2Rr
LXBvcnQgewogICAgIEhFQURFUlMgKz0gXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9x
dC9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9UZW1wb3JhcnlM
aW5rU3R1YnMuY3BwCmluZGV4IDMxZjJmYTIuLmFmYmZiNmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vcXQvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L3F0L1RlbXBvcmFyeUxpbmtTdHVicy5jcHAKQEAgLTY3LDkgKzY3LDYgQEAKIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKLQotYm9vbCBXZWJDb3JlOjpoaXN0b3J5Q29udGFpbnMoRGVwcmVj
YXRlZFN0cmluZyBjb25zdCYpIHsgcmV0dXJuIGZhbHNlOyB9Ci0KIHZvaWQgRnJhbWU6OnNldE5l
ZWRzUmVhcHBseVN0eWxlcygpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQogCiB2b2lkIEZyYW1lVmll
dzo6dXBkYXRlQm9yZGVyKCkgeyBub3RJbXBsZW1lbnRlZCgpOyB9CmRpZmYgLS1naXQgYS9XZWJL
aXRRdC9BcGkvaGVhZGVycy5wcmkgYi9XZWJLaXRRdC9BcGkvaGVhZGVycy5wcmkKaW5kZXggNjMz
MTM4NC4uODQ2Yjc5MyAxMDA2NDQKLS0tIGEvV2ViS2l0UXQvQXBpL2hlYWRlcnMucHJpCisrKyBi
L1dlYktpdFF0L0FwaS9oZWFkZXJzLnByaQpAQCAtNiw0ICs2LDUgQEAgV0VCS0lUX0FQSV9IRUFE
RVJTID0gJCRQV0QvcWNvb2tpZWphci5oIFwKICAgICAgICAgICAgICAgICAgICAgICQkUFdEL3F3
ZWJvYmplY3RwbHVnaW5jb25uZWN0b3IuaCBcCiAgICAgICAgICAgICAgICAgICAgICAkJFBXRC9x
d2VicGFnZS5oIFwKICAgICAgICAgICAgICAgICAgICAgICQkUFdEL3F3ZWJwYWdlaGlzdG9yeS5o
IFwKLSAgICAgICAgICAgICAgICAgICAgICQkUFdEL3F3ZWJzZXR0aW5ncy5oCisgICAgICAgICAg
ICAgICAgICAgICAkJFBXRC9xd2Vic2V0dGluZ3MuaCBcCisgICAgICAgICAgICAgICAgICAgICAk
JFBXRC9xd2ViaGlzdG9yeWludGVyZmFjZS5oCmRpZmYgLS1naXQgYS9XZWJLaXRRdC9BcGkvcXdl
Ymhpc3RvcnlpbnRlcmZhY2UuY3BwIGIvV2ViS2l0UXQvQXBpL3F3ZWJoaXN0b3J5aW50ZXJmYWNl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjVmZGYxCi0tLSAvZGV2
L251bGwKKysrIGIvV2ViS2l0UXQvQXBpL3F3ZWJoaXN0b3J5aW50ZXJmYWNlLmNwcApAQCAtMCww
ICsxLDg0IEBACisvKgorICBDb3B5cmlnaHQgKEMpIDIwMDcgU3RhaWtvcyBDb21wdXRpbmcgU2Vy
dmljZXMgSW5jLiAgPGluZm9Ac3RhaWtvcy5uZXQ+CisKKyAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorCisgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5
IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0Eu
CisKKyAgVGhpcyBjbGFzcyBwcm92aWRlcyBhbGwgZnVuY3Rpb25hbGl0eSBuZWVkZWQgZm9yIGxv
YWRpbmcgaW1hZ2VzLCBzdHlsZSBzaGVldHMgYW5kIGh0bWwKKyAgcGFnZXMgZnJvbSB0aGUgd2Vi
LiBJdCBoYXMgYSBtZW1vcnkgY2FjaGUgZm9yIHRoZXNlIG9iamVjdHMuCisqLworCisjaW5jbHVk
ZSAicXdlYmhpc3RvcnlpbnRlcmZhY2UuaCIKKworI2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+
CisKKyNpbmNsdWRlICJLVVJMLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9vbCBoaXN0
b3J5Q29udGFpbnMoY29uc3QgRGVwcmVjYXRlZFN0cmluZyYgcykKK3sKKyAgICBpZiAoIVFXZWJI
aXN0b3J5SW50ZXJmYWNlOjpkZWZhdWx0SW50ZXJmYWNlKCkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIFFVcmwgcXVybCA9IFFTdHJpbmcoS1VSTChzKS51cmwoKSk7CisgICAgcmV0dXJu
IFFXZWJIaXN0b3J5SW50ZXJmYWNlOjpkZWZhdWx0SW50ZXJmYWNlKCktPmhpc3RvcnlDb250YWlu
cyhxdXJsKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCitzdGF0aWMgUVdlYkhpc3Rv
cnlJbnRlcmZhY2UgKmRlZmF1bHRfaW50ZXJmYWNlID0gMDsKKworc3RhdGljIGJvb2wgZ1JvdXRp
bmVBZGRlZCA9IGZhbHNlOworCitzdGF0aWMgdm9pZCBnQ2xlYW51cEludGVyZmFjZSgpCit7Cisg
ICAgZGVsZXRlIGRlZmF1bHRfaW50ZXJmYWNlOworICAgIGRlZmF1bHRfaW50ZXJmYWNlID0gMDsK
K30KKworLyohCisgIFNldHMgYSBuZXcgZGVmYXVsdCBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIHVz
ZWQgYnkgYWxsIG9mIFdlYktpdAorICBmb3IgbWFuYWdpbmcgaGlzdG9yeS4KKyovCit2b2lkIFFX
ZWJIaXN0b3J5SW50ZXJmYWNlOjpzZXREZWZhdWx0SW50ZXJmYWNlKFFXZWJIaXN0b3J5SW50ZXJm
YWNlICpkZWZhdWx0SW50ZXJmYWNlKQoreworICAgIGlmIChkZWZhdWx0X2ludGVyZmFjZSA9PSBk
ZWZhdWx0SW50ZXJmYWNlKQorICAgICAgICByZXR1cm47CisgICAgaWYgKGRlZmF1bHRfaW50ZXJm
YWNlKQorICAgICAgICBkZWxldGUgZGVmYXVsdF9pbnRlcmZhY2U7CisgICAgZGVmYXVsdF9pbnRl
cmZhY2UgPSBkZWZhdWx0SW50ZXJmYWNlOworICAgIGlmICghZ1JvdXRpbmVBZGRlZCkgeworICAg
ICAgICBxQWRkUG9zdFJvdXRpbmUoZ0NsZWFudXBJbnRlcmZhY2UpOworICAgICAgICBnUm91dGlu
ZUFkZGVkID0gdHJ1ZTsKKyAgICB9Cit9CisKKy8qIQorICBSZXR1cm5zIHRoZSBkZWZhdWx0IGlu
dGVyZmFjZSB0aGF0IHdpbGwgYmUgdXNlZCBieSBXZWJLaXQuIElmIG5vCisgIGRlZmF1bHQgaW50
ZXJmYWNlIGhhcyBiZWVuIHNldCwgUXRXZWJraXQgd2lsbCBub3QgdHJhY2sgaGlzdG9yeS4KKyov
CitRV2ViSGlzdG9yeUludGVyZmFjZSAqUVdlYkhpc3RvcnlJbnRlcmZhY2U6OmRlZmF1bHRJbnRl
cmZhY2UoKQoreworICAgIHJldHVybiBkZWZhdWx0X2ludGVyZmFjZTsKK30KKworUVdlYkhpc3Rv
cnlJbnRlcmZhY2U6OlFXZWJIaXN0b3J5SW50ZXJmYWNlKFFPYmplY3QgKnBhcmVudCkgOiBRT2Jq
ZWN0KHBhcmVudCkKK3sKK30KKworUVdlYkhpc3RvcnlJbnRlcmZhY2U6On5RV2ViSGlzdG9yeUlu
dGVyZmFjZSgpCit7Cit9CmRpZmYgLS1naXQgYS9XZWJLaXRRdC9BcGkvcXdlYmhpc3RvcnlpbnRl
cmZhY2UuaCBiL1dlYktpdFF0L0FwaS9xd2ViaGlzdG9yeWludGVyZmFjZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViNTZhNzcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJL
aXRRdC9BcGkvcXdlYmhpc3RvcnlpbnRlcmZhY2UuaApAQCAtMCwwICsxLDQ0IEBACisvKgorICBD
b3B5cmlnaHQgKEMpIDIwMDcgU3RhaWtvcyBDb21wdXRpbmcgU2VydmljZXMsIEluYy4gIDxpbmZv
QHN0YWlrb3MubmV0PgorCisgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgIHZlcnNpb24gMiBvZiB0aGUg
TGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
IGZvciBtb3JlIGRldGFpbHMuCisKKyAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICBhbG9uZyB3aXRoIHRo
aXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bwor
ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBT
dWl0ZSAzMzAsCisgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorCisgIFRoaXMgY2xhc3Mg
cHJvdmlkZXMgYWxsIGZ1bmN0aW9uYWxpdHkgbmVlZGVkIGZvciBsb2FkaW5nIGltYWdlcywgc3R5
bGUgc2hlZXRzIGFuZCBodG1sCisgIHBhZ2VzIGZyb20gdGhlIHdlYi4gSXQgaGFzIGEgbWVtb3J5
IGNhY2hlIGZvciB0aGVzZSBvYmplY3RzLgorKi8KKworI2lmbmRlZiBRV0VCSElTVE9SWUlOVEVS
RkFDRV9ICisjZGVmaW5lIFFXRUJISVNUT1JZSU5URVJGQUNFX0gKKworI2luY2x1ZGUgPHFvYmpl
Y3QuaD4KKyNpbmNsdWRlIDxxdXJsLmg+CisKKyNpbmNsdWRlIDxxd2Via2l0Z2xvYmFsLmg+CisK
K2NsYXNzIFFXRUJLSVRfRVhQT1JUIFFXZWJIaXN0b3J5SW50ZXJmYWNlIDogcHVibGljIFFPYmpl
Y3QKK3sKKyAgICBRX09CSkVDVAorcHVibGljOgorICAgIFFXZWJIaXN0b3J5SW50ZXJmYWNlKFFP
YmplY3QgKnBhcmVudCA9IDApOworICAgIH5RV2ViSGlzdG9yeUludGVyZmFjZSgpOworCisgICAg
c3RhdGljIHZvaWQgc2V0RGVmYXVsdEludGVyZmFjZShRV2ViSGlzdG9yeUludGVyZmFjZSAqZGVm
YXVsdEludGVyZmFjZSk7CisgICAgc3RhdGljIFFXZWJIaXN0b3J5SW50ZXJmYWNlICpkZWZhdWx0
SW50ZXJmYWNlKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgaGlzdG9yeUNvbnRhaW5zKGNvbnN0IFFV
cmwgJnVybCkgY29uc3QgPSAwOworfTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJLaXRRdC9D
aGFuZ2VMb2cgYi9XZWJLaXRRdC9DaGFuZ2VMb2cKaW5kZXggYTc4ODNiZS4uYjdjYjJkNiAxMDA2
NDQKLS0tIGEvV2ViS2l0UXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFF0L0NoYW5nZUxvZwpAQCAt
MSw1ICsxLDIwIEBACiAyMDA3LTA3LTI0ICBBZGFtIFRyZWF0ICA8dHJlYXRAa2RlLm9yZz4KIAor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYW4gaW50
ZXJmYWNlIHRvIG1hbmFnZSBnbG9iYWwgaGlzdG9yeSBmb3IgY2xpZW50cworCisgICAgICAgICog
QXBpL2hlYWRlcnMucHJpOgorICAgICAgICAqIEFwaS9xd2ViaGlzdG9yeWludGVyZmFjZS5jcHA6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6aGlzdG9yeUNvbnRhaW5zKToKKyAgICAgICAgKGdD
bGVhbnVwSW50ZXJmYWNlKToKKyAgICAgICAgKFFXZWJIaXN0b3J5SW50ZXJmYWNlOjpzZXREZWZh
dWx0SW50ZXJmYWNlKToKKyAgICAgICAgKFFXZWJIaXN0b3J5SW50ZXJmYWNlOjpkZWZhdWx0SW50
ZXJmYWNlKToKKyAgICAgICAgKFFXZWJIaXN0b3J5SW50ZXJmYWNlOjpRV2ViSGlzdG9yeUludGVy
ZmFjZSk6CisgICAgICAgICogQXBpL3F3ZWJoaXN0b3J5aW50ZXJmYWNlLmg6IEFkZGVkLgorCisy
MDA3LTA3LTI0ICBBZGFtIFRyZWF0ICA8dHJlYXRAa2RlLm9yZz4KKwogICAgICAgICBSZXZpZXdl
ZCBieSBOaWtvIGFuZCBMYXJzLgogCiAgICAgICAgIFRoZXNlIGFyZSBubyBsb25nZXIgbmVjZXNz
YXJ5IG9yIHVzZWQuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>15676</attachid>
            <date>2007-07-24 17:11:23 -0700</date>
            <delta_ts>2007-08-01 21:05:16 -0700</delta_ts>
            <desc>QWebHistoryInterface</desc>
            <filename>global_history.patch</filename>
            <type>text/plain</type>
            <size>7261</size>
            <attacher name="Adam Treat">manyoso</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MDUwZGI1Yy4uOWMxZjUwYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMiBAQAorMjAwNy0wNy0yNCAgQWRhbSBUcmVhdCAg
PHRyZWF0QGtkZS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIGFuIGludGVyZmFjZSB0byBtYW5hZ2UgZ2xvYmFsIGhpc3RvcnkgZm9yIGNs
aWVudHMKKworICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Rl
bXBvcmFyeUxpbmtTdHVicy5jcHA6CisKIDIwMDctMDctMjQgIEJldGggRGFraW4gIDxiZGFraW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluLgpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5kZXggNGJkNWEzYi4uYzc4
YTNjZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysgYi9XZWJDb3JlL1dlYkNv
cmUucHJvCkBAIC03NDQsNiArNzQ0LDcgQEAgcXQtcG9ydDpIRUFERVJTICs9IFwKICAgICAkJFBX
RC8uLi9XZWJLaXRRdC9BcGkvcXdlYm9iamVjdHBsdWdpbi5oIFwKICAgICAkJFBXRC8uLi9XZWJL
aXRRdC9BcGkvcXdlYm9iamVjdHBsdWdpbl9wLmggXAogICAgICQkUFdELy4uL1dlYktpdFF0L0Fw
aS9xd2Vib2JqZWN0cGx1Z2luY29ubmVjdG9yLmggXAorICAgICQkUFdELy4uL1dlYktpdFF0L0Fw
aS9xd2ViaGlzdG9yeWludGVyZmFjZS5oIFwKICAgICAkJFBXRC8uLi9XZWJLaXRRdC9BcGkvcWNv
b2tpZWphci5oIFwKICAgICAkJFBXRC8uLi9XZWJLaXRRdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudFF0LmgKIApAQCAtODE1LDcgKzgxNiw4IEBAIHF0LXBvcnQ6U09VUkNFUyArPSBc
CiAgICAgLi4vV2ViS2l0UXQvQXBpL3F3ZWJwYWdlaGlzdG9yeS5jcHAgXAogICAgIC4uL1dlYktp
dFF0L0FwaS9xd2Vic2V0dGluZ3MuY3BwIFwKICAgICAuLi9XZWJLaXRRdC9BcGkvcXdlYm9iamVj
dHBsdWdpbi5jcHAgXAotICAgIC4uL1dlYktpdFF0L0FwaS9xd2Vib2JqZWN0cGx1Z2luY29ubmVj
dG9yLmNwcCAKKyAgICAuLi9XZWJLaXRRdC9BcGkvcXdlYm9iamVjdHBsdWdpbmNvbm5lY3Rvci5j
cHAgXAorICAgIC4uL1dlYktpdFF0L0FwaS9xd2ViaGlzdG9yeWludGVyZmFjZS5jcHAKIAogZ2Rr
LXBvcnQgewogICAgIEhFQURFUlMgKz0gXApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9x
dC9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9xdC9UZW1wb3JhcnlM
aW5rU3R1YnMuY3BwCmluZGV4IDMxZjJmYTIuLmFmYmZiNmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vcXQvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L3F0L1RlbXBvcmFyeUxpbmtTdHVicy5jcHAKQEAgLTY3LDkgKzY3LDYgQEAKIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKLQotYm9vbCBXZWJDb3JlOjpoaXN0b3J5Q29udGFpbnMoRGVwcmVj
YXRlZFN0cmluZyBjb25zdCYpIHsgcmV0dXJuIGZhbHNlOyB9Ci0KIHZvaWQgRnJhbWU6OnNldE5l
ZWRzUmVhcHBseVN0eWxlcygpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQogCiB2b2lkIEZyYW1lVmll
dzo6dXBkYXRlQm9yZGVyKCkgeyBub3RJbXBsZW1lbnRlZCgpOyB9CmRpZmYgLS1naXQgYS9XZWJL
aXRRdC9BcGkvaGVhZGVycy5wcmkgYi9XZWJLaXRRdC9BcGkvaGVhZGVycy5wcmkKaW5kZXggNjMz
MTM4NC4uODQ2Yjc5MyAxMDA2NDQKLS0tIGEvV2ViS2l0UXQvQXBpL2hlYWRlcnMucHJpCisrKyBi
L1dlYktpdFF0L0FwaS9oZWFkZXJzLnByaQpAQCAtNiw0ICs2LDUgQEAgV0VCS0lUX0FQSV9IRUFE
RVJTID0gJCRQV0QvcWNvb2tpZWphci5oIFwKICAgICAgICAgICAgICAgICAgICAgICQkUFdEL3F3
ZWJvYmplY3RwbHVnaW5jb25uZWN0b3IuaCBcCiAgICAgICAgICAgICAgICAgICAgICAkJFBXRC9x
d2VicGFnZS5oIFwKICAgICAgICAgICAgICAgICAgICAgICQkUFdEL3F3ZWJwYWdlaGlzdG9yeS5o
IFwKLSAgICAgICAgICAgICAgICAgICAgICQkUFdEL3F3ZWJzZXR0aW5ncy5oCisgICAgICAgICAg
ICAgICAgICAgICAkJFBXRC9xd2Vic2V0dGluZ3MuaCBcCisgICAgICAgICAgICAgICAgICAgICAk
JFBXRC9xd2ViaGlzdG9yeWludGVyZmFjZS5oCmRpZmYgLS1naXQgYS9XZWJLaXRRdC9BcGkvcXdl
Ymhpc3RvcnlpbnRlcmZhY2UuY3BwIGIvV2ViS2l0UXQvQXBpL3F3ZWJoaXN0b3J5aW50ZXJmYWNl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40N2FlNTA2Ci0tLSAvZGV2
L251bGwKKysrIGIvV2ViS2l0UXQvQXBpL3F3ZWJoaXN0b3J5aW50ZXJmYWNlLmNwcApAQCAtMCww
ICsxLDgzIEBACisvKgorICBDb3B5cmlnaHQgKEMpIDIwMDcgU3RhaWtvcyBDb21wdXRpbmcgU2Vy
dmljZXMgSW5jLiAgPGluZm9Ac3RhaWtvcy5uZXQ+CisKKyAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorCisgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5
IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0Eu
CisKKyAgVGhpcyBjbGFzcyBwcm92aWRlcyBhbGwgZnVuY3Rpb25hbGl0eSBuZWVkZWQgdHJhY2tp
bmcgZ2xvYmFsIGhpc3RvcnkuCisqLworCisjaW5jbHVkZSAicXdlYmhpc3RvcnlpbnRlcmZhY2Uu
aCIKKworI2luY2x1ZGUgPFFDb3JlQXBwbGljYXRpb24+CisKKyNpbmNsdWRlICJLVVJMLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworYm9vbCBoaXN0b3J5Q29udGFpbnMoY29uc3QgRGVwcmVj
YXRlZFN0cmluZyYgcykKK3sKKyAgICBpZiAoIVFXZWJIaXN0b3J5SW50ZXJmYWNlOjpkZWZhdWx0
SW50ZXJmYWNlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFFVcmwgcXVybCA9IFFT
dHJpbmcoS1VSTChzKS51cmwoKSk7CisgICAgcmV0dXJuIFFXZWJIaXN0b3J5SW50ZXJmYWNlOjpk
ZWZhdWx0SW50ZXJmYWNlKCktPmhpc3RvcnlDb250YWlucyhxdXJsKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCitzdGF0aWMgUVdlYkhpc3RvcnlJbnRlcmZhY2UgKmRlZmF1bHRfaW50
ZXJmYWNlID0gMDsKKworc3RhdGljIGJvb2wgZ1JvdXRpbmVBZGRlZCA9IGZhbHNlOworCitzdGF0
aWMgdm9pZCBnQ2xlYW51cEludGVyZmFjZSgpCit7CisgICAgZGVsZXRlIGRlZmF1bHRfaW50ZXJm
YWNlOworICAgIGRlZmF1bHRfaW50ZXJmYWNlID0gMDsKK30KKworLyohCisgIFNldHMgYSBuZXcg
ZGVmYXVsdCBpbnRlcmZhY2UgdGhhdCB3aWxsIGJlIHVzZWQgYnkgYWxsIG9mIFdlYktpdAorICBm
b3IgbWFuYWdpbmcgaGlzdG9yeS4KKyovCit2b2lkIFFXZWJIaXN0b3J5SW50ZXJmYWNlOjpzZXRE
ZWZhdWx0SW50ZXJmYWNlKFFXZWJIaXN0b3J5SW50ZXJmYWNlICpkZWZhdWx0SW50ZXJmYWNlKQor
eworICAgIGlmIChkZWZhdWx0X2ludGVyZmFjZSA9PSBkZWZhdWx0SW50ZXJmYWNlKQorICAgICAg
ICByZXR1cm47CisgICAgaWYgKGRlZmF1bHRfaW50ZXJmYWNlKQorICAgICAgICBkZWxldGUgZGVm
YXVsdF9pbnRlcmZhY2U7CisgICAgZGVmYXVsdF9pbnRlcmZhY2UgPSBkZWZhdWx0SW50ZXJmYWNl
OworICAgIGlmICghZ1JvdXRpbmVBZGRlZCkgeworICAgICAgICBxQWRkUG9zdFJvdXRpbmUoZ0Ns
ZWFudXBJbnRlcmZhY2UpOworICAgICAgICBnUm91dGluZUFkZGVkID0gdHJ1ZTsKKyAgICB9Cit9
CisKKy8qIQorICBSZXR1cm5zIHRoZSBkZWZhdWx0IGludGVyZmFjZSB0aGF0IHdpbGwgYmUgdXNl
ZCBieSBXZWJLaXQuIElmIG5vCisgIGRlZmF1bHQgaW50ZXJmYWNlIGhhcyBiZWVuIHNldCwgUXRX
ZWJraXQgd2lsbCBub3QgdHJhY2sgaGlzdG9yeS4KKyovCitRV2ViSGlzdG9yeUludGVyZmFjZSAq
UVdlYkhpc3RvcnlJbnRlcmZhY2U6OmRlZmF1bHRJbnRlcmZhY2UoKQoreworICAgIHJldHVybiBk
ZWZhdWx0X2ludGVyZmFjZTsKK30KKworUVdlYkhpc3RvcnlJbnRlcmZhY2U6OlFXZWJIaXN0b3J5
SW50ZXJmYWNlKFFPYmplY3QgKnBhcmVudCkgOiBRT2JqZWN0KHBhcmVudCkKK3sKK30KKworUVdl
Ykhpc3RvcnlJbnRlcmZhY2U6On5RV2ViSGlzdG9yeUludGVyZmFjZSgpCit7Cit9CmRpZmYgLS1n
aXQgYS9XZWJLaXRRdC9BcGkvcXdlYmhpc3RvcnlpbnRlcmZhY2UuaCBiL1dlYktpdFF0L0FwaS9x
d2ViaGlzdG9yeWludGVyZmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjU2NTA3ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRRdC9BcGkvcXdlYmhpc3RvcnlpbnRl
cmZhY2UuaApAQCAtMCwwICsxLDQzIEBACisvKgorICBDb3B5cmlnaHQgKEMpIDIwMDcgU3RhaWtv
cyBDb21wdXRpbmcgU2VydmljZXMsIEluYy4gIDxpbmZvQHN0YWlrb3MubmV0PgorCisgIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh
dGlvbjsgZWl0aGVyCisgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgTUVSQ0hBTlRB
QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUK
KyAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAg
WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZQorICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCisgIEJvc3RvbiwgTUEg
MDIxMTEtMTMwNywgVVNBLgorCisgIFRoaXMgY2xhc3MgcHJvdmlkZXMgYWxsIGZ1bmN0aW9uYWxp
dHkgbmVlZGVkIHRyYWNraW5nIGdsb2JhbCBoaXN0b3J5LgorKi8KKworI2lmbmRlZiBRV0VCSElT
VE9SWUlOVEVSRkFDRV9ICisjZGVmaW5lIFFXRUJISVNUT1JZSU5URVJGQUNFX0gKKworI2luY2x1
ZGUgPHFvYmplY3QuaD4KKyNpbmNsdWRlIDxxdXJsLmg+CisKKyNpbmNsdWRlIDxxd2Via2l0Z2xv
YmFsLmg+CisKK2NsYXNzIFFXRUJLSVRfRVhQT1JUIFFXZWJIaXN0b3J5SW50ZXJmYWNlIDogcHVi
bGljIFFPYmplY3QKK3sKKyAgICBRX09CSkVDVAorcHVibGljOgorICAgIFFXZWJIaXN0b3J5SW50
ZXJmYWNlKFFPYmplY3QgKnBhcmVudCA9IDApOworICAgIH5RV2ViSGlzdG9yeUludGVyZmFjZSgp
OworCisgICAgc3RhdGljIHZvaWQgc2V0RGVmYXVsdEludGVyZmFjZShRV2ViSGlzdG9yeUludGVy
ZmFjZSAqZGVmYXVsdEludGVyZmFjZSk7CisgICAgc3RhdGljIFFXZWJIaXN0b3J5SW50ZXJmYWNl
ICpkZWZhdWx0SW50ZXJmYWNlKCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgaGlzdG9yeUNvbnRhaW5z
KGNvbnN0IFFVcmwgJnVybCkgY29uc3QgPSAwOworfTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9X
ZWJLaXRRdC9DaGFuZ2VMb2cgYi9XZWJLaXRRdC9DaGFuZ2VMb2cKaW5kZXggYTc4ODNiZS4uYjdj
YjJkNiAxMDA2NDQKLS0tIGEvV2ViS2l0UXQvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFF0L0NoYW5n
ZUxvZwpAQCAtMSw1ICsxLDIwIEBACiAyMDA3LTA3LTI0ICBBZGFtIFRyZWF0ICA8dHJlYXRAa2Rl
Lm9yZz4KIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgYW4gaW50ZXJmYWNlIHRvIG1hbmFnZSBnbG9iYWwgaGlzdG9yeSBmb3IgY2xpZW50cworCisg
ICAgICAgICogQXBpL2hlYWRlcnMucHJpOgorICAgICAgICAqIEFwaS9xd2ViaGlzdG9yeWludGVy
ZmFjZS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6aGlzdG9yeUNvbnRhaW5zKToKKyAg
ICAgICAgKGdDbGVhbnVwSW50ZXJmYWNlKToKKyAgICAgICAgKFFXZWJIaXN0b3J5SW50ZXJmYWNl
OjpzZXREZWZhdWx0SW50ZXJmYWNlKToKKyAgICAgICAgKFFXZWJIaXN0b3J5SW50ZXJmYWNlOjpk
ZWZhdWx0SW50ZXJmYWNlKToKKyAgICAgICAgKFFXZWJIaXN0b3J5SW50ZXJmYWNlOjpRV2ViSGlz
dG9yeUludGVyZmFjZSk6CisgICAgICAgICogQXBpL3F3ZWJoaXN0b3J5aW50ZXJmYWNlLmg6IEFk
ZGVkLgorCisyMDA3LTA3LTI0ICBBZGFtIFRyZWF0ICA8dHJlYXRAa2RlLm9yZz4KKwogICAgICAg
ICBSZXZpZXdlZCBieSBOaWtvIGFuZCBMYXJzLgogCiAgICAgICAgIFRoZXNlIGFyZSBubyBsb25n
ZXIgbmVjZXNzYXJ5IG9yIHVzZWQuCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>15800</attachid>
            <date>2007-08-01 21:04:55 -0700</date>
            <delta_ts>2007-08-01 21:17:09 -0700</delta_ts>
            <desc>Revised patch after suggestions</desc>
            <filename>globalhis.patch</filename>
            <type>text/plain</type>
            <size>7224</size>
            <attacher name="Adam Treat">manyoso</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZjQyYWIwNi4uNmNlNWEzMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxNCBAQAogMjAwNy0wOC0wMSAgQWRhbSBUcmVhdCAg
PHRyZWF0QGtkZS5vcmc+CiAKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIGFuIGludGVyZmFjZSB0byBtYW5hZ2UgZ2xvYmFsIGhpc3RvcnkgZm9yIGNs
aWVudHMKKworICAgICAgICAqIFdlYkNvcmUucHJvOgorICAgICAgICAqIHBsYXRmb3JtL3F0L1Rl
bXBvcmFyeUxpbmtTdHVicy5jcHA6CisKKzIwMDctMDgtMDEgIEFkYW0gVHJlYXQgIDx0cmVhdEBr
ZGUub3JnPgorCiAgICAgICAgIFJldmlld2VkIGJ5IEdlb3JnZSBTdGFpa29zLgogCiAgICAgICAg
IERvIG5vdCBjYWxsIHVwZGF0ZSBvciBwYWludCBmcm9tIGluc2lkZSBhIHBhaW50IGV2ZW50Lgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1dlYkNvcmUvV2ViQ29yZS5wcm8KaW5k
ZXggMmVmMzI0Yy4uMTE1ZjIyYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9XZWJDb3JlLnBybworKysg
Yi9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC03NTgsNiArNzU4LDcgQEAgcXQtcG9ydDpIRUFERVJT
ICs9IFwKICAgICAkJFBXRC8uLi9XZWJLaXRRdC9BcGkvcXdlYm9iamVjdHBsdWdpbi5oIFwKICAg
ICAkJFBXRC8uLi9XZWJLaXRRdC9BcGkvcXdlYm9iamVjdHBsdWdpbl9wLmggXAogICAgICQkUFdE
Ly4uL1dlYktpdFF0L0FwaS9xd2Vib2JqZWN0cGx1Z2luY29ubmVjdG9yLmggXAorICAgICQkUFdE
Ly4uL1dlYktpdFF0L0FwaS9xd2ViaGlzdG9yeWludGVyZmFjZS5oIFwKICAgICAkJFBXRC8uLi9X
ZWJLaXRRdC9BcGkvcWNvb2tpZWphci5oIFwKICAgICAkJFBXRC8uLi9XZWJLaXRRdC9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgKIApAQCAtODI5LDcgKzgzMCw4IEBAIHF0LXBv
cnQ6U09VUkNFUyArPSBcCiAgICAgLi4vV2ViS2l0UXQvQXBpL3F3ZWJwYWdlaGlzdG9yeS5jcHAg
XAogICAgIC4uL1dlYktpdFF0L0FwaS9xd2Vic2V0dGluZ3MuY3BwIFwKICAgICAuLi9XZWJLaXRR
dC9BcGkvcXdlYm9iamVjdHBsdWdpbi5jcHAgXAotICAgIC4uL1dlYktpdFF0L0FwaS9xd2Vib2Jq
ZWN0cGx1Z2luY29ubmVjdG9yLmNwcCAKKyAgICAuLi9XZWJLaXRRdC9BcGkvcXdlYm9iamVjdHBs
dWdpbmNvbm5lY3Rvci5jcHAgXAorICAgIC4uL1dlYktpdFF0L0FwaS9xd2ViaGlzdG9yeWludGVy
ZmFjZS5jcHAKIAogZ2RrLXBvcnQgewogICAgIEhFQURFUlMgKz0gXApkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9xdC9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwIGIvV2ViQ29yZS9wbGF0Zm9y
bS9xdC9UZW1wb3JhcnlMaW5rU3R1YnMuY3BwCmluZGV4IDMxZjJmYTIuLmFmYmZiNmMgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vcXQvVGVtcG9yYXJ5TGlua1N0dWJzLmNwcAorKysgYi9X
ZWJDb3JlL3BsYXRmb3JtL3F0L1RlbXBvcmFyeUxpbmtTdHVicy5jcHAKQEAgLTY3LDkgKzY3LDYg
QEAKIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKLQotYm9vbCBXZWJDb3JlOjpoaXN0b3J5
Q29udGFpbnMoRGVwcmVjYXRlZFN0cmluZyBjb25zdCYpIHsgcmV0dXJuIGZhbHNlOyB9Ci0KIHZv
aWQgRnJhbWU6OnNldE5lZWRzUmVhcHBseVN0eWxlcygpIHsgbm90SW1wbGVtZW50ZWQoKTsgfQog
CiB2b2lkIEZyYW1lVmlldzo6dXBkYXRlQm9yZGVyKCkgeyBub3RJbXBsZW1lbnRlZCgpOyB9CmRp
ZmYgLS1naXQgYS9XZWJLaXRRdC9BcGkvaGVhZGVycy5wcmkgYi9XZWJLaXRRdC9BcGkvaGVhZGVy
cy5wcmkKaW5kZXggNjMzMTM4NC4uODQ2Yjc5MyAxMDA2NDQKLS0tIGEvV2ViS2l0UXQvQXBpL2hl
YWRlcnMucHJpCisrKyBiL1dlYktpdFF0L0FwaS9oZWFkZXJzLnByaQpAQCAtNiw0ICs2LDUgQEAg
V0VCS0lUX0FQSV9IRUFERVJTID0gJCRQV0QvcWNvb2tpZWphci5oIFwKICAgICAgICAgICAgICAg
ICAgICAgICQkUFdEL3F3ZWJvYmplY3RwbHVnaW5jb25uZWN0b3IuaCBcCiAgICAgICAgICAgICAg
ICAgICAgICAkJFBXRC9xd2VicGFnZS5oIFwKICAgICAgICAgICAgICAgICAgICAgICQkUFdEL3F3
ZWJwYWdlaGlzdG9yeS5oIFwKLSAgICAgICAgICAgICAgICAgICAgICQkUFdEL3F3ZWJzZXR0aW5n
cy5oCisgICAgICAgICAgICAgICAgICAgICAkJFBXRC9xd2Vic2V0dGluZ3MuaCBcCisgICAgICAg
ICAgICAgICAgICAgICAkJFBXRC9xd2ViaGlzdG9yeWludGVyZmFjZS5oCmRpZmYgLS1naXQgYS9X
ZWJLaXRRdC9BcGkvcXdlYmhpc3RvcnlpbnRlcmZhY2UuY3BwIGIvV2ViS2l0UXQvQXBpL3F3ZWJo
aXN0b3J5aW50ZXJmYWNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5l
OWUwZWMwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0UXQvQXBpL3F3ZWJoaXN0b3J5aW50ZXJm
YWNlLmNwcApAQCAtMCwwICsxLDgyIEBACisvKgorICBDb3B5cmlnaHQgKEMpIDIwMDcgU3RhaWtv
cyBDb21wdXRpbmcgU2VydmljZXMgSW5jLiAgPGluZm9Ac3RhaWtvcy5uZXQ+CisKKyAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRp
b24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICBidXQgV0lUSE9VVCBBTlkgV0FS
UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICBZ
b3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlCisgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUg
Q09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAgQm9zdG9uLCBNQSAw
MjExMS0xMzA3LCBVU0EuCisKKyAgVGhpcyBjbGFzcyBwcm92aWRlcyBhbGwgZnVuY3Rpb25hbGl0
eSBuZWVkZWQgZm9yIHRyYWNraW5nIGdsb2JhbCBoaXN0b3J5LgorKi8KKworI2luY2x1ZGUgInF3
ZWJoaXN0b3J5aW50ZXJmYWNlLmgiCisKKyNpbmNsdWRlIDxRQ29yZUFwcGxpY2F0aW9uPgorCisj
aW5jbHVkZSAiRGVwcmVjYXRlZFN0cmluZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Jv
b2wgaGlzdG9yeUNvbnRhaW5zKGNvbnN0IERlcHJlY2F0ZWRTdHJpbmcmIHMpCit7CisgICAgaWYg
KCFRV2ViSGlzdG9yeUludGVyZmFjZTo6ZGVmYXVsdEludGVyZmFjZSgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICByZXR1cm4gUVdlYkhpc3RvcnlJbnRlcmZhY2U6OmRlZmF1bHRJbnRl
cmZhY2UoKS0+aGlzdG9yeUNvbnRhaW5zKFFTdHJpbmcocykpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKK3N0YXRpYyBRV2ViSGlzdG9yeUludGVyZmFjZSAqZGVmYXVsdF9pbnRlcmZh
Y2U7CisKK3N0YXRpYyBib29sIGdSb3V0aW5lQWRkZWQ7CisKK3N0YXRpYyB2b2lkIGdDbGVhbnVw
SW50ZXJmYWNlKCkKK3sKKyAgICBkZWxldGUgZGVmYXVsdF9pbnRlcmZhY2U7CisgICAgZGVmYXVs
dF9pbnRlcmZhY2UgPSAwOworfQorCisvKiEKKyAgU2V0cyBhIG5ldyBkZWZhdWx0IGludGVyZmFj
ZSB0aGF0IHdpbGwgYmUgdXNlZCBieSBhbGwgb2YgV2ViS2l0CisgIGZvciBtYW5hZ2luZyBoaXN0
b3J5LgorKi8KK3ZvaWQgUVdlYkhpc3RvcnlJbnRlcmZhY2U6OnNldERlZmF1bHRJbnRlcmZhY2Uo
UVdlYkhpc3RvcnlJbnRlcmZhY2UgKmRlZmF1bHRJbnRlcmZhY2UpCit7CisgICAgaWYgKGRlZmF1
bHRfaW50ZXJmYWNlID09IGRlZmF1bHRJbnRlcmZhY2UpCisgICAgICAgIHJldHVybjsKKyAgICBp
ZiAoZGVmYXVsdF9pbnRlcmZhY2UpCisgICAgICAgIGRlbGV0ZSBkZWZhdWx0X2ludGVyZmFjZTsK
KyAgICBkZWZhdWx0X2ludGVyZmFjZSA9IGRlZmF1bHRJbnRlcmZhY2U7CisgICAgaWYgKCFnUm91
dGluZUFkZGVkKSB7CisgICAgICAgIHFBZGRQb3N0Um91dGluZShnQ2xlYW51cEludGVyZmFjZSk7
CisgICAgICAgIGdSb3V0aW5lQWRkZWQgPSB0cnVlOworICAgIH0KK30KKworLyohCisgIFJldHVy
bnMgdGhlIGRlZmF1bHQgaW50ZXJmYWNlIHRoYXQgd2lsbCBiZSB1c2VkIGJ5IFdlYktpdC4gSWYg
bm8KKyAgZGVmYXVsdCBpbnRlcmZhY2UgaGFzIGJlZW4gc2V0LCBRdFdlYmtpdCB3aWxsIG5vdCB0
cmFjayBoaXN0b3J5LgorKi8KK1FXZWJIaXN0b3J5SW50ZXJmYWNlICpRV2ViSGlzdG9yeUludGVy
ZmFjZTo6ZGVmYXVsdEludGVyZmFjZSgpCit7CisgICAgcmV0dXJuIGRlZmF1bHRfaW50ZXJmYWNl
OworfQorCitRV2ViSGlzdG9yeUludGVyZmFjZTo6UVdlYkhpc3RvcnlJbnRlcmZhY2UoUU9iamVj
dCAqcGFyZW50KSA6IFFPYmplY3QocGFyZW50KQoreworfQorCitRV2ViSGlzdG9yeUludGVyZmFj
ZTo6flFXZWJIaXN0b3J5SW50ZXJmYWNlKCkKK3sKK30KZGlmZiAtLWdpdCBhL1dlYktpdFF0L0Fw
aS9xd2ViaGlzdG9yeWludGVyZmFjZS5oIGIvV2ViS2l0UXQvQXBpL3F3ZWJoaXN0b3J5aW50ZXJm
YWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk3Y2YxMwotLS0gL2Rl
di9udWxsCisrKyBiL1dlYktpdFF0L0FwaS9xd2ViaGlzdG9yeWludGVyZmFjZS5oCkBAIC0wLDAg
KzEsNDIgQEAKKy8qCisgIENvcHlyaWdodCAoQykgMjAwNyBTdGFpa29zIENvbXB1dGluZyBTZXJ2
aWNlcywgSW5jLiAgPGluZm9Ac3RhaWtvcy5uZXQ+CisKKyAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICBMaWNlbnNl
IGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAg
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgorCisgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5
IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0Eu
CisKKyAgVGhpcyBjbGFzcyBwcm92aWRlcyBhbGwgZnVuY3Rpb25hbGl0eSBuZWVkZWQgZm9yIHRy
YWNraW5nIGdsb2JhbCBoaXN0b3J5LgorKi8KKworI2lmbmRlZiBRV0VCSElTVE9SWUlOVEVSRkFD
RV9ICisjZGVmaW5lIFFXRUJISVNUT1JZSU5URVJGQUNFX0gKKworI2luY2x1ZGUgPHFvYmplY3Qu
aD4KKworI2luY2x1ZGUgPHF3ZWJraXRnbG9iYWwuaD4KKworY2xhc3MgUVdFQktJVF9FWFBPUlQg
UVdlYkhpc3RvcnlJbnRlcmZhY2UgOiBwdWJsaWMgUU9iamVjdAoreworICAgIFFfT0JKRUNUCitw
dWJsaWM6CisgICAgUVdlYkhpc3RvcnlJbnRlcmZhY2UoUU9iamVjdCAqcGFyZW50ID0gMCk7Cisg
ICAgflFXZWJIaXN0b3J5SW50ZXJmYWNlKCk7CisKKyAgICBzdGF0aWMgdm9pZCBzZXREZWZhdWx0
SW50ZXJmYWNlKFFXZWJIaXN0b3J5SW50ZXJmYWNlICpkZWZhdWx0SW50ZXJmYWNlKTsKKyAgICBz
dGF0aWMgUVdlYkhpc3RvcnlJbnRlcmZhY2UgKmRlZmF1bHRJbnRlcmZhY2UoKTsKKworICAgIHZp
cnR1YWwgYm9vbCBoaXN0b3J5Q29udGFpbnMoY29uc3QgUVN0cmluZyAmdXJsKSBjb25zdCA9IDA7
Cit9OworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdFF0L0NoYW5nZUxvZyBiL1dlYktpdFF0
L0NoYW5nZUxvZwppbmRleCBhZWJlMWYxLi5mMTFhZjI1IDEwMDY0NAotLS0gYS9XZWJLaXRRdC9D
aGFuZ2VMb2cKKysrIGIvV2ViS2l0UXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMDct
MDgtMDEgIEFkYW0gVHJlYXQgIDx0cmVhdEBrZGUub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhbiBpbnRlcmZhY2UgdG8gbWFuYWdlIGds
b2JhbCBoaXN0b3J5IGZvciBjbGllbnRzCisKKyAgICAgICAgKiBBcGkvaGVhZGVycy5wcmk6Cisg
ICAgICAgICogQXBpL3F3ZWJoaXN0b3J5aW50ZXJmYWNlLmNwcDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpoaXN0b3J5Q29udGFpbnMpOgorICAgICAgICAoZ0NsZWFudXBJbnRlcmZhY2UpOgor
ICAgICAgICAoUVdlYkhpc3RvcnlJbnRlcmZhY2U6OnNldERlZmF1bHRJbnRlcmZhY2UpOgorICAg
ICAgICAoUVdlYkhpc3RvcnlJbnRlcmZhY2U6OmRlZmF1bHRJbnRlcmZhY2UpOgorICAgICAgICAo
UVdlYkhpc3RvcnlJbnRlcmZhY2U6OlFXZWJIaXN0b3J5SW50ZXJmYWNlKToKKyAgICAgICAgKiBB
cGkvcXdlYmhpc3RvcnlpbnRlcmZhY2UuaDogQWRkZWQuCisKIDIwMDctMDctMzAgIEFkYW0gVHJl
YXQgIDx0cmVhdEBrZGUub3JnPgogCiAgICAgICAgIEZpeCBidWlsZC4K
</data>
<flag name="review"
          id="6601"
          type_id="1"
          status="+"
          setter="staikos"
    />
          </attachment>
      

    </bug>

</bugzilla>