<?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>33055</bug_id>
          
          <creation_ts>2009-12-30 09:33:30 -0800</creation_ts>
          <short_desc>[Qt] Drag &amp; drop layout tests fail even when run manually</short_desc>
          <delta_ts>2010-01-05 11:36:40 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>31332</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yael">yael</reporter>
          <assigned_to name="Yael">yael</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>hausmann</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>175944</commentid>
    <comment_count>0</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2009-12-30 09:33:30 -0800</bug_when>
    <thetext>These tests fail even when they are run in QtLauncher. The work to enable them in DumpRenderTree is still ongoing in https://bugs.webkit.org/show_bug.cgi?id=31332.

fast/events/drag-and-drop.html
fast/events/drag-and-drop-dataTransfer-types-nocrash.html
fast/events/drag-and-drop-fire-drag-dragover.html

After a drag&amp;drop operation fails, the drag operation is not cleaned-up, and even dropping files is failing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175963</commentid>
    <comment_count>1</comment_count>
      <attachid>45671</attachid>
    <who name="Yael">yael</who>
    <bug_when>2009-12-30 10:12:14 -0800</bug_when>
    <thetext>Created attachment 45671
Patch.

Fix Drag&amp;Drop operation in Qt port.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>175965</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-30 10:14:59 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45671 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177174</commentid>
    <comment_count>3</comment_count>
      <attachid>45671</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-01-05 08:52:33 -0800</bug_when>
    <thetext>Comment on attachment 45671
Patch.


&gt; +static inline Qt::DropActions dragOpToDropActions(unsigned op)
&gt; +{
&gt; +    Qt::DropActions result = Qt::IgnoreAction;
&gt; +    if (op &amp; DragOperationCopy)
&gt; +        result = Qt::CopyAction;
&gt; +    if (op &amp; DragOperationMove)
&gt; +        result |= Qt::MoveAction;
&gt; +    if (op &amp; DragOperationGeneric)
&gt; +        result |= Qt::MoveAction;
&gt; +    if (op &amp; DragOperationLink)
&gt; +        result |= Qt::LinkAction;
&gt; +    return result;
&gt; +}

please write out operation in the method name.

&gt; +
&gt; +static inline DragOperation dropActionToDragOp(Qt::DropActions action)
&gt; +{
&gt; +    DragOperation result = DragOperationNone;
&gt; +    if (action &amp; Qt::CopyAction)
&gt; +        result = DragOperationCopy;
&gt; +    if (action &amp; Qt::LinkAction)
&gt; +        result = DragOperationLink;
&gt; +    if (action &amp; Qt::MoveAction)
&gt; +        result = DragOperationMove;
&gt; +    return result;
&gt; +}

same

&gt; +
&gt;  DragDestinationAction DragClientQt::actionMaskForDrag(DragData*)
&gt;  {
&gt;      return DragDestinationActionAny;
&gt; @@ -58,7 +86,7 @@
&gt;  {
&gt;  }
&gt;  
&gt; -void DragClientQt::startDrag(DragImageRef, const IntPoint&amp;, const IntPoint&amp;, Clipboard* clipboard, Frame*, bool)
&gt; +void DragClientQt::startDrag(DragImageRef, const IntPoint&amp;, const IntPoint&amp;, Clipboard* clipboard, Frame* frame, bool)
&gt;  {
&gt;  #ifndef QT_NO_DRAGANDDROP
&gt;      QMimeData* clipboardData = static_cast&lt;ClipboardQt*&gt;(clipboard)-&gt;clipboardData();
&gt; @@ -66,10 +94,16 @@
&gt;      QWidget* view = m_webPage-&gt;view();
&gt;      if (view) {
&gt;          QDrag *drag = new QDrag(view);
&gt; -        if (clipboardData-&gt;hasImage())
&gt; +        if (clipboardData &amp;&amp; clipboardData-&gt;hasImage())
&gt;              drag-&gt;setPixmap(qvariant_cast&lt;QPixmap&gt;(clipboardData-&gt;imageData()));
&gt; +        DragOperation dragOperationMask = DragOperationEvery;
&gt; +        clipboard-&gt;sourceOperation(dragOperationMask);
&gt;          drag-&gt;setMimeData(clipboardData);
&gt; -        drag-&gt;start();
&gt; +        Qt::DropAction actualDropAction = drag-&gt;exec(dragOpToDropActions(dragOperationMask));

You only seem to use the dragOpToDropActions here and dragOperationMask always seems to be the same. Any reason for having that method then?

&gt; +
&gt; +        // Send dragEnd event
&gt; +        PlatformMouseEvent me(m_webPage-&gt;view()-&gt;mapFromGlobal(QCursor::pos()), QCursor::pos(), LeftButton, MouseEventMoved, 0, false, false, false, false, 0);
&gt; +        frame-&gt;eventHandler()-&gt;dragSourceEndedAt(me, dropActionToDragOp(actualDropAction));
&gt;      }
&gt;  #endif
&gt;  }
&gt; Index: WebKit/qt/ChangeLog
&gt; ===================================================================
&gt; --- WebKit/qt/ChangeLog	(revision 52663)
&gt; +++ WebKit/qt/ChangeLog	(working copy)
&gt; @@ -1,3 +1,32 @@
&gt; +2009-12-30  Yael Aharon  &lt;yael.aharon@nokia.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Drag &amp; drop layout tests fail even when run manually
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=33055
&gt; +
&gt; +        No new tests. Fix 3 layout tests when run manually.
&gt; +        fast/events/drag-and-drop.html
&gt; +        fast/events/drag-and-drop-dataTransfer-types-nocrash.html
&gt; +        fast/events/drag-and-drop-fire-drag-dragover.html
&gt; +        Running these tests in DRT will be fixed in 31332.
&gt; +
&gt; +        * Api/qwebpage.cpp:
&gt; +        (dropActionToDragOp):
&gt; +        (dragOpToDropAction):
&gt; +        (QWebPagePrivate::dragEnterEvent):
&gt; +        (QWebPagePrivate::dragMoveEvent):
&gt; +        (QWebPagePrivate::dropEvent):
&gt; +        Accept drag events even if they are not over a drop target. 
&gt; +        This is to ensure that drag events will continue to be delivered.
&gt; +
&gt; +        * Api/qwebpage_p.h:
&gt; +        * WebCoreSupport/DragClientQt.cpp:
&gt; +        (WebCore::dragOpToDropActions):
&gt; +        (WebCore::dropActionToDragOp):
&gt; +        (WebCore::DragClientQt::startDrag):
&gt; +        Send dragEnd event.
&gt; +
&gt;  2009-12-30  Laszlo Gombos  &lt;laszlo.1.gombos@nokia.com&gt;
&gt;  
&gt;          Reviewed by Simon Hausmann.
&gt; Index: WebKit/qt/Api/qwebpage.cpp
&gt; ===================================================================
&gt; --- WebKit/qt/Api/qwebpage.cpp	(revision 52606)
&gt; +++ WebKit/qt/Api/qwebpage.cpp	(working copy)
&gt; @@ -345,7 +345,7 @@
&gt;      if (actions &amp; Qt::CopyAction)
&gt;          result |= DragOperationCopy;
&gt;      if (actions &amp; Qt::MoveAction)
&gt; -        result |= DragOperationMove;
&gt; +        result |= (DragOperationMove | DragOperationGeneric);

Maybe add a comment here as the change is not obvious

&gt;      if (actions &amp; Qt::LinkAction)
&gt;          result |= DragOperationLink;
&gt;      return (DragOperation)result;
&gt; @@ -358,6 +358,8 @@
&gt;          result = Qt::CopyAction;
&gt;      else if (actions &amp; DragOperationMove)
&gt;          result = Qt::MoveAction;
&gt; +    else if (actions &amp; DragOperationGeneric)
&gt; +        result = Qt::MoveAction;

Same here

&gt;      else if (actions &amp; DragOperationLink)
&gt;          result = Qt::LinkAction;
&gt;      return result;
&gt; @@ -1091,8 +1093,9 @@
&gt;                        dropActionToDragOp(ev-&gt;possibleActions()));
&gt;      Qt::DropAction action = dragOpToDropAction(page-&gt;dragController()-&gt;dragEntered(&amp;dragData));
&gt;      ev-&gt;setDropAction(action);
&gt; -    if (action != Qt::IgnoreAction)
&gt; -        ev-&gt;accept();
&gt; +    // We must accept this event in order to receive the drag move events that are sent
&gt; +    // while the drag and drop action is in progress.
&gt; +    ev-&gt;accept();
&gt;  #endif
&gt;  }
&gt;  
&gt; @@ -1132,9 +1135,11 @@
&gt;      DragData dragData(ev-&gt;mimeData(), ev-&gt;pos(), QCursor::pos(),
&gt;                        dropActionToDragOp(ev-&gt;possibleActions()));
&gt;      Qt::DropAction action = dragOpToDropAction(page-&gt;dragController()-&gt;dragUpdated(&amp;dragData));
&gt; +    m_lastDropAction = action;
&gt;      ev-&gt;setDropAction(action);
&gt; -    if (action != Qt::IgnoreAction)
&gt; -        ev-&gt;accept();
&gt; +    // We must accept this event in order to receive the drag move events that are sent
&gt; +    // while the drag and drop action is in progress.
&gt; +    ev-&gt;accept();
&gt;  #endif
&gt;  }
&gt;  
&gt; @@ -1143,8 +1148,7 @@
&gt;  #ifndef QT_NO_DRAGANDDROP
&gt;      DragData dragData(ev-&gt;mimeData(), ev-&gt;pos().toPoint(),
&gt;              QCursor::pos(), dropActionToDragOp(ev-&gt;possibleActions()));
&gt; -    Qt::DropAction action = dragOpToDropAction(page-&gt;dragController()-&gt;performDrag(&amp;dragData));
&gt; -    if (action != Qt::IgnoreAction)
&gt; +    if (page-&gt;dragController()-&gt;performDrag(&amp;dragData))
&gt;          ev-&gt;accept();
&gt;  #endif
&gt;  }
&gt; @@ -1152,10 +1156,11 @@
&gt;  void QWebPagePrivate::dropEvent(QDropEvent* ev)
&gt;  {
&gt;  #ifndef QT_NO_DRAGANDDROP
&gt; +    // Overwrite the defaults set byQDragManager::defaultAction()

missing space byQDragManager

&gt; +    ev-&gt;setDropAction(m_lastDropAction);

You don&apos;t need to clear  this m_lastDropAction somewhere?

&gt;      DragData dragData(ev-&gt;mimeData(), ev-&gt;pos(), QCursor::pos(),
&gt; -                      dropActionToDragOp(ev-&gt;possibleActions()));
&gt; -    Qt::DropAction action = dragOpToDropAction(page-&gt;dragController()-&gt;performDrag(&amp;dragData));
&gt; -    if (action != Qt::IgnoreAction)
&gt; +                      dropActionToDragOp(Qt::DropAction(ev-&gt;dropAction())));
&gt; +    if (page-&gt;dragController()-&gt;performDrag(&amp;dragData))
&gt;          ev-&gt;accept();
&gt;  #endif
&gt;  }
&gt; Index: WebKit/qt/Api/qwebpage_p.h
&gt; ===================================================================
&gt; --- WebKit/qt/Api/qwebpage_p.h	(revision 52606)
&gt; +++ WebKit/qt/Api/qwebpage_p.h	(working copy)
&gt; @@ -180,6 +180,7 @@
&gt;      QWidget* inspectorFrontend;
&gt;      QWebInspector* inspector;
&gt;      bool inspectorIsInternalOnly; // True if created through the Inspect context menu action
&gt; +    Qt::DropAction m_lastDropAction;
&gt;  
&gt;      static bool drtRun;
&gt;  };
&gt; Index: WebCore/ChangeLog
&gt; ===================================================================
&gt; --- WebCore/ChangeLog	(revision 52663)
&gt; +++ WebCore/ChangeLog	(working copy)
&gt; @@ -1,3 +1,21 @@
&gt; +2009-12-30  Yael Aharon  &lt;yael.aharon@nokia.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        [Qt] Drag &amp; drop layout tests fail even when run manually
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=33055
&gt; +
&gt; +        No new tests. Fix 3 layout tests when run manually.
&gt; +        fast/events/drag-and-drop.html
&gt; +        fast/events/drag-and-drop-dataTransfer-types-nocrash.html
&gt; +        fast/events/drag-and-drop-fire-drag-dragover.html
&gt; +        Running these tests in DRT will be fixed in 31332.
&gt; +
&gt; +        * page/qt/DragControllerQt.cpp:
&gt; +        (WebCore::DragController::cleanupAfterSystemDrag):
&gt; +        Cleanup the drag operation if it failed to complete,
&gt; +        Otherwise, new drag operations will not be possible.
&gt; +
&gt;  2009-12-30  Laszlo Gombos  &lt;laszlo.1.gombos@nokia.com&gt;
&gt;  
&gt;          Reviewed by Simon Hausmann.
&gt; Index: WebCore/page/qt/DragControllerQt.cpp
&gt; ===================================================================
&gt; --- WebCore/page/qt/DragControllerQt.cpp	(revision 52606)
&gt; +++ WebCore/page/qt/DragControllerQt.cpp	(working copy)
&gt; @@ -66,6 +66,7 @@
&gt;  
&gt;  void DragController::cleanupAfterSystemDrag()
&gt;  {
&gt; +    dragEnded();
&gt;  }
&gt;  
&gt;  }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177202</commentid>
    <comment_count>4</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2010-01-05 10:10:09 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 45671 [details])
&gt; You only seem to use the dragOpToDropActions here and dragOperationMask always
&gt; seems to be the same. Any reason for having that method then?
That is not true, clipboard-&gt;sourceOperation(dragOperationMask) is updating the value of the mask

&gt;&gt; +    ev-&gt;setDropAction(m_lastDropAction);
&gt;
&gt;You don&apos;t need to clear  this m_lastDropAction somewhere?
The flag is updated when a DragMove event is received, and it is used in the DropEvent event. You are always guaranteed at least on DragMove event.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177216</commentid>
    <comment_count>5</comment_count>
      <attachid>45904</attachid>
    <who name="Yael">yael</who>
    <bug_when>2010-01-05 10:28:35 -0800</bug_when>
    <thetext>Created attachment 45904
Patch v2

Update the patch to rename methods and add comments as requested in comment #3 .</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177221</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-05 10:32:53 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45904 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177268</commentid>
    <comment_count>7</comment_count>
      <attachid>45904</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-05 11:36:33 -0800</bug_when>
    <thetext>Comment on attachment 45904
Patch v2

Clearing flags on attachment: 45904

Committed r52815: &lt;http://trac.webkit.org/changeset/52815&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>177270</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-01-05 11:36:40 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45671</attachid>
            <date>2009-12-30 10:12:14 -0800</date>
            <delta_ts>2010-01-05 10:28:35 -0800</delta_ts>
            <desc>Patch.</desc>
            <filename>33055.patch</filename>
            <type>text/plain</type>
            <size>8654</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwCShyZXZpc2lv
biA1MjYwNikKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw4IEBACiAjaW5jbHVkZSAiRHJhZ0NsaWVudFF0Lmgi
CiAKICNpbmNsdWRlICJDbGlwYm9hcmRRdC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVk
ZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAicXdlYnBhZ2UuaCIKIAogI2luY2x1
ZGUgPFFEcmFnPgpAQCAtMzUsNiArMzcsMzIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitz
dGF0aWMgaW5saW5lIFF0OjpEcm9wQWN0aW9ucyBkcmFnT3BUb0Ryb3BBY3Rpb25zKHVuc2lnbmVk
IG9wKQoreworICAgIFF0OjpEcm9wQWN0aW9ucyByZXN1bHQgPSBRdDo6SWdub3JlQWN0aW9uOwor
ICAgIGlmIChvcCAmIERyYWdPcGVyYXRpb25Db3B5KQorICAgICAgICByZXN1bHQgPSBRdDo6Q29w
eUFjdGlvbjsKKyAgICBpZiAob3AgJiBEcmFnT3BlcmF0aW9uTW92ZSkKKyAgICAgICAgcmVzdWx0
IHw9IFF0OjpNb3ZlQWN0aW9uOworICAgIGlmIChvcCAmIERyYWdPcGVyYXRpb25HZW5lcmljKQor
ICAgICAgICByZXN1bHQgfD0gUXQ6Ok1vdmVBY3Rpb247CisgICAgaWYgKG9wICYgRHJhZ09wZXJh
dGlvbkxpbmspCisgICAgICAgIHJlc3VsdCB8PSBRdDo6TGlua0FjdGlvbjsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitzdGF0aWMgaW5saW5lIERyYWdPcGVyYXRpb24gZHJvcEFjdGlvblRvRHJh
Z09wKFF0OjpEcm9wQWN0aW9ucyBhY3Rpb24pCit7CisgICAgRHJhZ09wZXJhdGlvbiByZXN1bHQg
PSBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICBpZiAoYWN0aW9uICYgUXQ6OkNvcHlBY3Rpb24pCisg
ICAgICAgIHJlc3VsdCA9IERyYWdPcGVyYXRpb25Db3B5OworICAgIGlmIChhY3Rpb24gJiBRdDo6
TGlua0FjdGlvbikKKyAgICAgICAgcmVzdWx0ID0gRHJhZ09wZXJhdGlvbkxpbms7CisgICAgaWYg
KGFjdGlvbiAmIFF0OjpNb3ZlQWN0aW9uKQorICAgICAgICByZXN1bHQgPSBEcmFnT3BlcmF0aW9u
TW92ZTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBEcmFnRGVzdGluYXRpb25BY3Rpb24gRHJh
Z0NsaWVudFF0OjphY3Rpb25NYXNrRm9yRHJhZyhEcmFnRGF0YSopCiB7CiAgICAgcmV0dXJuIERy
YWdEZXN0aW5hdGlvbkFjdGlvbkFueTsKQEAgLTU4LDcgKzg2LDcgQEAKIHsKIH0KIAotdm9pZCBE
cmFnQ2xpZW50UXQ6OnN0YXJ0RHJhZyhEcmFnSW1hZ2VSZWYsIGNvbnN0IEludFBvaW50JiwgY29u
c3QgSW50UG9pbnQmLCBDbGlwYm9hcmQqIGNsaXBib2FyZCwgRnJhbWUqLCBib29sKQordm9pZCBE
cmFnQ2xpZW50UXQ6OnN0YXJ0RHJhZyhEcmFnSW1hZ2VSZWYsIGNvbnN0IEludFBvaW50JiwgY29u
c3QgSW50UG9pbnQmLCBDbGlwYm9hcmQqIGNsaXBib2FyZCwgRnJhbWUqIGZyYW1lLCBib29sKQog
ewogI2lmbmRlZiBRVF9OT19EUkFHQU5ERFJPUAogICAgIFFNaW1lRGF0YSogY2xpcGJvYXJkRGF0
YSA9IHN0YXRpY19jYXN0PENsaXBib2FyZFF0Kj4oY2xpcGJvYXJkKS0+Y2xpcGJvYXJkRGF0YSgp
OwpAQCAtNjYsMTAgKzk0LDE2IEBACiAgICAgUVdpZGdldCogdmlldyA9IG1fd2ViUGFnZS0+dmll
dygpOwogICAgIGlmICh2aWV3KSB7CiAgICAgICAgIFFEcmFnICpkcmFnID0gbmV3IFFEcmFnKHZp
ZXcpOwotICAgICAgICBpZiAoY2xpcGJvYXJkRGF0YS0+aGFzSW1hZ2UoKSkKKyAgICAgICAgaWYg
KGNsaXBib2FyZERhdGEgJiYgY2xpcGJvYXJkRGF0YS0+aGFzSW1hZ2UoKSkKICAgICAgICAgICAg
IGRyYWctPnNldFBpeG1hcChxdmFyaWFudF9jYXN0PFFQaXhtYXA+KGNsaXBib2FyZERhdGEtPmlt
YWdlRGF0YSgpKSk7CisgICAgICAgIERyYWdPcGVyYXRpb24gZHJhZ09wZXJhdGlvbk1hc2sgPSBE
cmFnT3BlcmF0aW9uRXZlcnk7CisgICAgICAgIGNsaXBib2FyZC0+c291cmNlT3BlcmF0aW9uKGRy
YWdPcGVyYXRpb25NYXNrKTsKICAgICAgICAgZHJhZy0+c2V0TWltZURhdGEoY2xpcGJvYXJkRGF0
YSk7Ci0gICAgICAgIGRyYWctPnN0YXJ0KCk7CisgICAgICAgIFF0OjpEcm9wQWN0aW9uIGFjdHVh
bERyb3BBY3Rpb24gPSBkcmFnLT5leGVjKGRyYWdPcFRvRHJvcEFjdGlvbnMoZHJhZ09wZXJhdGlv
bk1hc2spKTsKKworICAgICAgICAvLyBTZW5kIGRyYWdFbmQgZXZlbnQKKyAgICAgICAgUGxhdGZv
cm1Nb3VzZUV2ZW50IG1lKG1fd2ViUGFnZS0+dmlldygpLT5tYXBGcm9tR2xvYmFsKFFDdXJzb3I6
OnBvcygpKSwgUUN1cnNvcjo6cG9zKCksIExlZnRCdXR0b24sIE1vdXNlRXZlbnRNb3ZlZCwgMCwg
ZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIDApOworICAgICAgICBmcmFtZS0+ZXZlbnRIYW5k
bGVyKCktPmRyYWdTb3VyY2VFbmRlZEF0KG1lLCBkcm9wQWN0aW9uVG9EcmFnT3AoYWN0dWFsRHJv
cEFjdGlvbikpOwogICAgIH0KICNlbmRpZgogfQpJbmRleDogV2ViS2l0L3F0L0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA1MjY2MykKKysrIFdl
YktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMiBAQAorMjAwOS0x
Mi0zMCAgWWFlbCBBaGFyb24gIDx5YWVsLmFoYXJvbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRHJhZyAmIGRyb3AgbGF5b3V0IHRl
c3RzIGZhaWwgZXZlbiB3aGVuIHJ1biBtYW51YWxseQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzMwNTUKKworICAgICAgICBObyBuZXcgdGVzdHMuIEZp
eCAzIGxheW91dCB0ZXN0cyB3aGVuIHJ1biBtYW51YWxseS4KKyAgICAgICAgZmFzdC9ldmVudHMv
ZHJhZy1hbmQtZHJvcC5odG1sCisgICAgICAgIGZhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3AtZGF0
YVRyYW5zZmVyLXR5cGVzLW5vY3Jhc2guaHRtbAorICAgICAgICBmYXN0L2V2ZW50cy9kcmFnLWFu
ZC1kcm9wLWZpcmUtZHJhZy1kcmFnb3Zlci5odG1sCisgICAgICAgIFJ1bm5pbmcgdGhlc2UgdGVz
dHMgaW4gRFJUIHdpbGwgYmUgZml4ZWQgaW4gMzEzMzIuCisKKyAgICAgICAgKiBBcGkvcXdlYnBh
Z2UuY3BwOgorICAgICAgICAoZHJvcEFjdGlvblRvRHJhZ09wKToKKyAgICAgICAgKGRyYWdPcFRv
RHJvcEFjdGlvbik6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmRyYWdFbnRlckV2ZW50KToK
KyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6ZHJhZ01vdmVFdmVudCk6CisgICAgICAgIChRV2Vi
UGFnZVByaXZhdGU6OmRyb3BFdmVudCk6CisgICAgICAgIEFjY2VwdCBkcmFnIGV2ZW50cyBldmVu
IGlmIHRoZXkgYXJlIG5vdCBvdmVyIGEgZHJvcCB0YXJnZXQuIAorICAgICAgICBUaGlzIGlzIHRv
IGVuc3VyZSB0aGF0IGRyYWcgZXZlbnRzIHdpbGwgY29udGludWUgdG8gYmUgZGVsaXZlcmVkLgor
CisgICAgICAgICogQXBpL3F3ZWJwYWdlX3AuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9E
cmFnQ2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZHJhZ09wVG9Ecm9wQWN0aW9ucyk6
CisgICAgICAgIChXZWJDb3JlOjpkcm9wQWN0aW9uVG9EcmFnT3ApOgorICAgICAgICAoV2ViQ29y
ZTo6RHJhZ0NsaWVudFF0OjpzdGFydERyYWcpOgorICAgICAgICBTZW5kIGRyYWdFbmQgZXZlbnQu
CisKIDIwMDktMTItMzAgIExhc3psbyBHb21ib3MgIDxsYXN6bG8uMS5nb21ib3NAbm9raWEuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgpJbmRleDogV2ViS2l0L3F0
L0FwaS9xd2VicGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5j
cHAJKHJldmlzaW9uIDUyNjA2KQorKysgV2ViS2l0L3F0L0FwaS9xd2VicGFnZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTM0NSw3ICszNDUsNyBAQAogICAgIGlmIChhY3Rpb25zICYgUXQ6OkNvcHlB
Y3Rpb24pCiAgICAgICAgIHJlc3VsdCB8PSBEcmFnT3BlcmF0aW9uQ29weTsKICAgICBpZiAoYWN0
aW9ucyAmIFF0OjpNb3ZlQWN0aW9uKQotICAgICAgICByZXN1bHQgfD0gRHJhZ09wZXJhdGlvbk1v
dmU7CisgICAgICAgIHJlc3VsdCB8PSAoRHJhZ09wZXJhdGlvbk1vdmUgfCBEcmFnT3BlcmF0aW9u
R2VuZXJpYyk7CiAgICAgaWYgKGFjdGlvbnMgJiBRdDo6TGlua0FjdGlvbikKICAgICAgICAgcmVz
dWx0IHw9IERyYWdPcGVyYXRpb25MaW5rOwogICAgIHJldHVybiAoRHJhZ09wZXJhdGlvbilyZXN1
bHQ7CkBAIC0zNTgsNiArMzU4LDggQEAKICAgICAgICAgcmVzdWx0ID0gUXQ6OkNvcHlBY3Rpb247
CiAgICAgZWxzZSBpZiAoYWN0aW9ucyAmIERyYWdPcGVyYXRpb25Nb3ZlKQogICAgICAgICByZXN1
bHQgPSBRdDo6TW92ZUFjdGlvbjsKKyAgICBlbHNlIGlmIChhY3Rpb25zICYgRHJhZ09wZXJhdGlv
bkdlbmVyaWMpCisgICAgICAgIHJlc3VsdCA9IFF0OjpNb3ZlQWN0aW9uOwogICAgIGVsc2UgaWYg
KGFjdGlvbnMgJiBEcmFnT3BlcmF0aW9uTGluaykKICAgICAgICAgcmVzdWx0ID0gUXQ6OkxpbmtB
Y3Rpb247CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTEwOTEsOCArMTA5Myw5IEBACiAgICAgICAg
ICAgICAgICAgICAgICAgZHJvcEFjdGlvblRvRHJhZ09wKGV2LT5wb3NzaWJsZUFjdGlvbnMoKSkp
OwogICAgIFF0OjpEcm9wQWN0aW9uIGFjdGlvbiA9IGRyYWdPcFRvRHJvcEFjdGlvbihwYWdlLT5k
cmFnQ29udHJvbGxlcigpLT5kcmFnRW50ZXJlZCgmZHJhZ0RhdGEpKTsKICAgICBldi0+c2V0RHJv
cEFjdGlvbihhY3Rpb24pOwotICAgIGlmIChhY3Rpb24gIT0gUXQ6Oklnbm9yZUFjdGlvbikKLSAg
ICAgICAgZXYtPmFjY2VwdCgpOworICAgIC8vIFdlIG11c3QgYWNjZXB0IHRoaXMgZXZlbnQgaW4g
b3JkZXIgdG8gcmVjZWl2ZSB0aGUgZHJhZyBtb3ZlIGV2ZW50cyB0aGF0IGFyZSBzZW50CisgICAg
Ly8gd2hpbGUgdGhlIGRyYWcgYW5kIGRyb3AgYWN0aW9uIGlzIGluIHByb2dyZXNzLgorICAgIGV2
LT5hY2NlcHQoKTsKICNlbmRpZgogfQogCkBAIC0xMTMyLDkgKzExMzUsMTEgQEAKICAgICBEcmFn
RGF0YSBkcmFnRGF0YShldi0+bWltZURhdGEoKSwgZXYtPnBvcygpLCBRQ3Vyc29yOjpwb3MoKSwK
ICAgICAgICAgICAgICAgICAgICAgICBkcm9wQWN0aW9uVG9EcmFnT3AoZXYtPnBvc3NpYmxlQWN0
aW9ucygpKSk7CiAgICAgUXQ6OkRyb3BBY3Rpb24gYWN0aW9uID0gZHJhZ09wVG9Ecm9wQWN0aW9u
KHBhZ2UtPmRyYWdDb250cm9sbGVyKCktPmRyYWdVcGRhdGVkKCZkcmFnRGF0YSkpOworICAgIG1f
bGFzdERyb3BBY3Rpb24gPSBhY3Rpb247CiAgICAgZXYtPnNldERyb3BBY3Rpb24oYWN0aW9uKTsK
LSAgICBpZiAoYWN0aW9uICE9IFF0OjpJZ25vcmVBY3Rpb24pCi0gICAgICAgIGV2LT5hY2NlcHQo
KTsKKyAgICAvLyBXZSBtdXN0IGFjY2VwdCB0aGlzIGV2ZW50IGluIG9yZGVyIHRvIHJlY2VpdmUg
dGhlIGRyYWcgbW92ZSBldmVudHMgdGhhdCBhcmUgc2VudAorICAgIC8vIHdoaWxlIHRoZSBkcmFn
IGFuZCBkcm9wIGFjdGlvbiBpcyBpbiBwcm9ncmVzcy4KKyAgICBldi0+YWNjZXB0KCk7CiAjZW5k
aWYKIH0KIApAQCAtMTE0Myw4ICsxMTQ4LDcgQEAKICNpZm5kZWYgUVRfTk9fRFJBR0FORERST1AK
ICAgICBEcmFnRGF0YSBkcmFnRGF0YShldi0+bWltZURhdGEoKSwgZXYtPnBvcygpLnRvUG9pbnQo
KSwKICAgICAgICAgICAgIFFDdXJzb3I6OnBvcygpLCBkcm9wQWN0aW9uVG9EcmFnT3AoZXYtPnBv
c3NpYmxlQWN0aW9ucygpKSk7Ci0gICAgUXQ6OkRyb3BBY3Rpb24gYWN0aW9uID0gZHJhZ09wVG9E
cm9wQWN0aW9uKHBhZ2UtPmRyYWdDb250cm9sbGVyKCktPnBlcmZvcm1EcmFnKCZkcmFnRGF0YSkp
OwotICAgIGlmIChhY3Rpb24gIT0gUXQ6Oklnbm9yZUFjdGlvbikKKyAgICBpZiAocGFnZS0+ZHJh
Z0NvbnRyb2xsZXIoKS0+cGVyZm9ybURyYWcoJmRyYWdEYXRhKSkKICAgICAgICAgZXYtPmFjY2Vw
dCgpOwogI2VuZGlmCiB9CkBAIC0xMTUyLDEwICsxMTU2LDExIEBACiB2b2lkIFFXZWJQYWdlUHJp
dmF0ZTo6ZHJvcEV2ZW50KFFEcm9wRXZlbnQqIGV2KQogewogI2lmbmRlZiBRVF9OT19EUkFHQU5E
RFJPUAorICAgIC8vIE92ZXJ3cml0ZSB0aGUgZGVmYXVsdHMgc2V0IGJ5UURyYWdNYW5hZ2VyOjpk
ZWZhdWx0QWN0aW9uKCkKKyAgICBldi0+c2V0RHJvcEFjdGlvbihtX2xhc3REcm9wQWN0aW9uKTsK
ICAgICBEcmFnRGF0YSBkcmFnRGF0YShldi0+bWltZURhdGEoKSwgZXYtPnBvcygpLCBRQ3Vyc29y
Ojpwb3MoKSwKLSAgICAgICAgICAgICAgICAgICAgICBkcm9wQWN0aW9uVG9EcmFnT3AoZXYtPnBv
c3NpYmxlQWN0aW9ucygpKSk7Ci0gICAgUXQ6OkRyb3BBY3Rpb24gYWN0aW9uID0gZHJhZ09wVG9E
cm9wQWN0aW9uKHBhZ2UtPmRyYWdDb250cm9sbGVyKCktPnBlcmZvcm1EcmFnKCZkcmFnRGF0YSkp
OwotICAgIGlmIChhY3Rpb24gIT0gUXQ6Oklnbm9yZUFjdGlvbikKKyAgICAgICAgICAgICAgICAg
ICAgICBkcm9wQWN0aW9uVG9EcmFnT3AoUXQ6OkRyb3BBY3Rpb24oZXYtPmRyb3BBY3Rpb24oKSkp
KTsKKyAgICBpZiAocGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS0+cGVyZm9ybURyYWcoJmRyYWdEYXRh
KSkKICAgICAgICAgZXYtPmFjY2VwdCgpOwogI2VuZGlmCiB9CkluZGV4OiBXZWJLaXQvcXQvQXBp
L3F3ZWJwYWdlX3AuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaAko
cmV2aXNpb24gNTI2MDYpCisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlX3AuaAkod29ya2luZyBj
b3B5KQpAQCAtMTgwLDYgKzE4MCw3IEBACiAgICAgUVdpZGdldCogaW5zcGVjdG9yRnJvbnRlbmQ7
CiAgICAgUVdlYkluc3BlY3RvciogaW5zcGVjdG9yOwogICAgIGJvb2wgaW5zcGVjdG9ySXNJbnRl
cm5hbE9ubHk7IC8vIFRydWUgaWYgY3JlYXRlZCB0aHJvdWdoIHRoZSBJbnNwZWN0IGNvbnRleHQg
bWVudSBhY3Rpb24KKyAgICBRdDo6RHJvcEFjdGlvbiBtX2xhc3REcm9wQWN0aW9uOwogCiAgICAg
c3RhdGljIGJvb2wgZHJ0UnVuOwogfTsKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiA1MjY2MykKKysrIFdlYkNvcmUvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMDktMTItMzAgIFlhZWwg
QWhhcm9uICA8eWFlbC5haGFyb25Abm9raWEuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gRHJhZyAmIGRyb3AgbGF5b3V0IHRlc3RzIGZh
aWwgZXZlbiB3aGVuIHJ1biBtYW51YWxseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzMwNTUKKworICAgICAgICBObyBuZXcgdGVzdHMuIEZpeCAzIGxh
eW91dCB0ZXN0cyB3aGVuIHJ1biBtYW51YWxseS4KKyAgICAgICAgZmFzdC9ldmVudHMvZHJhZy1h
bmQtZHJvcC5odG1sCisgICAgICAgIGZhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3AtZGF0YVRyYW5z
ZmVyLXR5cGVzLW5vY3Jhc2guaHRtbAorICAgICAgICBmYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9w
LWZpcmUtZHJhZy1kcmFnb3Zlci5odG1sCisgICAgICAgIFJ1bm5pbmcgdGhlc2UgdGVzdHMgaW4g
RFJUIHdpbGwgYmUgZml4ZWQgaW4gMzEzMzIuCisKKyAgICAgICAgKiBwYWdlL3F0L0RyYWdDb250
cm9sbGVyUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmNsZWFudXBB
ZnRlclN5c3RlbURyYWcpOgorICAgICAgICBDbGVhbnVwIHRoZSBkcmFnIG9wZXJhdGlvbiBpZiBp
dCBmYWlsZWQgdG8gY29tcGxldGUsCisgICAgICAgIE90aGVyd2lzZSwgbmV3IGRyYWcgb3BlcmF0
aW9ucyB3aWxsIG5vdCBiZSBwb3NzaWJsZS4KKwogMjAwOS0xMi0zMCAgTGFzemxvIEdvbWJvcyAg
PGxhc3psby4xLmdvbWJvc0Bub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24g
SGF1c21hbm4uCkluZGV4OiBXZWJDb3JlL3BhZ2UvcXQvRHJhZ0NvbnRyb2xsZXJRdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL3F0L0RyYWdDb250cm9sbGVyUXQuY3BwCShyZXZpc2lv
biA1MjYwNikKKysrIFdlYkNvcmUvcGFnZS9xdC9EcmFnQ29udHJvbGxlclF0LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjYsNiArNjYsNyBAQAogCiB2b2lkIERyYWdDb250cm9sbGVyOjpjbGVhbnVw
QWZ0ZXJTeXN0ZW1EcmFnKCkKIHsKKyAgICBkcmFnRW5kZWQoKTsKIH0KIAogfQo=
</data>
<flag name="review"
          id="27769"
          type_id="1"
          status="-"
          setter="kenneth"
    />
    <flag name="commit-queue"
          id="27770"
          type_id="3"
          status="-"
          setter="kenneth"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45904</attachid>
            <date>2010-01-05 10:28:35 -0800</date>
            <delta_ts>2010-01-05 11:36:32 -0800</delta_ts>
            <desc>Patch v2</desc>
            <filename>33055.patch</filename>
            <type>text/plain</type>
            <size>9001</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwCShyZXZpc2lv
biA1MjYwNikKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw4IEBACiAjaW5jbHVkZSAiRHJhZ0NsaWVudFF0Lmgi
CiAKICNpbmNsdWRlICJDbGlwYm9hcmRRdC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVk
ZSAiUGxhdGZvcm1Nb3VzZUV2ZW50LmgiCiAjaW5jbHVkZSAicXdlYnBhZ2UuaCIKIAogI2luY2x1
ZGUgPFFEcmFnPgpAQCAtMzUsNiArMzcsMzIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitz
dGF0aWMgaW5saW5lIFF0OjpEcm9wQWN0aW9ucyBkcmFnT3BlcmF0aW9uc1RvRHJvcEFjdGlvbnMo
dW5zaWduZWQgb3ApCit7CisgICAgUXQ6OkRyb3BBY3Rpb25zIHJlc3VsdCA9IFF0OjpJZ25vcmVB
Y3Rpb247CisgICAgaWYgKG9wICYgRHJhZ09wZXJhdGlvbkNvcHkpCisgICAgICAgIHJlc3VsdCA9
IFF0OjpDb3B5QWN0aW9uOworICAgIGlmIChvcCAmIERyYWdPcGVyYXRpb25Nb3ZlKQorICAgICAg
ICByZXN1bHQgfD0gUXQ6Ok1vdmVBY3Rpb247CisgICAgaWYgKG9wICYgRHJhZ09wZXJhdGlvbkdl
bmVyaWMpCisgICAgICAgIHJlc3VsdCB8PSBRdDo6TW92ZUFjdGlvbjsKKyAgICBpZiAob3AgJiBE
cmFnT3BlcmF0aW9uTGluaykKKyAgICAgICAgcmVzdWx0IHw9IFF0OjpMaW5rQWN0aW9uOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgRHJhZ09wZXJhdGlvbiBkcm9wQWN0
aW9uVG9EcmFnT3BlcmF0aW9uKFF0OjpEcm9wQWN0aW9ucyBhY3Rpb24pCit7CisgICAgRHJhZ09w
ZXJhdGlvbiByZXN1bHQgPSBEcmFnT3BlcmF0aW9uTm9uZTsKKyAgICBpZiAoYWN0aW9uICYgUXQ6
OkNvcHlBY3Rpb24pCisgICAgICAgIHJlc3VsdCA9IERyYWdPcGVyYXRpb25Db3B5OworICAgIGlm
IChhY3Rpb24gJiBRdDo6TGlua0FjdGlvbikKKyAgICAgICAgcmVzdWx0ID0gRHJhZ09wZXJhdGlv
bkxpbms7CisgICAgaWYgKGFjdGlvbiAmIFF0OjpNb3ZlQWN0aW9uKQorICAgICAgICByZXN1bHQg
PSBEcmFnT3BlcmF0aW9uTW92ZTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBEcmFnRGVzdGlu
YXRpb25BY3Rpb24gRHJhZ0NsaWVudFF0OjphY3Rpb25NYXNrRm9yRHJhZyhEcmFnRGF0YSopCiB7
CiAgICAgcmV0dXJuIERyYWdEZXN0aW5hdGlvbkFjdGlvbkFueTsKQEAgLTU4LDcgKzg2LDcgQEAK
IHsKIH0KIAotdm9pZCBEcmFnQ2xpZW50UXQ6OnN0YXJ0RHJhZyhEcmFnSW1hZ2VSZWYsIGNvbnN0
IEludFBvaW50JiwgY29uc3QgSW50UG9pbnQmLCBDbGlwYm9hcmQqIGNsaXBib2FyZCwgRnJhbWUq
LCBib29sKQordm9pZCBEcmFnQ2xpZW50UXQ6OnN0YXJ0RHJhZyhEcmFnSW1hZ2VSZWYsIGNvbnN0
IEludFBvaW50JiwgY29uc3QgSW50UG9pbnQmLCBDbGlwYm9hcmQqIGNsaXBib2FyZCwgRnJhbWUq
IGZyYW1lLCBib29sKQogewogI2lmbmRlZiBRVF9OT19EUkFHQU5ERFJPUAogICAgIFFNaW1lRGF0
YSogY2xpcGJvYXJkRGF0YSA9IHN0YXRpY19jYXN0PENsaXBib2FyZFF0Kj4oY2xpcGJvYXJkKS0+
Y2xpcGJvYXJkRGF0YSgpOwpAQCAtNjYsMTAgKzk0LDE2IEBACiAgICAgUVdpZGdldCogdmlldyA9
IG1fd2ViUGFnZS0+dmlldygpOwogICAgIGlmICh2aWV3KSB7CiAgICAgICAgIFFEcmFnICpkcmFn
ID0gbmV3IFFEcmFnKHZpZXcpOwotICAgICAgICBpZiAoY2xpcGJvYXJkRGF0YS0+aGFzSW1hZ2Uo
KSkKKyAgICAgICAgaWYgKGNsaXBib2FyZERhdGEgJiYgY2xpcGJvYXJkRGF0YS0+aGFzSW1hZ2Uo
KSkKICAgICAgICAgICAgIGRyYWctPnNldFBpeG1hcChxdmFyaWFudF9jYXN0PFFQaXhtYXA+KGNs
aXBib2FyZERhdGEtPmltYWdlRGF0YSgpKSk7CisgICAgICAgIERyYWdPcGVyYXRpb24gZHJhZ09w
ZXJhdGlvbk1hc2sgPSBEcmFnT3BlcmF0aW9uRXZlcnk7CisgICAgICAgIGNsaXBib2FyZC0+c291
cmNlT3BlcmF0aW9uKGRyYWdPcGVyYXRpb25NYXNrKTsKICAgICAgICAgZHJhZy0+c2V0TWltZURh
dGEoY2xpcGJvYXJkRGF0YSk7Ci0gICAgICAgIGRyYWctPnN0YXJ0KCk7CisgICAgICAgIFF0OjpE
cm9wQWN0aW9uIGFjdHVhbERyb3BBY3Rpb24gPSBkcmFnLT5leGVjKGRyYWdPcGVyYXRpb25zVG9E
cm9wQWN0aW9ucyhkcmFnT3BlcmF0aW9uTWFzaykpOworCisgICAgICAgIC8vIFNlbmQgZHJhZ0Vu
ZCBldmVudAorICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQgbWUobV93ZWJQYWdlLT52aWV3KCkt
Pm1hcEZyb21HbG9iYWwoUUN1cnNvcjo6cG9zKCkpLCBRQ3Vyc29yOjpwb3MoKSwgTGVmdEJ1dHRv
biwgTW91c2VFdmVudE1vdmVkLCAwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCk7Cisg
ICAgICAgIGZyYW1lLT5ldmVudEhhbmRsZXIoKS0+ZHJhZ1NvdXJjZUVuZGVkQXQobWUsIGRyb3BB
Y3Rpb25Ub0RyYWdPcGVyYXRpb24oYWN0dWFsRHJvcEFjdGlvbikpOwogICAgIH0KICNlbmRpZgog
fQpJbmRleDogV2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQ2hh
bmdlTG9nCShyZXZpc2lvbiA1MjY2MykKKysrIFdlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcg
Y29weSkKQEAgLTEsMyArMSwzMiBAQAorMjAwOS0xMi0zMCAgWWFlbCBBaGFyb24gIDx5YWVsLmFo
YXJvbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgRHJhZyAmIGRyb3AgbGF5b3V0IHRlc3RzIGZhaWwgZXZlbiB3aGVuIHJ1biBtYW51
YWxseQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzMw
NTUKKworICAgICAgICBObyBuZXcgdGVzdHMuIEZpeCAzIGxheW91dCB0ZXN0cyB3aGVuIHJ1biBt
YW51YWxseS4KKyAgICAgICAgZmFzdC9ldmVudHMvZHJhZy1hbmQtZHJvcC5odG1sCisgICAgICAg
IGZhc3QvZXZlbnRzL2RyYWctYW5kLWRyb3AtZGF0YVRyYW5zZmVyLXR5cGVzLW5vY3Jhc2guaHRt
bAorICAgICAgICBmYXN0L2V2ZW50cy9kcmFnLWFuZC1kcm9wLWZpcmUtZHJhZy1kcmFnb3Zlci5o
dG1sCisgICAgICAgIFJ1bm5pbmcgdGhlc2UgdGVzdHMgaW4gRFJUIHdpbGwgYmUgZml4ZWQgaW4g
MzEzMzIuCisKKyAgICAgICAgKiBBcGkvcXdlYnBhZ2UuY3BwOgorICAgICAgICAoZHJvcEFjdGlv
blRvRHJhZ09wKToKKyAgICAgICAgKGRyYWdPcFRvRHJvcEFjdGlvbik6CisgICAgICAgIChRV2Vi
UGFnZVByaXZhdGU6OmRyYWdFbnRlckV2ZW50KToKKyAgICAgICAgKFFXZWJQYWdlUHJpdmF0ZTo6
ZHJhZ01vdmVFdmVudCk6CisgICAgICAgIChRV2ViUGFnZVByaXZhdGU6OmRyb3BFdmVudCk6Cisg
ICAgICAgIEFjY2VwdCBkcmFnIGV2ZW50cyBldmVuIGlmIHRoZXkgYXJlIG5vdCBvdmVyIGEgZHJv
cCB0YXJnZXQuIAorICAgICAgICBUaGlzIGlzIHRvIGVuc3VyZSB0aGF0IGRyYWcgZXZlbnRzIHdp
bGwgY29udGludWUgdG8gYmUgZGVsaXZlcmVkLgorCisgICAgICAgICogQXBpL3F3ZWJwYWdlX3Au
aDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50UXQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6ZHJhZ09wZXJhdGlvblRvRHJvcEFjdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6
ZHJvcEFjdGlvblRvRHJhZ09wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ2xpZW50
UXQ6OnN0YXJ0RHJhZyk6CisgICAgICAgIFNlbmQgZHJhZ0VuZCBldmVudC4KKwogMjAwOS0xMi0z
MCAgTGFzemxvIEdvbWJvcyAgPGxhc3psby4xLmdvbWJvc0Bub2tpYS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCkluZGV4OiBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAkocmV2aXNpb24g
NTI2MDYpCisrKyBXZWJLaXQvcXQvQXBpL3F3ZWJwYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzQ0LDggKzM0NCwxMCBAQAogICAgIHVuc2lnbmVkIHJlc3VsdCA9IDA7CiAgICAgaWYgKGFjdGlv
bnMgJiBRdDo6Q29weUFjdGlvbikKICAgICAgICAgcmVzdWx0IHw9IERyYWdPcGVyYXRpb25Db3B5
OworICAgIC8vIERyYWdPcGVyYXRpb25nZW5lcmljIHJlcHJlc2VudHMgSW50ZXJuZXRFeHBsb3Jl
cidzIGVxdWl2YWxlbnQgb2YgTW92ZSBvcGVyYXRpb24sCisgICAgLy8gaGVuY2UgaXQgc2hvdWxk
IGJlIGNvbnNpZGVyZWQgYXMgIm1vdmUiCiAgICAgaWYgKGFjdGlvbnMgJiBRdDo6TW92ZUFjdGlv
bikKLSAgICAgICAgcmVzdWx0IHw9IERyYWdPcGVyYXRpb25Nb3ZlOworICAgICAgICByZXN1bHQg
fD0gKERyYWdPcGVyYXRpb25Nb3ZlIHwgRHJhZ09wZXJhdGlvbkdlbmVyaWMpOwogICAgIGlmIChh
Y3Rpb25zICYgUXQ6OkxpbmtBY3Rpb24pCiAgICAgICAgIHJlc3VsdCB8PSBEcmFnT3BlcmF0aW9u
TGluazsKICAgICByZXR1cm4gKERyYWdPcGVyYXRpb24pcmVzdWx0OwpAQCAtMzU4LDYgKzM2MCwx
MCBAQAogICAgICAgICByZXN1bHQgPSBRdDo6Q29weUFjdGlvbjsKICAgICBlbHNlIGlmIChhY3Rp
b25zICYgRHJhZ09wZXJhdGlvbk1vdmUpCiAgICAgICAgIHJlc3VsdCA9IFF0OjpNb3ZlQWN0aW9u
OworICAgIC8vIERyYWdPcGVyYXRpb25nZW5lcmljIHJlcHJlc2VudHMgSW50ZXJuZXRFeHBsb3Jl
cidzIGVxdWl2YWxlbnQgb2YgTW92ZSBvcGVyYXRpb24sCisgICAgLy8gaGVuY2UgaXQgc2hvdWxk
IGJlIGNvbnNpZGVyZWQgYXMgIm1vdmUiCisgICAgZWxzZSBpZiAoYWN0aW9ucyAmIERyYWdPcGVy
YXRpb25HZW5lcmljKQorICAgICAgICByZXN1bHQgPSBRdDo6TW92ZUFjdGlvbjsKICAgICBlbHNl
IGlmIChhY3Rpb25zICYgRHJhZ09wZXJhdGlvbkxpbmspCiAgICAgICAgIHJlc3VsdCA9IFF0OjpM
aW5rQWN0aW9uOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC0xMDkxLDggKzEwOTcsOSBAQAogICAg
ICAgICAgICAgICAgICAgICAgIGRyb3BBY3Rpb25Ub0RyYWdPcChldi0+cG9zc2libGVBY3Rpb25z
KCkpKTsKICAgICBRdDo6RHJvcEFjdGlvbiBhY3Rpb24gPSBkcmFnT3BUb0Ryb3BBY3Rpb24ocGFn
ZS0+ZHJhZ0NvbnRyb2xsZXIoKS0+ZHJhZ0VudGVyZWQoJmRyYWdEYXRhKSk7CiAgICAgZXYtPnNl
dERyb3BBY3Rpb24oYWN0aW9uKTsKLSAgICBpZiAoYWN0aW9uICE9IFF0OjpJZ25vcmVBY3Rpb24p
Ci0gICAgICAgIGV2LT5hY2NlcHQoKTsKKyAgICAvLyBXZSBtdXN0IGFjY2VwdCB0aGlzIGV2ZW50
IGluIG9yZGVyIHRvIHJlY2VpdmUgdGhlIGRyYWcgbW92ZSBldmVudHMgdGhhdCBhcmUgc2VudAor
ICAgIC8vIHdoaWxlIHRoZSBkcmFnIGFuZCBkcm9wIGFjdGlvbiBpcyBpbiBwcm9ncmVzcy4KKyAg
ICBldi0+YWNjZXB0KCk7CiAjZW5kaWYKIH0KIApAQCAtMTEzMiw5ICsxMTM5LDExIEBACiAgICAg
RHJhZ0RhdGEgZHJhZ0RhdGEoZXYtPm1pbWVEYXRhKCksIGV2LT5wb3MoKSwgUUN1cnNvcjo6cG9z
KCksCiAgICAgICAgICAgICAgICAgICAgICAgZHJvcEFjdGlvblRvRHJhZ09wKGV2LT5wb3NzaWJs
ZUFjdGlvbnMoKSkpOwogICAgIFF0OjpEcm9wQWN0aW9uIGFjdGlvbiA9IGRyYWdPcFRvRHJvcEFj
dGlvbihwYWdlLT5kcmFnQ29udHJvbGxlcigpLT5kcmFnVXBkYXRlZCgmZHJhZ0RhdGEpKTsKKyAg
ICBtX2xhc3REcm9wQWN0aW9uID0gYWN0aW9uOwogICAgIGV2LT5zZXREcm9wQWN0aW9uKGFjdGlv
bik7Ci0gICAgaWYgKGFjdGlvbiAhPSBRdDo6SWdub3JlQWN0aW9uKQotICAgICAgICBldi0+YWNj
ZXB0KCk7CisgICAgLy8gV2UgbXVzdCBhY2NlcHQgdGhpcyBldmVudCBpbiBvcmRlciB0byByZWNl
aXZlIHRoZSBkcmFnIG1vdmUgZXZlbnRzIHRoYXQgYXJlIHNlbnQKKyAgICAvLyB3aGlsZSB0aGUg
ZHJhZyBhbmQgZHJvcCBhY3Rpb24gaXMgaW4gcHJvZ3Jlc3MuCisgICAgZXYtPmFjY2VwdCgpOwog
I2VuZGlmCiB9CiAKQEAgLTExNDMsOCArMTE1Miw3IEBACiAjaWZuZGVmIFFUX05PX0RSQUdBTkRE
Uk9QCiAgICAgRHJhZ0RhdGEgZHJhZ0RhdGEoZXYtPm1pbWVEYXRhKCksIGV2LT5wb3MoKS50b1Bv
aW50KCksCiAgICAgICAgICAgICBRQ3Vyc29yOjpwb3MoKSwgZHJvcEFjdGlvblRvRHJhZ09wKGV2
LT5wb3NzaWJsZUFjdGlvbnMoKSkpOwotICAgIFF0OjpEcm9wQWN0aW9uIGFjdGlvbiA9IGRyYWdP
cFRvRHJvcEFjdGlvbihwYWdlLT5kcmFnQ29udHJvbGxlcigpLT5wZXJmb3JtRHJhZygmZHJhZ0Rh
dGEpKTsKLSAgICBpZiAoYWN0aW9uICE9IFF0OjpJZ25vcmVBY3Rpb24pCisgICAgaWYgKHBhZ2Ut
PmRyYWdDb250cm9sbGVyKCktPnBlcmZvcm1EcmFnKCZkcmFnRGF0YSkpCiAgICAgICAgIGV2LT5h
Y2NlcHQoKTsKICNlbmRpZgogfQpAQCAtMTE1MiwxMCArMTE2MCwxMSBAQAogdm9pZCBRV2ViUGFn
ZVByaXZhdGU6OmRyb3BFdmVudChRRHJvcEV2ZW50KiBldikKIHsKICNpZm5kZWYgUVRfTk9fRFJB
R0FORERST1AKKyAgICAvLyBPdmVyd3JpdGUgdGhlIGRlZmF1bHRzIHNldCBieSBRRHJhZ01hbmFn
ZXI6OmRlZmF1bHRBY3Rpb24oKQorICAgIGV2LT5zZXREcm9wQWN0aW9uKG1fbGFzdERyb3BBY3Rp
b24pOwogICAgIERyYWdEYXRhIGRyYWdEYXRhKGV2LT5taW1lRGF0YSgpLCBldi0+cG9zKCksIFFD
dXJzb3I6OnBvcygpLAotICAgICAgICAgICAgICAgICAgICAgIGRyb3BBY3Rpb25Ub0RyYWdPcChl
di0+cG9zc2libGVBY3Rpb25zKCkpKTsKLSAgICBRdDo6RHJvcEFjdGlvbiBhY3Rpb24gPSBkcmFn
T3BUb0Ryb3BBY3Rpb24ocGFnZS0+ZHJhZ0NvbnRyb2xsZXIoKS0+cGVyZm9ybURyYWcoJmRyYWdE
YXRhKSk7Ci0gICAgaWYgKGFjdGlvbiAhPSBRdDo6SWdub3JlQWN0aW9uKQorICAgICAgICAgICAg
ICAgICAgICAgIGRyb3BBY3Rpb25Ub0RyYWdPcChRdDo6RHJvcEFjdGlvbihldi0+ZHJvcEFjdGlv
bigpKSkpOworICAgIGlmIChwYWdlLT5kcmFnQ29udHJvbGxlcigpLT5wZXJmb3JtRHJhZygmZHJh
Z0RhdGEpKQogICAgICAgICBldi0+YWNjZXB0KCk7CiAjZW5kaWYKIH0KSW5kZXg6IFdlYktpdC9x
dC9BcGkvcXdlYnBhZ2VfcC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9BcGkvcXdlYnBhZ2Vf
cC5oCShyZXZpc2lvbiA1MjYwNikKKysrIFdlYktpdC9xdC9BcGkvcXdlYnBhZ2VfcC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xODAsNiArMTgwLDcgQEAKICAgICBRV2lkZ2V0KiBpbnNwZWN0b3JGcm9u
dGVuZDsKICAgICBRV2ViSW5zcGVjdG9yKiBpbnNwZWN0b3I7CiAgICAgYm9vbCBpbnNwZWN0b3JJ
c0ludGVybmFsT25seTsgLy8gVHJ1ZSBpZiBjcmVhdGVkIHRocm91Z2ggdGhlIEluc3BlY3QgY29u
dGV4dCBtZW51IGFjdGlvbgorICAgIFF0OjpEcm9wQWN0aW9uIG1fbGFzdERyb3BBY3Rpb247CiAK
ICAgICBzdGF0aWMgYm9vbCBkcnRSdW47CiB9OwpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDUyNjYzKQorKysgV2ViQ29y
ZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAwOS0xMi0zMCAg
WWFlbCBBaGFyb24gIDx5YWVsLmFoYXJvbkBub2tpYS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBEcmFnICYgZHJvcCBsYXlvdXQgdGVz
dHMgZmFpbCBldmVuIHdoZW4gcnVuIG1hbnVhbGx5CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzA1NQorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gRml4
IDMgbGF5b3V0IHRlc3RzIHdoZW4gcnVuIG1hbnVhbGx5LgorICAgICAgICBmYXN0L2V2ZW50cy9k
cmFnLWFuZC1kcm9wLmh0bWwKKyAgICAgICAgZmFzdC9ldmVudHMvZHJhZy1hbmQtZHJvcC1kYXRh
VHJhbnNmZXItdHlwZXMtbm9jcmFzaC5odG1sCisgICAgICAgIGZhc3QvZXZlbnRzL2RyYWctYW5k
LWRyb3AtZmlyZS1kcmFnLWRyYWdvdmVyLmh0bWwKKyAgICAgICAgUnVubmluZyB0aGVzZSB0ZXN0
cyBpbiBEUlQgd2lsbCBiZSBmaXhlZCBpbiAzMTMzMi4KKworICAgICAgICAqIHBhZ2UvcXQvRHJh
Z0NvbnRyb2xsZXJRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ29udHJvbGxlcjo6Y2xl
YW51cEFmdGVyU3lzdGVtRHJhZyk6CisgICAgICAgIENsZWFudXAgdGhlIGRyYWcgb3BlcmF0aW9u
IGlmIGl0IGZhaWxlZCB0byBjb21wbGV0ZSwKKyAgICAgICAgT3RoZXJ3aXNlLCBuZXcgZHJhZyBv
cGVyYXRpb25zIHdpbGwgbm90IGJlIHBvc3NpYmxlLgorCiAyMDA5LTEyLTMwICBMYXN6bG8gR29t
Ym9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBIYXVzbWFubi4KSW5kZXg6IFdlYkNvcmUvcGFnZS9xdC9EcmFnQ29udHJvbGxlclF0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvcXQvRHJhZ0NvbnRyb2xsZXJRdC5jcHAJKHJl
dmlzaW9uIDUyNjA2KQorKysgV2ViQ29yZS9wYWdlL3F0L0RyYWdDb250cm9sbGVyUXQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02Niw2ICs2Niw3IEBACiAKIHZvaWQgRHJhZ0NvbnRyb2xsZXI6OmNs
ZWFudXBBZnRlclN5c3RlbURyYWcoKQogeworICAgIGRyYWdFbmRlZCgpOwogfQogCiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>