<?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>23642</bug_id>
          
          <creation_ts>2009-01-30 06:10:44 -0800</creation_ts>
          <short_desc>[GTK] Drag and drop support</short_desc>
          <delta_ts>2009-09-28 17:12:57 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</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>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Gustavo Noronha (kov)">gustavo</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>jmalonzo</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>107684</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2009-01-30 06:10:44 -0800</bug_when>
    <thetext>As of this writing, the Gtk port lacks drag and drop implementation.

As a guideline, the DND support should work well with the GNOME environment and other applications.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107691</commentid>
    <comment_count>1</comment_count>
      <attachid>27180</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2009-01-30 06:50:37 -0800</bug_when>
    <thetext>Created attachment 27180
The &apos;drag&apos; implementation

This only implements the &apos;drag&apos; of the &apos;drag and drop&apos;.

With this, user can now click and drag images, links and text to other applications. As far as I&apos;ve tested, the following (properly) works in the GNOME environment (Ubuntu 8.10):
- dragging a link to desktop (Nautilus) =&gt; creates a link,
- dragging an image to desktop =&gt; downloads the image,
- dragging links, text or HTML to Pidgin,
- dragging links or text to Firefox&apos;s search engine input and navigation input,
- dragging links to Epiphany&apos;s navigation input,
- dragging image to OpenOffice&apos;s Drawing =&gt; copies the image.

Supported targets are text targets, HTML, image targets, uri list targets and the _NETSCAPE_URL target.

Because of the lack of a proper (drag) data container in the Gtk toolkit, a small &apos;drag clipboard&apos; was implemented. It is easily accessible to both WebCore and WebKit components. The GtkClipboard with GTK_SELECTION_SECONDARY could be used, but such clipboards seem to be storing only one type of data at time. Targets, however, can be very different - dragging an image can result in giving the destination either text, link or image itself.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107693</commentid>
    <comment_count>2</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2009-01-30 06:57:06 -0800</bug_when>
    <thetext>As just seen, this patch also interferes with problems of https://bugs.webkit.org/show_bug.cgi?id=20412

I recommend to first push the patch at #20412 through and then modify this patch properly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111052</commentid>
    <comment_count>3</comment_count>
      <attachid>27180</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-02-25 15:37:29 -0800</bug_when>
    <thetext>Comment on attachment 27180
The &apos;drag&apos; implementation

&gt; +#elif PLATFORM(GTK)
&gt; +typedef struct _GdkPixbuf GdkPixbuf;
&gt;  #endif

Shouldn&apos;t this be struct GdkPixbuf only? It seems to me like the typedef is an implementation detail that should not be propagated to client code.

&gt; +    GdkPixmap* pixmap = gdk_pixmap_new(NULL, width, height, 24);
[...]
&gt; +    GdkPixbuf* pixbuf = gdk_pixbuf_get_from_drawable(NULL, GDK_DRAWABLE(pixmap), NULL, 0, 0, 0, 0, width, height);

I believe you should use 0 on those instead of NULL, since this is WebCore code.

&gt; +typedef struct _GtkSelectionData GtkSelectionData;

Same as for GdkPixbuf?

&gt; + void DragClipboard::resetClipboard()
&gt; + {
&gt; +     if (image())
&gt; +         deleteDragImage(image());
&gt; +     setImage(NULL);

NULL -&gt; 0

&gt; +        GdkPixbuf* scaledImage =  gdk_pixbuf_scale_simple(image,
&gt; +                                                imageSize.width() * scale.width(),
&gt; +                                                imageSize.height() * scale.height(),
&gt; +                                                GDK_INTERP_NEAREST);

This indentation looks wrong to me. Perhaps some tabs need to be converted to spaces here, or something?

&gt;  typedef enum
&gt;  {
&gt; -    WEBKIT_WEB_VIEW_TARGET_INFO_HTML = - 1,
&gt; -    WEBKIT_WEB_VIEW_TARGET_INFO_TEXT = - 2
&gt; +    WEBKIT_WEB_VIEW_TARGET_INFO_HTML = 1,
&gt; +    WEBKIT_WEB_VIEW_TARGET_INFO_TEXT,
&gt; +    WEBKIT_WEB_VIEW_TARGET_INFO_IMAGE,
&gt; +    WEBKIT_WEB_VIEW_TARGET_INFO_URI_LIST,
&gt; +    WEBKIT_WEB_VIEW_TARGET_INFO_NETSCAPE_URL
&gt;  } WebKitWebViewTargetInfo;

This is weird. This probably means breaking the ABI; is this something we should worry about? Why were these negative values used?

I believe your patch does 2 very distinct things, so you should consider splitting it in two changes: one dealing with the clipboard, and another on top of that, dealing with the drag/drop thing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111643</commentid>
    <comment_count>4</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2009-02-28 12:49:02 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 27180 [review])
&gt; &gt; +#elif PLATFORM(GTK)
&gt; &gt; +typedef struct _GdkPixbuf GdkPixbuf;
&gt; &gt;  #endif
&gt; 
&gt; Shouldn&apos;t this be struct GdkPixbuf only? It seems to me like the typedef is an
&gt; implementation detail that should not be propagated to client code.

This style of typedef statements is used all over the WebCore, that&apos;s why it is used in the same way here. But I have no problem with changing it if needed.

&gt; &gt;  typedef enum
&gt; &gt;  {
&gt; &gt; -    WEBKIT_WEB_VIEW_TARGET_INFO_HTML = - 1,
&gt; &gt; -    WEBKIT_WEB_VIEW_TARGET_INFO_TEXT = - 2
&gt; &gt; +    WEBKIT_WEB_VIEW_TARGET_INFO_HTML = 1,
&gt; &gt; +    WEBKIT_WEB_VIEW_TARGET_INFO_TEXT,
&gt; &gt; +    WEBKIT_WEB_VIEW_TARGET_INFO_IMAGE,
&gt; &gt; +    WEBKIT_WEB_VIEW_TARGET_INFO_URI_LIST,
&gt; &gt; +    WEBKIT_WEB_VIEW_TARGET_INFO_NETSCAPE_URL
&gt; &gt;  } WebKitWebViewTargetInfo;
&gt; 
&gt; This is weird. This probably means breaking the ABI; is this something we
&gt; should worry about? Why were these negative values used?

This patch was diffed out before the proper patch in #20412 [1] was reviewed and committed into the trunk. A new patch takes that into account.

&gt; I believe your patch does 2 very distinct things, so you should consider
&gt; splitting it in two changes: one dealing with the clipboard, and another on top
&gt; of that, dealing with the drag/drop thing.

The patch is now split into 3 - one dealing with GdkPixbuf conversion, one with the drag clipboard and one with drag implementations.
The latter two will be attached here, while the first will be attached to #15654 [2].

[1] https://bugs.webkit.org/show_bug.cgi?id=20412
[2] https://bugs.webkit.org/show_bug.cgi?id=15654</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111644</commentid>
    <comment_count>5</comment_count>
      <attachid>28123</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2009-02-28 12:51:10 -0800</bug_when>
    <thetext>Created attachment 28123
The drag clipboard

Implements a new container, able to hold multiple types of data, which is useful for storing drag data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111645</commentid>
    <comment_count>6</comment_count>
      <attachid>28124</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2009-02-28 12:55:08 -0800</bug_when>
    <thetext>Created attachment 28124
The clipboard, drag image and other implementations

Implements drag image manipulation functions, WebCore&apos;s clipboard and others.
(My god, so unwilling for detailed descriptions :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112731</commentid>
    <comment_count>7</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-03-07 12:47:16 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Created an attachment (id=28123) [review]
&gt; The drag clipboard
&gt; 
&gt; Implements a new container, able to hold multiple types of data, which is
&gt; useful for storing drag data.
&gt; 

+    static DragClipboard* clipboard = 0;
+
+    if (!clipboard)
+        clipboard = new DragClipboard;

can simply do:

static DragClipboard* clipboard = new DragClipboard;
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112733</commentid>
    <comment_count>8</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-03-07 13:07:35 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Created an attachment (id=28124) [review]
&gt; The clipboard, drag image and other implementations
&gt; 
&gt; Implements drag image manipulation functions, WebCore&apos;s clipboard and others.
&gt; (My god, so unwilling for detailed descriptions :)
&gt; 

-DragImageRef createDragImageFromImage(Image*)
+DragImageRef createDragImageFromImage(Image* image)
 {
-    return 0;
+    return image-&gt;getGdkPixbuf();
 }

Mmm, is this supposed to return a new reference or not? The name seems to imply &apos;yes&apos;, the function used &apos;no&apos;, although later checking the GdkPixbuf it seems it does. Maybe it should be &apos;createGdkPixbuf&apos;? Maybe I should comment in the other bug... :)

+    } else if (isElementImage) {
+        gtk_target_list_add_image_targets(targetList, WEBKIT_WEB_VIEW_TARGET_INFO_IMAGE, false);
+    }

No braces here.

+    Element* targetElement = focusedFrame-&gt;document()-&gt;elementFromPoint(m_startPos.x(), m_startPos.y());
+    bool isElementLink = false;
+    bool isElementImage = targetElement-&gt;renderer()-&gt;isImage();

Can elementFromPoint() ever return NULL?

+    ((GdkEventButton*)event)-&gt;window = gtk_widget_get_window(GTK_WIDGET(m_webView));
+    ((GdkEventButton*)event)-&gt;time = GDK_CURRENT_TIME;

Better convert this to C++ castings, or better, create a GdkEventButton* variable.

+    GdkDragContext* context = gtk_drag_begin(GTK_WIDGET(m_webView),
+                                   targetList,
+                                   dragAction,
+                                   1,
+                                   event);

Indentation is broken.

+        gchar* data = g_strdup((clipboard-&gt;html().isEmpty() || clipboard-&gt;html().isNull())
+                                        ? clipboard-&gt;text().utf8().data() : clipboard-&gt;html().utf8().data());
+        gtk_selection_data_set(selection_data,
+                        selection_data-&gt;target,
+                        8, (guchar*)data, strlen(data));

More broken indentation. Also in general I fixnd the whole g{char, int, ...} stuff pretty useless, and the glib/gtk+ maintainers agree it was a mistake. I think we should just use char.

+                        8, (guchar*)data, strlen(data));
+

C casting.

Same comments about indentation and C castings and gchar apply in the other switch branches. Also I think you could declare &apos;char* data&apos; before the switch and avoid the braces for new scope inside the branches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>116407</commentid>
    <comment_count>9</comment_count>
      <attachid>28123</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-04-02 23:51:00 -0700</bug_when>
    <thetext>Comment on attachment 28123
The drag clipboard


&gt; +void DragClipboard::resetClipboard()
&gt; +{
&gt; +    if (image())
&gt; +        deleteDragImage(image());

I didn&apos;t check the other ports... but this looks wrong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118649</commentid>
    <comment_count>10</comment_count>
      <attachid>29738</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2009-04-24 05:46:55 -0700</bug_when>
    <thetext>Created attachment 29738
The clipboard, drag image and other implementations, improved

Removed braces from switch cases, C++ castings now in use, the dragged image is now held where it was grabbed (used to be held at (0,0)).

Target element (on which the start of the drag was performed) can be NULL if it has no renderer (but is that even possible, starting a drag on an element with no renderer?), so we check for its existence and only then decide whether it&apos;s a link or even image that we&apos;ll be dragging.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118728</commentid>
    <comment_count>11</comment_count>
      <attachid>29738</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-04-24 14:16:05 -0700</bug_when>
    <thetext>Comment on attachment 29738
The clipboard, drag image and other implementations, improved

&gt; +    CachedImage* cachedImage = getCachedImage(element);
&gt; +    if (!cachedImage || !cachedImage-&gt;image() || !cachedImage-&gt;isLoaded())

Isn&apos;t it impossible that something returned by cachedImage fails for -&gt;image() ?

&gt; +        return;
&gt; +    GdkPixbuf* pixbuf = cachedImage-&gt;image()-&gt;getGdkPixbuf();
&gt; +    if (pixbuf)
&gt; +        m_dragClipboard-&gt;setImage(pixbuf);;
&gt; +
&gt; +    m_dragClipboard-&gt;setText(url.string());
&gt; +    m_dragClipboard-&gt;setUrl(url.string());
&gt; +    m_dragClipboard-&gt;setUrlLabel(label);
&gt;  }
&gt;  
&gt; -void ClipboardGtk::writeRange(Range*, Frame*)
&gt; +void ClipboardGtk::writeURL(const KURL&amp; url, const String&amp; label, Frame*)
&gt;  {
&gt; -    notImplemented();
&gt; +    if (!m_dragClipboard)
&gt; +        return;
&gt; +
&gt; +    m_dragClipboard-&gt;setText(url.string());
&gt; +    m_dragClipboard-&gt;setUrl(url.string());
&gt; +    m_dragClipboard-&gt;setUrlLabel(label);

Make the first function call the second one perhaps?

&gt; diff --git a/WebCore/platform/gtk/ClipboardGtk.h b/WebCore/platform/gtk/ClipboardGtk.h
&gt; index b8b4ddf..4e7ef38 100644
&gt; --- a/WebCore/platform/gtk/ClipboardGtk.h
&gt; +++ b/WebCore/platform/gtk/ClipboardGtk.h
&gt; @@ -24,13 +24,14 @@
&gt;   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
&gt;   */
&gt;  
&gt; -#ifndef ClipboardGdk_h
&gt; -#define ClipboardGdk_h
&gt; +#ifndef ClipboardGtk_h
&gt; +#define ClipboardGtk_h
&gt;  


&gt; -    return image;
&gt; +    if (image) {
&gt; +        IntSize imageSize = dragImageSize(image);
&gt; +        GdkPixbuf* scaledImage = gdk_pixbuf_scale_simple(image, imageSize.width() * scale.width(), imageSize.height() * scale.height(), GDK_INTERP_NEAREST);

The docs recommend GDK_INTER_BILINEAR here, any reason not to use it?

&gt; +
&gt; +#if GTK_CHECK_VERSION(2,10,0)
&gt; +    GdkAtom textHtml = gdk_atom_intern_static_string(&quot;text/html&quot;);
&gt; +    GdkAtom netscapeUrl = gdk_atom_intern_static_string(&quot;_NETSCAPE_URL&quot;);
&gt; +#else
&gt; +    GdkAtom textHtml = gdk_atom_intern(&quot;text/html&quot;, false);
&gt; +    GdkAtom netscapeUrl = gdk_atom_intern(&quot;_NETSCAPE_URL&quot;, false);
&gt; +#endif

We require GTK+ 2.10 now, so you can get rid of this.

&gt; +
&gt; +    GdkDragContext* context = gtk_drag_begin(GTK_WIDGET(m_webView),
&gt; +                                                targetList,
&gt; +                                                dragAction,
&gt; +                                                1,
&gt; +                                                event);

Indentation?

&gt; +static void webkit_web_view_drag_data_get(GtkWidget* widget, GdkDragContext* context, GtkSelectionData* selection_data, guint info, guint time_)
&gt; +{
&gt; +    DragClipboard* clipboard = DragClipboard::clipboard();
&gt; +    char* data;
&gt; +
&gt; +    switch (info) {
&gt; +    case WEBKIT_WEB_VIEW_TARGET_INFO_HTML:
&gt; +        data = g_strdup((clipboard-&gt;html().isEmpty() || clipboard-&gt;html().isNull())
&gt; +                                        ? clipboard-&gt;text().utf8().data() : clipboard-&gt;html().utf8().data());
&gt; +        gtk_selection_data_set(selection_data,
&gt; +                                selection_data-&gt;target,
&gt; +                                8,
&gt; +                                reinterpret_cast&lt;guchar*&gt;(data),
&gt; +                                strlen(data));
&gt; +
&gt; +        g_free(data);
&gt; +        return;
&gt; +    case WEBKIT_WEB_VIEW_TARGET_INFO_TEXT:
&gt; +        data = g_strdup(clipboard-&gt;text().utf8().data());
&gt; +        gtk_selection_data_set(selection_data,
&gt; +                                selection_data-&gt;target,
&gt; +                                8,
&gt; +                                reinterpret_cast&lt;guchar*&gt;(data),
&gt; +                                strlen(data));
&gt; +        g_free(data);
&gt; +        return;
&gt; +    case WEBKIT_WEB_VIEW_TARGET_INFO_IMAGE:
&gt; +        gtk_selection_data_set_pixbuf(selection_data, clipboard-&gt;image());
&gt; +        return;
&gt; +    case WEBKIT_WEB_VIEW_TARGET_INFO_URI_LIST:
&gt; +        data = g_strdup_printf(&quot;%s\r\n%s\r\n&quot;,
&gt; +                                        clipboard-&gt;url().utf8().data(),
&gt; +                                        (clipboard-&gt;urlLabel().isEmpty() || clipboard-&gt;urlLabel().isNull())
&gt; +                                            ? clipboard-&gt;url().utf8().data() : clipboard-&gt;urlLabel().utf8().data());
&gt; +        gtk_selection_data_set(selection_data,
&gt; +                                selection_data-&gt;target,
&gt; +                                8,
&gt; +                                reinterpret_cast&lt;guchar*&gt;(data),
&gt; +                                strlen(data));
&gt; +
&gt; +        g_free(data);
&gt; +        return;
&gt; +    case WEBKIT_WEB_VIEW_TARGET_INFO_NETSCAPE_URL:
&gt; +        data = g_strdup_printf(&quot;%s\n%s&quot;,
&gt; +                                        clipboard-&gt;url().utf8().data(),
&gt; +                                        (clipboard-&gt;urlLabel().isEmpty() || clipboard-&gt;urlLabel().isNull())
&gt; +                                            ? clipboard-&gt;url().utf8().data() : clipboard-&gt;urlLabel().utf8().data());
&gt; +
&gt; +        gtk_selection_data_set(selection_data,
&gt; +                                selection_data-&gt;target,
&gt; +                                8,
&gt; +                                reinterpret_cast&lt;guchar*&gt;(data),
&gt; +                                strlen(data));
&gt; +
&gt; +        g_free(data);
&gt; +        return;
&gt; +    }

The indentation seems to be really wrong here in some places.
&gt; +}
&gt; +</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>118830</commentid>
    <comment_count>12</comment_count>
      <attachid>29786</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2009-04-25 03:23:53 -0700</bug_when>
    <thetext>Created attachment 29786
The clipboard, drag image and other implementations, improved

Fixes indentation problems, uses writeURL in declareAndWriteDragImage, removes #if sentences in DragClientGtk.cpp.
GDK_INTERP_NEAREST was used there mostly for speed, but BILINEAR seems a better choice indeed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121999</commentid>
    <comment_count>13</comment_count>
      <attachid>28123</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-05-19 18:34:26 -0700</bug_when>
    <thetext>Comment on attachment 28123
The drag clipboard

&gt; +    if (image())
&gt; +        deleteDragImage(image());
&gt; +    setImage(0);

This seems to be wrong indeed. You would at least need to implement the function for GTK+. I believe the best course of action is changing this, though:

#elif PLATFORM(GTK)
    typedef void* DragImageRef;
#endif

I think you should turn this into:

typedef GOwnPtr&lt;GdkPixbuf*&gt; DragImageRef;

Then you would not need the deleteDragImage implementation and call at all. I believe these changes could be part of this patch, since the drag clipboard implementation doesn&apos;t touch other code, it wouldn&apos;t matter in terms of bisecting. Sounds good?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122773</commentid>
    <comment_count>14</comment_count>
      <attachid>29786</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-05-22 20:13:38 -0700</bug_when>
    <thetext>Comment on attachment 29786
The clipboard, drag image and other implementations, improved


&gt; +static CachedImage* getCachedImage(Element* element)
As far as I can tell this is copied directly from DragController, it seems a better solution would be for this to be a shared function -- possibly on Element, but i&apos;m not sure.  I&apos;d like hyatt&apos;s input.

&gt; -void ClipboardGtk::writeURL(const KURL&amp;, const String&amp;, Frame*)
&gt; +void ClipboardGtk::declareAndWriteDragImage(Element* element, const KURL&amp; url, const String&amp; label, Frame*)
I was just looking at the code for this on Mac and i&apos;m wondering if it should not be possible to move all this logic more directly into WebCore, but i don&apos;t think that matters for this particular patch

&gt;  
&gt; -void ClipboardGtk::writeRange(Range*, Frame*)
&gt; +void ClipboardGtk::writeURL(const KURL&amp; url, const String&amp; label, Frame*)
&gt; +void ClipboardGtk::writeRange(Range* range, Frame* frame)

I do not believe it is right to arbitrarily write to the dragging pasteboard as the Clipboard object is exposed to JS in some places where it is used (IIRC) for non-dragging related clipboard interaction.

&gt; diff --git a/WebCore/platform/gtk/DragImageGtk.cpp b/WebCore/platform/gtk/DragImageGtk.cpp
&gt; index 4ddae3a..a8bc7d3 100644
&gt; --- a/WebCore/platform/gtk/DragImageGtk.cpp
&gt; +++ b/WebCore/platform/gtk/DragImageGtk.cpp
All the changes here look good.

&gt; diff --git a/WebKit/gtk/ChangeLog b/WebKit/gtk/ChangeLog
Unfortunately the remainder of this patch is to heavily bound in gtk API concepts for me to be able to review meaningfully</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>123087</commentid>
    <comment_count>15</comment_count>
      <attachid>29786</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-05-25 18:40:52 -0700</bug_when>
    <thetext>Comment on attachment 29786
The clipboard, drag image and other implementations, improved

Do I understand it correctly that you no rely on that new clipboard implementation on this patch?

&gt; +        m_dragClipboard-&gt;setImage(pixbuf);;

You are leaking pixbuf here, unless m_dragClipboard somehow adopts the initial reference.

&gt; +    GdkEvent* event = gdk_event_new(GDK_BUTTON_PRESS);
&gt; +    reinterpret_cast&lt;GdkEventButton*&gt;(event)-&gt;window = gtk_widget_get_window(GTK_WIDGET(m_webView));
&gt; +    reinterpret_cast&lt;GdkEventButton*&gt;(event)-&gt;time = GDK_CURRENT_TIME;
&gt; +
&gt; +    GdkDragContext* context = gtk_drag_begin(GTK_WIDGET(m_webView),
&gt; +                                             targetList, dragAction, 1, event);

I think you are leaking this event.

&gt; +    case WEBKIT_WEB_VIEW_TARGET_INFO_HTML:
&gt; +        data = g_strdup((clipboard-&gt;html().isEmpty() || clipboard-&gt;html().isNull())
&gt; +                        ? clipboard-&gt;text().utf8().data() : clipboard-&gt;html().utf8().data());
&gt; +        gtk_selection_data_set(selection_data, selection_data-&gt;target, 8,
&gt; +                               reinterpret_cast&lt;guchar*&gt;(data), strlen(data));
&gt; +        g_free(data);

No reason to strdup and free here, just use the pointer.

&gt; +    case WEBKIT_WEB_VIEW_TARGET_INFO_TEXT:
&gt; +        data = g_strdup(clipboard-&gt;text().utf8().data());
&gt; +        gtk_selection_data_set(selection_data, selection_data-&gt;target, 8,
&gt; +                               reinterpret_cast&lt;guchar*&gt;(data), strlen(data));
&gt; +        g_free(data);

Same here.

Looking at Oliver comments, I think you should clarify the usage of DragClipboard here. My understanding is that the clipboard you are using is separate from the one that is exposed to javascript, but I may be wrong. I&apos;ll say r- for now, since I think you still need to update the other patch before we move forward here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129077</commentid>
    <comment_count>16</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2009-06-30 08:16:10 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; typedef GOwnPtr&lt;GdkPixbuf*&gt; DragImageRef;
&gt; 

After discussion on IRC, it was decided that &apos;typedef GdkPixbuf* DragImageRef;&apos; should be used for now.

(In reply to comment #15)
&gt; Looking at Oliver comments, I think you should clarify the usage of
&gt; DragClipboard here. My understanding is that the clipboard you are using is
&gt; separate from the one that is exposed to javascript, but I may be wrong. I&apos;ll
&gt; say r- for now, since I think you still need to update the other patch before
&gt; we move forward here.
&gt; 

DragClipboard is (for now) intended to be exclusively used for GUI dragging and should not be exposed to JavaScript.

The bigger patch will be split into more patches. The first will only deal with changes in DragImage class, second will implement ClipboardGtk class functions, third will more or less implement DragClientGtk class in WebCoreSupport part of WebKit, and the fourth will finish off with changes in webkitwebview.cpp The drag clipboard patch should be thrown between the first and second patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129079</commentid>
    <comment_count>17</comment_count>
      <attachid>32067</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2009-06-30 08:18:39 -0700</bug_when>
    <thetext>Created attachment 32067
First patch

DragImageRef, drag image functions implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129114</commentid>
    <comment_count>18</comment_count>
      <attachid>32067</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-06-30 11:32:34 -0700</bug_when>
    <thetext>Comment on attachment 32067
First patch

Ok, looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129149</commentid>
    <comment_count>19</comment_count>
      <attachid>32089</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2009-06-30 13:42:09 -0700</bug_when>
    <thetext>Created attachment 32089
First patch, updated

Adds additional check in deleteDragImage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129154</commentid>
    <comment_count>20</comment_count>
      <attachid>32091</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2009-06-30 13:53:05 -0700</bug_when>
    <thetext>Created attachment 32091
DragClipboard patch

Implements DragClipboard data holder.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129197</commentid>
    <comment_count>21</comment_count>
      <attachid>32089</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-06-30 15:39:25 -0700</bug_when>
    <thetext>Comment on attachment 32089
First patch, updated

Gustavo already r+&apos;d most of this patch so r+ with the update.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129199</commentid>
    <comment_count>22</comment_count>
      <attachid>32091</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-06-30 15:45:41 -0700</bug_when>
    <thetext>Comment on attachment 32091
DragClipboard patch

Hi Zan

&gt; +
&gt; +namespace WebCore {
&gt; +class String;

There needs to be an indent here.

Where is this used by the way? I&apos;d like to see a patch that include its usage as well. I&apos;ll say r- for now until a patch that uses DragClipboard is included.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129234</commentid>
    <comment_count>23</comment_count>
      <attachid>32089</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-06-30 19:17:22 -0700</bug_when>
    <thetext>Comment on attachment 32089
First patch, updated

Landed in r45414. Marking patch as obsolete and clearing commit flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129235</commentid>
    <comment_count>24</comment_count>
      <attachid>32067</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-06-30 19:19:26 -0700</bug_when>
    <thetext>Comment on attachment 32067
First patch

Clearing r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129342</commentid>
    <comment_count>25</comment_count>
      <attachid>32135</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2009-07-01 13:01:37 -0700</bug_when>
    <thetext>Created attachment 32135
Second patch

This is the second patch dissected from the WebKit/WebCore updates patch.

This one finally uses DragClipboard as the proper data holder.

One more patch is on its way, mostly taking care of things in WebKit part (WebCoreSupport updates and proper support for dnd actions in WebKitWebView). The patch should be prepared tomorrow, so the reviewer can also wait for that one and then land these patches in the same day.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129948</commentid>
    <comment_count>26</comment_count>
      <attachid>32305</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2009-07-06 07:44:47 -0700</bug_when>
    <thetext>Created attachment 32305
Third patch

The last patch with changes in WebKit.
Implements drag_data_get and drag_end functions for WebKitWebView, WebCore::DragClient.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>130193</commentid>
    <comment_count>27</comment_count>
      <attachid>32375</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2009-07-07 06:28:52 -0700</bug_when>
    <thetext>Created attachment 32375
Third patch

Re-upload of the third patch, now with a proper review flag.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131668</commentid>
    <comment_count>28</comment_count>
      <attachid>32375</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-07-14 14:17:48 -0700</bug_when>
    <thetext>Comment on attachment 32375
Third patch

&gt; +//    gtk_target_list_unref(targetList);
&gt;  }

I don&apos;t like adding commented code. It seems to me like we need to keep track of both targetList and context, to make sure they go away when the drag operation ends. Should they be added to the private struct?

&gt; +namespace WebCore {
&gt; +    class IntPoint;
&gt; +}

Maybe make this class WebCore::IntPoint; to avoid using more lines than necessary? =)

&gt;  namespace WebKit {
&gt; +

I think there are some unecesary empty line additions in the patch. Some, like the one bellow are OK, but I think the others should be removed:

&gt;      public:
&gt; +        DragClient(WebKitWebView*);
&gt; +

&gt; +        private:
&gt; +            WebKitWebView* m_webView;
&gt; +
&gt; +            WebCore::IntPoint m_startPos;

Like this one.

&gt; +static void webkit_web_view_drag_end(GtkWidget* widget, GdkDragContext* context)
&gt; +{
&gt; +    DragClipboard::clipboard()-&gt;resetClipboard();
&gt; +}

This is where we want to free context and targetList, I believe.

&gt; +    fprintf(stderr, &quot;webkit_web_view_drag_data_get %d\n&quot;, info);

Debugging that should go away?

The rest looks fine. I think if you modify the code to not leak targetList and context we should be good to go with this one =). r- for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>131670</commentid>
    <comment_count>29</comment_count>
      <attachid>32135</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-07-14 14:20:38 -0700</bug_when>
    <thetext>Comment on attachment 32135
Second patch

This one seems to be fine, but I&apos;d like to commit both at the same time, indeed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134777</commentid>
    <comment_count>30</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2009-07-25 15:13:08 -0700</bug_when>
    <thetext>Assigning to gns so this doesn&apos;t tempt me to land from the commit queue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134828</commentid>
    <comment_count>31</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2009-07-26 12:24:12 -0700</bug_when>
    <thetext>(In reply to comment #28)
&gt; (From update of attachment 32375 [details])
&gt; &gt; +//    gtk_target_list_unref(targetList);
&gt; &gt;  }
&gt; 
&gt; I don&apos;t like adding commented code. It seems to me like we need to keep track
&gt; of both targetList and context, to make sure they go away when the drag
&gt; operation ends. Should they be added to the private struct?

Yeah, the comment slashes are unneeded.
It seems, however, that the target list can be unreffed at this point.
It starts out with ref count 1 when gtk_target_list_new is called. Ref count then gets increased to 2 in gtk_drag_begin_internal[1], so the target list is certain to survive the whole dnd process.
The target list should be dereffed once by our code. At this moment, I don&apos;t think it matters whether this is done at current point or at the end of the drag.

&gt; 
&gt; &gt; +static void webkit_web_view_drag_end(GtkWidget* widget, GdkDragContext* context)
&gt; &gt; +{
&gt; &gt; +    DragClipboard::clipboard()-&gt;resetClipboard();
&gt; &gt; +}
&gt; 
&gt; This is where we want to free context and targetList, I believe.

Unreffing context at this point fails, as the context doesn&apos;t seem to be a GObject. To avoid that, I&apos;ve added a g_object_ref call on the context when the latter is returned from the gtk_drag_begin function in DragClient::startDrag.

&gt; 
&gt; &gt; +    fprintf(stderr, &quot;webkit_web_view_drag_data_get %d\n&quot;, info);
&gt; 
&gt; Debugging that should go away?

Sure.


The patch follows in a moment.

[1] http://git.gnome.org/cgit/gtk+/tree/gtk/gtkdnd.c#n2398</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134829</commentid>
    <comment_count>32</comment_count>
      <attachid>33515</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2009-07-26 12:26:47 -0700</bug_when>
    <thetext>Created attachment 33515
Third patch

Improved!
Removed some debugging leftovers, some ref counting love added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>134830</commentid>
    <comment_count>33</comment_count>
      <attachid>33516</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2009-07-26 12:28:35 -0700</bug_when>
    <thetext>Created attachment 33516
DragClipboard patch

Fixed indent in the header file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138036</commentid>
    <comment_count>34</comment_count>
      <attachid>33516</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-07 12:24:06 -0700</bug_when>
    <thetext>Comment on attachment 33516
DragClipboard patch

Does GTK really not have a clipboard for dragging?

storage of text/html/url/urllable is probably easier with a HashMap&lt;String, String&gt;.  At least if you plan to add other types in the future.

Looks OK though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138262</commentid>
    <comment_count>35</comment_count>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-08-07 19:04:12 -0700</bug_when>
    <thetext>(In reply to comment #32)
&gt; Created an attachment (id=33515) [details]
&gt; Third patch
&gt; 
&gt; Improved!
&gt; Removed some debugging leftovers, some ref counting love added.

Can you please attach a manual test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138344</commentid>
    <comment_count>36</comment_count>
      <attachid>33515</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-08 09:05:21 -0700</bug_when>
    <thetext>Comment on attachment 33515
Third patch

What are the ownership semantics of this call?
         gtk_selection_data_set(selection_data, selection_data-&gt;target, 8,
 1107                                reinterpret_cast&lt;const guchar*&gt;(clipboard-&gt;text().utf8().data()),
 1108                                clipboard-&gt;text().length());

I assume the clipboard makes a copy of whatever string we send to it?

Seems we could put all the string acquisition logic in the switch and follow the switch with a single gtk_selection_data_set call.

Also, seems a bit odd to use a switch if you&apos;re returning out of each condition.

Why use forcusedFrame instead of the passed in Frame?

What is clipboard used for in startDrag and why does the gtk code not use it?

Need more information in the ChangeLog about why we&apos;re deviating from the expected Platform interface by ignoring the parameters in the startDrag call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>138549</commentid>
    <comment_count>37</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2009-08-09 13:38:09 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; (From update of attachment 33516 [details])
&gt; Does GTK really not have a clipboard for dragging?
&gt; 

After having another look at the whole GTK&apos;s clipboard system, it&apos;s acutally possible to create new clipboards that then contain different formats. E.g., one clipboard carries urls, other url labels, third an image ...
This does eliminate the need for the DragClipboard.
In other words, time was being wasted not only by me when writing the patch, but also by you, reviewers.
For that, I sincerely apologize.

New patch(es) coming in near future.

Until that time I&apos;d like to request not to commit any reviewed patches, especially the DragClipboard patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139306</commentid>
    <comment_count>38</comment_count>
      <attachid>34658</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2009-08-12 06:05:01 -0700</bug_when>
    <thetext>Created attachment 34658
Second patch

This patch eliminates use of DragClipboard and now relies upon different GtkClipboard clipboards.
Also includes a small fix in the ClipboardGtk.h header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139308</commentid>
    <comment_count>39</comment_count>
      <attachid>34659</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2009-08-12 06:15:31 -0700</bug_when>
    <thetext>Created attachment 34659
Third patch

This patch now does not use DragClipboard, but requests contents of different clipboards. Which clipboard is requested depends on the type of drag data we need to provide.
WebKit::DragClient::startDrag now uses more of the obejcts passed to it when called - previously, we searched for focused frame and checked whether target element is a link to set drag action flags properly, now we use frame passed in by WebCore::DragController and look up to boolean value of linkDrag.

Also attached is a manual test that gives directions to test different drag situations.

Anything else left unresponded from the comments #34-#36 will be responded to in a minute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>139309</commentid>
    <comment_count>40</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2009-08-12 06:24:48 -0700</bug_when>
    <thetext>(In reply to comment #34)
&gt; (From update of attachment 33516 [details])
&gt; Does GTK really not have a clipboard for dragging?

There is no such specific clipboard. The patch now uses 5 different clipboards to hold the data.

(In reply to comment #35)
&gt; Can you please attach a manual test?

Attached in the third patch.

(In reply to comment #36)
&gt; (From update of attachment 33515 [details])
&gt; What are the ownership semantics of this call?
&gt;          gtk_selection_data_set(selection_data, selection_data-&gt;target, 8,
&gt;  1107                                reinterpret_cast&lt;const
&gt; guchar*&gt;(clipboard-&gt;text().utf8().data()),
&gt;  1108                                clipboard-&gt;text().length());
&gt; 
&gt; I assume the clipboard makes a copy of whatever string we send to it?

In latest patch, DragClipboard is not used anymore, so I don&apos;t believe this is still relevant ...?

&gt; Seems we could put all the string acquisition logic in the switch and follow
&gt; the switch with a single gtk_selection_data_set call.
&gt; 

Different kind of approach is now used, so I believe this is now out of the question.

&gt; Also, seems a bit odd to use a switch if you&apos;re returning out of each
&gt; condition.

Now break is used in switch statements.

&gt; Why use forcusedFrame instead of the passed in Frame?

Fixed that. Besides passed-in frame, linkDrag boolean is now also used for setting drag actions of a link drag.

&gt; What is clipboard used for in startDrag and why does the gtk code not use it?

The code simply doesn&apos;t need to use it at this moment.

&gt; Need more information in the ChangeLog about why we&apos;re deviating from the
&gt; expected Platform interface by ignoring the parameters in the startDrag call.

Enhanced that a bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140043</commentid>
    <comment_count>41</comment_count>
      <attachid>34658</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-08-13 14:38:21 -0700</bug_when>
    <thetext>Comment on attachment 34658
Second patch

Looks good to me. I think using separate clipboards is a good idea, indeed =). I&apos;ll leave commit-queue as ? because we want to commit this at the same time as the other patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140044</commentid>
    <comment_count>42</comment_count>
      <attachid>34659</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-08-13 14:38:33 -0700</bug_when>
    <thetext>Comment on attachment 34659
Third patch

&gt; +        gchar* data;
&gt; +        switch (contents_request-&gt;info) {
&gt; +        case WEBKIT_WEB_VIEW_TARGET_INFO_URI_LIST:
&gt; +            data = g_strdup_printf(&quot;%s\r\n%s\r\n&quot;, contents_request-&gt;url, url_label);
&gt; +        case WEBKIT_WEB_VIEW_TARGET_INFO_NETSCAPE_URL:
&gt; +            data = g_strdup_printf(&quot;%s\n%s&quot;, contents_request-&gt;url, url_label);
&gt; +        }
&gt; +

You are missing the breaks. Or at least one. =)

&gt; +    switch (contents_request-&gt;info) {
&gt; +    case WEBKIT_WEB_VIEW_TARGET_INFO_HTML:
&gt; +    case WEBKIT_WEB_VIEW_TARGET_INFO_TEXT:
&gt; +        {

I don&apos;t think we want a { here. I don&apos;t see a need to limit the scope, so I am not sure why you chose to do it.

I will say r=me, but we need these fixed before we commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140056</commentid>
    <comment_count>43</comment_count>
      <attachid>34658</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-13 14:50:42 -0700</bug_when>
    <thetext>Comment on attachment 34658
Second patch

cq- since this patch has to be committed with certain timing and the queue is not smart enough to do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140064</commentid>
    <comment_count>44</comment_count>
      <attachid>34795</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2009-08-13 15:06:11 -0700</bug_when>
    <thetext>Created attachment 34795
Third patch

Adds missing breaks.

As discussed on IRC, brackets in switch statements are used because of new declarations.
While declarations could be set before the whole switch structure, I don&apos;t believe that would be transparent enough.

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140065</commentid>
    <comment_count>45</comment_count>
      <attachid>34795</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-08-13 15:09:53 -0700</bug_when>
    <thetext>Comment on attachment 34795
Third patch

ok!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140066</commentid>
    <comment_count>46</comment_count>
      <attachid>34658</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-08-13 15:10:14 -0700</bug_when>
    <thetext>Comment on attachment 34658
Second patch

updating given that the other patch is ready for committing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140067</commentid>
    <comment_count>47</comment_count>
      <attachid>34659</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-08-13 15:10:52 -0700</bug_when>
    <thetext>Comment on attachment 34659
Third patch

clearing flags, patch is obsolete</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140073</commentid>
    <comment_count>48</comment_count>
      <attachid>34658</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-13 15:31:31 -0700</bug_when>
    <thetext>Comment on attachment 34658
Second patch

Clearing flags on attachment: 34658

Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebCore/ChangeLog
	M	WebCore/platform/gtk/ClipboardGtk.cpp
	M	WebCore/platform/gtk/ClipboardGtk.h
Committed r47241
	M	WebKit/win/WebDatabaseManager.cpp
	M	WebKit/win/Interfaces/IWebDatabaseManager.idl
	M	WebKit/win/WebDatabaseManager.h
	M	LayoutTests/platform/win/Skipped
	M	LayoutTests/fast/css/text-overflow-ellipsis-bidi.html
	M	LayoutTests/fast/css/text-overflow-ellipsis.html
	M	LayoutTests/fast/css/text-overflow-ellipsis-strict.html
	M	WebKitTools/DumpRenderTree/win/LayoutTestControllerWin.cpp
	M	WebKitTools/DumpRenderTree/win/UIDelegate.cpp
r47240 = edda196b6c694ce20cf8022d2db4500bf3a699f3 (trunk)
	M	WebCore/ChangeLog
	M	WebCore/platform/gtk/ClipboardGtk.cpp
	M	WebCore/platform/gtk/ClipboardGtk.h
r47241 = 26f1f11e66ef6503a8f08947b3c4504df19f29a0 (trunk)
First, rewinding head to replay your work on top of it...
Nothing to do.
http://trac.webkit.org/changeset/47241</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140074</commentid>
    <comment_count>49</comment_count>
      <attachid>34795</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-13 15:38:18 -0700</bug_when>
    <thetext>Comment on attachment 34795
Third patch

Clearing flags on attachment: 34795

Committing to http://svn.webkit.org/repository/webkit/trunk ...
	M	WebKit/gtk/ChangeLog
	M	WebKit/gtk/WebCoreSupport/DragClientGtk.cpp
	M	WebKit/gtk/WebCoreSupport/DragClientGtk.h
	M	WebKit/gtk/webkit/webkitwebview.cpp
	M	WebKit/gtk/webkit/webkitwebview.h
Committed r47243
	M	JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def
	M	JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def
	M	JavaScriptCore/ChangeLog
r47242 = b77f6dfdb5842fe724f9ba9e18f5fa1455d08f50 (trunk)
	M	WebKit/gtk/WebCoreSupport/DragClientGtk.cpp
	M	WebKit/gtk/WebCoreSupport/DragClientGtk.h
	M	WebKit/gtk/webkit/webkitwebview.h
	M	WebKit/gtk/webkit/webkitwebview.cpp
	M	WebKit/gtk/ChangeLog
r47243 = 905cfb9100c6fe22aa3f2d7ba6833604ee93895a (trunk)
First, rewinding head to replay your work on top of it...
Nothing to do.
http://trac.webkit.org/changeset/47243</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>140075</commentid>
    <comment_count>50</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-08-13 15:38:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150397</commentid>
    <comment_count>51</comment_count>
      <attachid>40202</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2009-09-27 10:52:14 -0700</bug_when>
    <thetext>Created attachment 40202
Manual test for drag source actions

Add the manual test that avoided being diffed when creating the second, WebCore patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150735</commentid>
    <comment_count>52</comment_count>
      <attachid>40202</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-28 17:12:57 -0700</bug_when>
    <thetext>Comment on attachment 40202
Manual test for drag source actions

Please create a new bug for new patches.  This is plenty big already (and besides, it&apos;s closed). :)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27180</attachid>
            <date>2009-01-30 06:50:37 -0800</date>
            <delta_ts>2009-02-28 12:51:10 -0800</delta_ts>
            <desc>The &apos;drag&apos; implementation</desc>
            <filename>final.diff</filename>
            <type>text/plain</type>
            <size>26186</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YWU1ZjUxYi4uZDIyZDVhOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NSBAQAorMjAwOS0wMS0yOSAgWmFuIERvYmVyc2Vr
ICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzY0MgorCisgICAgICAgIEltcGxlbWVudCBjbGlwYm9hcmQgZnVuY3Rpb25zIHJlbGF0ZWQg
dG8gZHJhZyBhbmQgZHJvcAorICAgICAgICBmdW5jdGlvbmFsaXR5IGFuZCBkcmFnIGltYWdlIG1h
bmlwdWxhdGlvbiBmdW5jdGlvbnMuCisgICAgICAgIEEgJ2RyYWcgY2xpcGJvYXJkJyBpcyBpbXBs
ZW1lbnRlZCBiZWNhdXNlIG9mIHRoZSBsYWNrIG9mIGEgcHJvcGVyIGRhdGEKKyAgICAgICAgY29u
dGFpbmVyIGluIHRoZSBHdGsgdG9vbGtpdC4KKworICAgICAgICBBbHNvIGZpeGVzOiBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU2NTQKKyAgICAgICAgQWRkIHN1cHBv
cnQgZm9yIGNvbnZlcnRpbmcgZnJvbSBDYWlybydzIHN1cmZhY2UgdG8gR3RrJ3MgcGl4YnVmLgor
CisgICAgICAgIE5vIHRlc3QgY2FzZXMgbmVlZGVkLgorCisgICAgICAgICogR05VbWFrZWZpbGUu
YW06CisgICAgICAgICogcGxhdGZvcm0vRHJhZ0ltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvQml0bWFwSW1hZ2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZS5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2U6OmdldEdka1BpeGJ1Zik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlR3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJp
dG1hcEltYWdlOjpnZXRHZGtQaXhidWYpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9DbGlwYm9h
cmRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkR3RrOjpDbGlwYm9hcmRHdGsp
OgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkR3RrOjp+Q2xpcGJvYXJkR3RrKToKKyAgICAg
ICAgKFdlYkNvcmU6OmdldENhY2hlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2Fy
ZEd0azo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBi
b2FyZEd0azo6d3JpdGVVUkwpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkR3RrOjp3cml0
ZVJhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3RrL0RyYWdDbGlwYm9hcmQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdDbGlwYm9hcmQ6OkRyYWdDbGlwYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6RHJh
Z0NsaXBib2FyZDo6Y2xpcGJvYXJkKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDbGlwYm9hcmQ6
OnJlc2V0Q2xpcGJvYXJkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvRHJhZ0NsaXBib2FyZC5o
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDbGlwYm9hcmQ6OnNldFRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhZ0NsaXBib2FyZDo6c2V0SHRtbCk6CisgICAgICAgIChXZWJDb3Jl
OjpEcmFnQ2xpcGJvYXJkOjpzZXRJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ2xpcGJv
YXJkOjpzZXRVcmwpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NsaXBib2FyZDo6c2V0VXJsTGFi
ZWwpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NsaXBib2FyZDo6dGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpEcmFnQ2xpcGJvYXJkOjpodG1sKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDbGlw
Ym9hcmQ6OmltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDbGlwYm9hcmQ6OnVybCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEcmFnQ2xpcGJvYXJkOjp1cmxMYWJlbCk6CisgICAgICAgICogcGxh
dGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkcmFnSW1hZ2VT
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OmRlbGV0ZURyYWdJbWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpzY2FsZURyYWdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VG
cm9tSW1hZ2UpOgorCiAyMDA5LTAxLTI5ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5j
b20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCmRpZmYgLS1naXQgYS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCA2ZTgyM2My
Li4wZmRjNGU0IDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNv
cmUvR05VbWFrZWZpbGUuYW0KQEAgLTE3MjgsNiArMTcyOCw4IEBAIHdlYmNvcmVndGtfc291cmNl
cyArPSBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ29udGV4dE1lbnVJdGVtR3RrLmNwcCBcCiAJ
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ3Vyc29yR3RrLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvQ3Vyc29yR3RrLmggXAorCVdlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdDbGlwYm9hcmQuY3Bw
IFwKKwlXZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnQ2xpcGJvYXJkLmggXAogCVdlYkNvcmUvcGxh
dGZvcm0vZ3RrL0RyYWdEYXRhR3RrLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0lt
YWdlR3RrLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRXZlbnRMb29wR3RrLmNwcCBcCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oIGIvV2ViQ29yZS9wbGF0Zm9y
bS9EcmFnSW1hZ2UuaAppbmRleCA3NDRlNDUwLi5hOTAzOWRiIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL0RyYWdJbWFnZS5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmgK
QEAgLTQ2LDYgKzQ2LDggQEAgdHlwZWRlZiBzdHJ1Y3QgSEJJVE1BUF9fKiBIQklUTUFQOwogY2xh
c3Mgd3hEcmFnSW1hZ2U7CiAjZWxpZiBQTEFURk9STShDSFJPTUlVTSkKICNpbmNsdWRlICJEcmFn
SW1hZ2VSZWYuaCIKKyNlbGlmIFBMQVRGT1JNKEdUSykKK3R5cGVkZWYgc3RydWN0IF9HZGtQaXhi
dWYgR2RrUGl4YnVmOwogI2VuZGlmCiAKIC8vV2UgbmVlZCB0byAjZGVmaW5lIFlPZmZzZXQgYXMg
aXQgbmVlZHMgdG8gYmUgc2hhcmVkIHdpdGggV2ViS2l0CkBAIC02OSw3ICs3MSw3IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICNlbGlmIFBMQVRGT1JNKFdYKQogICAgIHR5cGVkZWYgd3hEcmFnSW1h
Z2UqIERyYWdJbWFnZVJlZjsKICNlbGlmIFBMQVRGT1JNKEdUSykKLSAgICB0eXBlZGVmIHZvaWQq
IERyYWdJbWFnZVJlZjsKKyAgICB0eXBlZGVmIEdka1BpeGJ1ZiogRHJhZ0ltYWdlUmVmOwogI2Vu
ZGlmCiAgICAgCiAgICAgSW50U2l6ZSBkcmFnSW1hZ2VTaXplKERyYWdJbWFnZVJlZik7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmggYi9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdlLmgKaW5kZXggMzhmNTU3NS4uOTFmNTEyMyAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9CaXRtYXBJbWFnZS5oCisrKyBi
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQml0bWFwSW1hZ2UuaApAQCAtMTQwLDYgKzE0MCwx
MCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGdldEhCSVRNQVBPZlNpemUoSEJJVE1BUCwg
TFBTSVpFKTsKICNlbmRpZgogCisjaWYgUExBVEZPUk0oR1RLKQorICAgIHZpcnR1YWwgR2RrUGl4
YnVmKiBnZXRHZGtQaXhidWYoKTsKKyNlbmRpZgorCiAgICAgdmlydHVhbCBOYXRpdmVJbWFnZVB0
ciBuYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpIHsgcmV0dXJuIGZyYW1lQXRJbmRleChjdXJy
ZW50RnJhbWUoKSk7IH0KIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZS5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFnZS5oCmlu
ZGV4IGRkZDBhZjQuLjhiNmFmNWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvSW1hZ2UuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlLmgKQEAgLTYx
LDYgKzYxLDEwIEBAIGNsYXNzIE5hdGl2ZUltYWdlU2tpYTsKICNpbmNsdWRlIDxRUGl4bWFwPgog
I2VuZGlmCiAKKyNpZiBQTEFURk9STShHVEspCit0eXBlZGVmIHN0cnVjdCBfR2RrUGl4YnVmIEdk
a1BpeGJ1ZjsKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFRyYW5zZm9y
bWF0aW9uTWF0cml4OwpAQCAtMTQyLDYgKzE0NiwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIGdldEhCSVRNQVBPZlNpemUoSEJJVE1BUCwgTFBTSVpFKSB7IHJldHVybiBmYWxzZTsgfQog
I2VuZGlmCiAKKyNpZiBQTEFURk9STShHVEspCisgICAgdmlydHVhbCBHZGtQaXhidWYqIGdldEdk
a1BpeGJ1ZigpIHsgcmV0dXJuIDA7IH0KKyNlbmRpZgorCiBwcm90ZWN0ZWQ6CiAgICAgSW1hZ2Uo
SW1hZ2VPYnNlcnZlciogPSAwKTsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9ndGsvSW1hZ2VHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ndGsvSW1h
Z2VHdGsuY3BwCmluZGV4IGI3NDUyMDkuLjFjYTE2ODMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3RrL0ltYWdlR3RrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2d0ay9JbWFnZUd0ay5jcHAKQEAgLTI3LDYgKzI3LDkgQEAKIAogI2luY2x1ZGUgIkJp
dG1hcEltYWdlLmgiCiAKKyNpbmNsdWRlIDxjYWlyby5oPgorI2luY2x1ZGUgPGd0ay9ndGsuaD4K
KwogLy8gVGhpcyBmdW5jdGlvbiBsb2FkcyByZXNvdXJjZXMgZnJvbSBXZWJLaXQKIFZlY3Rvcjxj
aGFyPiBsb2FkUmVzb3VyY2VJbnRvQXJyYXkoY29uc3QgY2hhciopOwogCkBAIC00OSw0ICs1Miwy
MSBAQCBQYXNzUmVmUHRyPEltYWdlPiBJbWFnZTo6bG9hZFBsYXRmb3JtUmVzb3VyY2UoY29uc3Qg
Y2hhciAqbmFtZSkKICAgICByZXR1cm4gaW1nLnJlbGVhc2UoKTsKIH0KIAorR2RrUGl4YnVmKiBC
aXRtYXBJbWFnZTo6Z2V0R2RrUGl4YnVmKCkKK3sKKyAgICBnaW50IHdpZHRoID0gY2Fpcm9faW1h
Z2Vfc3VyZmFjZV9nZXRfd2lkdGgoZnJhbWVBdEluZGV4KGN1cnJlbnRGcmFtZSgpKSk7CisgICAg
Z2ludCBoZWlnaHQgPSBjYWlyb19pbWFnZV9zdXJmYWNlX2dldF9oZWlnaHQoZnJhbWVBdEluZGV4
KGN1cnJlbnRGcmFtZSgpKSk7CisKKyAgICBHZGtQaXhtYXAqIHBpeG1hcCA9IGdka19waXhtYXBf
bmV3KE5VTEwsIHdpZHRoLCBoZWlnaHQsIDI0KTsKKyAgICBjYWlyb190KiBjciA9IGdka19jYWly
b19jcmVhdGUoR0RLX0RSQVdBQkxFKHBpeG1hcCkpOworICAgIGNhaXJvX3NldF9zb3VyY2Vfc3Vy
ZmFjZShjciwgZnJhbWVBdEluZGV4KGN1cnJlbnRGcmFtZSgpKSwgMCwgMCk7CisgICAgY2Fpcm9f
cGFpbnQoY3IpOworICAgIGNhaXJvX2Rlc3Ryb3koY3IpOworCisgICAgR2RrUGl4YnVmKiBwaXhi
dWYgPSBnZGtfcGl4YnVmX2dldF9mcm9tX2RyYXdhYmxlKE5VTEwsIEdES19EUkFXQUJMRShwaXht
YXApLCBOVUxMLCAwLCAwLCAwLCAwLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBnX29iamVjdF91bnJl
ZihwaXhtYXApOworCisgICAgcmV0dXJuIHBpeGJ1ZjsKK30KKwogfQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0NsaXBib2FyZEd0ay5jcHAKaW5kZXggNDRhYTdmNy4uZjA0MzRiZCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9DbGlwYm9hcmRHdGsuY3BwCkBAIC0xLDQgKzEsNiBAQAogLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwOSBaYW4gRG9iZXJzZWsgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KKyAqCiAgKiAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMKICAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uOyBlaXRoZXIKQEAgLTE3LDExICsxOSwxNiBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIkNsaXBib2FyZEd0ay5oIgogCisjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIK
KyNpbmNsdWRlICJEcmFnQ2xpcGJvYXJkLmgiCisjaW5jbHVkZSAiRWRpdG9yLmgiCisjaW5jbHVk
ZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAibWFya3VwLmgiCiAj
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgogI2lu
Y2x1ZGUgIlN0cmluZ0hhc2guaCIKIAotI2luY2x1ZGUgIkVkaXRvci5oIgotCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBFZGl0b3I6Om5ld0dlbmVyYWxDbGlw
Ym9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSkKQEAgLTMxLDEzICszOCwxMiBAQCBQ
YXNzUmVmUHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2Fy
ZEFjY2Vzc1BvbGljeSBwb2xpY3kpCiAKIENsaXBib2FyZEd0azo6Q2xpcGJvYXJkR3RrKENsaXBi
b2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIGJvb2wgZm9yRHJhZ2dpbmcpCiAgICAgOiBDbGlwYm9h
cmQocG9saWN5LCBmb3JEcmFnZ2luZykKKyAgICAsIG1fZHJhZ0NsaXBib2FyZChmb3JEcmFnZ2lu
ZyA/IERyYWdDbGlwYm9hcmQ6OmNsaXBib2FyZCgpIDogMCkKIHsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwogfQogCiBDbGlwYm9hcmRHdGs6On5DbGlwYm9hcmRHdGsoKQogewotICAgIG5vdEltcGxl
bWVudGVkKCk7CiB9CiAKIHZvaWQgQ2xpcGJvYXJkR3RrOjpjbGVhckRhdGEoY29uc3QgU3RyaW5n
JikKQEAgLTEwMywxOSArMTA5LDU2IEBAIERyYWdJbWFnZVJlZiBDbGlwYm9hcmRHdGs6OmNyZWF0
ZURyYWdJbWFnZShJbnRQb2ludCYpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgQ2xp
cGJvYXJkR3RrOjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoRWxlbWVudCosIGNvbnN0IEtVUkwm
LCBjb25zdCBTdHJpbmcmLCBGcmFtZSopCitzdGF0aWMgQ2FjaGVkSW1hZ2UqIGdldENhY2hlZElt
YWdlKEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAvLyBB
dHRlbXB0IHRvIHB1bGwgQ2FjaGVkSW1hZ2UgZnJvbSBlbGVtZW50CisgICAgQVNTRVJUKGVsZW1l
bnQpOworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBlbGVtZW50LT5yZW5kZXJlcigpOwor
ICAgIGlmICghcmVuZGVyZXIgfHwgIXJlbmRlcmVyLT5pc0ltYWdlKCkpCisgICAgICAgIHJldHVy
biAwOworCisgICAgUmVuZGVySW1hZ2UqIGltYWdlID0gc3RhdGljX2Nhc3Q8UmVuZGVySW1hZ2Uq
PihyZW5kZXJlcik7CisgICAgaWYgKGltYWdlLT5jYWNoZWRJbWFnZSgpICYmICFpbWFnZS0+Y2Fj
aGVkSW1hZ2UoKS0+ZXJyb3JPY2N1cnJlZCgpKQorICAgICAgICByZXR1cm4gaW1hZ2UtPmNhY2hl
ZEltYWdlKCk7CisKKyAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBDbGlwYm9hcmRHdGs6OndyaXRl
VVJMKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmLCBGcmFtZSopCit2b2lkIENsaXBib2FyZEd0
azo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEtVUkwm
IHVybCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgRnJhbWUqKQogewotICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgaWYgKCFtX2RyYWdDbGlwYm9hcmQpCisgICAgICAgIHJldHVybjsKKworICAgIENh
Y2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGdldENhY2hlZEltYWdlKGVsZW1lbnQpOworICAgIGlm
ICghY2FjaGVkSW1hZ2UgfHwgIWNhY2hlZEltYWdlLT5pbWFnZSgpIHx8ICFjYWNoZWRJbWFnZS0+
aXNMb2FkZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIEdka1BpeGJ1ZiogcGl4YnVmID0gY2Fj
aGVkSW1hZ2UtPmltYWdlKCktPmdldEdka1BpeGJ1ZigpOworICAgIGlmIChwaXhidWYpCisgICAg
ICAgIG1fZHJhZ0NsaXBib2FyZC0+c2V0SW1hZ2UocGl4YnVmKTs7CisKKyAgICBtX2RyYWdDbGlw
Ym9hcmQtPnNldFRleHQodXJsLnN0cmluZygpKTsKKyAgICBtX2RyYWdDbGlwYm9hcmQtPnNldFVy
bCh1cmwuc3RyaW5nKCkpOworICAgIG1fZHJhZ0NsaXBib2FyZC0+c2V0VXJsTGFiZWwobGFiZWwp
OwogfQogCi12b2lkIENsaXBib2FyZEd0azo6d3JpdGVSYW5nZShSYW5nZSosIEZyYW1lKikKK3Zv
aWQgQ2xpcGJvYXJkR3RrOjp3cml0ZVVSTChjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYg
bGFiZWwsIEZyYW1lKikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmICghbV9kcmFn
Q2xpcGJvYXJkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RyYWdDbGlwYm9hcmQtPnNldFRl
eHQodXJsLnN0cmluZygpKTsKKyAgICBtX2RyYWdDbGlwYm9hcmQtPnNldFVybCh1cmwuc3RyaW5n
KCkpOworICAgIG1fZHJhZ0NsaXBib2FyZC0+c2V0VXJsTGFiZWwobGFiZWwpOworfQorCit2b2lk
IENsaXBib2FyZEd0azo6d3JpdGVSYW5nZShSYW5nZSogcmFuZ2UsIEZyYW1lKiBmcmFtZSkKK3sK
KyAgICBpZiAoIW1fZHJhZ0NsaXBib2FyZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgU3RyaW5n
IHRleHQgPSBmcmFtZS0+c2VsZWN0ZWRUZXh0KCk7CisgICAgbV9kcmFnQ2xpcGJvYXJkLT5zZXRU
ZXh0KHRleHQpOworICAgIG1fZHJhZ0NsaXBib2FyZC0+c2V0SHRtbChjcmVhdGVNYXJrdXAocmFu
Z2UsIDAsIEFubm90YXRlRm9ySW50ZXJjaGFuZ2UpKTsKIH0KIAogYm9vbCBDbGlwYm9hcmRHdGs6
Omhhc0RhdGEoKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3Rr
LmggYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuaAppbmRleCBiOGI0ZGRmLi40
ZTdlZjM4IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuaAor
KysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuaApAQCAtMjQsMTMgKzI0LDE0
IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgQ2xpcGJvYXJkR2RrX2gKLSNkZWZp
bmUgQ2xpcGJvYXJkR2RrX2gKKyNpZm5kZWYgQ2xpcGJvYXJkR3RrX2gKKyNkZWZpbmUgQ2xpcGJv
YXJkR3RrX2gKIAogI2luY2x1ZGUgIkNsaXBib2FyZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAgICAgY2xhc3MgQ2FjaGVkSW1hZ2U7CisgICAgY2xhc3MgRHJhZ0NsaXBib2FyZDsKIAogICAg
IC8vIFN0YXRlIGF2YWlsYWJsZSBkdXJpbmcgSUUncyBldmVudHMgZm9yIGRyYWcgYW5kIGRyb3Ag
YW5kIGNvcHkvcGFzdGUKICAgICAvLyBDcmVhdGVkIGZyb20gdGhlIEV2ZW50SGFuZGxlckd0ayB0
byBiZSB1c2VkIGJ5IHRoZSBkb20KQEAgLTYzLDYgKzY0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiAgICAgcHJpdmF0ZToKICAgICAgICAgQ2xpcGJvYXJkR3RrKENsaXBib2FyZEFjY2Vzc1Bv
bGljeSwgYm9vbCk7CisKKyAgICAgICAgRHJhZ0NsaXBib2FyZCogbV9kcmFnQ2xpcGJvYXJkOwog
ICAgIH07CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdDbGlwYm9h
cmQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0NsaXBib2FyZC5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTdiMTFlOAotLS0gL2Rldi9udWxsCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdDbGlwYm9hcmQuY3BwCkBAIC0wLDAgKzEsNTUgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgWmFuIERvYmVyc2VrIDx6YW5kb2JlcnNla0BnbWFpbC5j
b20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRHJhZ0NsaXBib2FyZC5oIgor
CisjaW5jbHVkZSAiRHJhZ0ltYWdlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRHJhZ0Ns
aXBib2FyZDo6RHJhZ0NsaXBib2FyZCgpCisgICAgOiBtX2ltYWdlKDApCit7Cit9CisKK0RyYWdD
bGlwYm9hcmQqIERyYWdDbGlwYm9hcmQ6OmNsaXBib2FyZCgpCit7CisgICAgc3RhdGljIERyYWdD
bGlwYm9hcmQqIGNsaXBib2FyZCA9IDA7CisKKyAgICBpZiAoIWNsaXBib2FyZCkKKyAgICAgICAg
Y2xpcGJvYXJkID0gbmV3IERyYWdDbGlwYm9hcmQ7CisKKyAgICByZXR1cm4gY2xpcGJvYXJkOwor
fQorCit2b2lkIERyYWdDbGlwYm9hcmQ6OnJlc2V0Q2xpcGJvYXJkKCkKK3sKKyAgICBpZiAoaW1h
Z2UoKSkKKyAgICAgICAgZGVsZXRlRHJhZ0ltYWdlKGltYWdlKCkpOworICAgIHNldEltYWdlKE5V
TEwpOworCisgICAgc2V0SHRtbChTdHJpbmcoKSk7CisgICAgc2V0VGV4dChTdHJpbmcoKSk7Cisg
ICAgc2V0VXJsKFN0cmluZygpKTsKKyAgICBzZXRVcmxMYWJlbChTdHJpbmcoKSk7Cit9CisKK30K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdDbGlwYm9hcmQuaCBiL1dlYkNv
cmUvcGxhdGZvcm0vZ3RrL0RyYWdDbGlwYm9hcmQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5hMzIzZWE4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvRHJhZ0NsaXBib2FyZC5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgWmFuIERvYmVyc2VrIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisgKgorICogVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgor
ICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBv
cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQg
QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
c2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUg
U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIERy
YWdDbGlwYm9hcmRfaAorI2RlZmluZSBEcmFnQ2xpcGJvYXJkX2gKKworI2luY2x1ZGUgIkRyYWdJ
bWFnZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisKK3R5cGVkZWYgc3RydWN0IF9H
dGtTZWxlY3Rpb25EYXRhIEd0a1NlbGVjdGlvbkRhdGE7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIFN0cmluZzsKKworY2xhc3MgRHJhZ0NsaXBib2FyZCB7CitwdWJsaWM6CisgICAgRHJh
Z0NsaXBib2FyZCgpOworCisgICAgc3RhdGljIERyYWdDbGlwYm9hcmQqIGNsaXBib2FyZCgpOwor
CisgICAgdm9pZCBzZXRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkgeyBtX3RleHQgPSB0ZXh0OyB9
CisgICAgdm9pZCBzZXRIdG1sKGNvbnN0IFN0cmluZyYgaHRtbCkgeyBtX2h0bWwgPSBodG1sOyB9
CisgICAgdm9pZCBzZXRJbWFnZShEcmFnSW1hZ2VSZWYgaW1hZ2UpIHsgbV9pbWFnZSA9IGltYWdl
OyB9CisgICAgdm9pZCBzZXRVcmwoY29uc3QgU3RyaW5nJiB1cmwpIHsgbV91cmwgPSB1cmw7IH0K
KyAgICB2b2lkIHNldFVybExhYmVsKGNvbnN0IFN0cmluZyYgdXJsTGFiZWwpIHsgbV91cmxMYWJl
bCA9IHVybExhYmVsOyB9CisKKyAgICBTdHJpbmcgdGV4dCgpIHsgcmV0dXJuIG1fdGV4dDsgfQor
ICAgIFN0cmluZyBodG1sKCkgeyByZXR1cm4gbV9odG1sOyB9CisgICAgRHJhZ0ltYWdlUmVmIGlt
YWdlKCkgeyByZXR1cm4gbV9pbWFnZTsgfQorICAgIFN0cmluZyB1cmwoKSB7IHJldHVybiBtX3Vy
bDsgfQorICAgIFN0cmluZyB1cmxMYWJlbCgpIHsgcmV0dXJuIG1fdXJsTGFiZWw7IH0KKworICAg
IHZvaWQgcmVzZXRDbGlwYm9hcmQoKTsKKworcHJpdmF0ZToKKyAgICBTdHJpbmcgbV90ZXh0Owor
ICAgIFN0cmluZyBtX2h0bWw7CisgICAgRHJhZ0ltYWdlUmVmIG1faW1hZ2U7CisgICAgU3RyaW5n
IG1fdXJsOworICAgIFN0cmluZyBtX3VybExhYmVsOworfTsKKworfQorCisjZW5kaWYgLy8gRHJh
Z0NsaXBib2FyZF9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnSW1hZ2VH
dGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcAppbmRleCA0ZGRh
ZTNhLi4zZjBhYTI5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnSW1hZ2VH
dGsuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAKQEAgLTE5
LDIxICsxOSwzNiBAQAogCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFn
ZS5oIgorI2luY2x1ZGUgPGd0ay9ndGsuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JbnRT
aXplIGRyYWdJbWFnZVNpemUoRHJhZ0ltYWdlUmVmKQorSW50U2l6ZSBkcmFnSW1hZ2VTaXplKERy
YWdJbWFnZVJlZiBpbWFnZSkKIHsKKyAgICBpZiAoaW1hZ2UpCisgICAgICAgIHJldHVybiBJbnRT
aXplKGdka19waXhidWZfZ2V0X3dpZHRoKGltYWdlKSwgZ2RrX3BpeGJ1Zl9nZXRfaGVpZ2h0KGlt
YWdlKSk7CisKICAgICByZXR1cm4gSW50U2l6ZSgwLCAwKTsKIH0KIAotdm9pZCBkZWxldGVEcmFn
SW1hZ2UoRHJhZ0ltYWdlUmVmKQordm9pZCBkZWxldGVEcmFnSW1hZ2UoRHJhZ0ltYWdlUmVmIGlt
YWdlKQogeworICAgIGdfb2JqZWN0X3VucmVmKGltYWdlKTsKIH0KIAotRHJhZ0ltYWdlUmVmIHNj
YWxlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZiBpbWFnZSwgRmxvYXRTaXplKQorRHJhZ0ltYWdlUmVm
IHNjYWxlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZiBpbWFnZSwgRmxvYXRTaXplIHNjYWxlKQogewot
ICAgIHJldHVybiBpbWFnZTsKKyAgICBpZiAoaW1hZ2UpIHsKKyAgICAgICAgSW50U2l6ZSBpbWFn
ZVNpemUgPSBkcmFnSW1hZ2VTaXplKGltYWdlKTsKKyAgICAgICAgR2RrUGl4YnVmKiBzY2FsZWRJ
bWFnZSA9ICBnZGtfcGl4YnVmX3NjYWxlX3NpbXBsZShpbWFnZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlU2l6ZS53aWR0aCgpICogc2NhbGUu
d2lkdGgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGltYWdlU2l6ZS5oZWlnaHQoKSAqIHNjYWxlLmhlaWdodCgpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RLX0lOVEVSUF9ORUFSRVNUKTsKKyAgICAg
ICAgZGVsZXRlRHJhZ0ltYWdlKGltYWdlKTsKKyAgICAgICAgcmV0dXJuIHNjYWxlZEltYWdlOwor
ICAgIH0KKworICAgIHJldHVybiAwOwogfQogCiBEcmFnSW1hZ2VSZWYgZGlzc29sdmVEcmFnSW1h
Z2VUb0ZyYWN0aW9uKERyYWdJbWFnZVJlZiBpbWFnZSwgZmxvYXQpCkBAIC00MSw5ICs1Niw5IEBA
IERyYWdJbWFnZVJlZiBkaXNzb2x2ZURyYWdJbWFnZVRvRnJhY3Rpb24oRHJhZ0ltYWdlUmVmIGlt
YWdlLCBmbG9hdCkKICAgICByZXR1cm4gaW1hZ2U7CiB9CiAKLURyYWdJbWFnZVJlZiBjcmVhdGVE
cmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqKQorRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZy
b21JbWFnZShJbWFnZSogaW1hZ2UpCiB7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGltYWdl
LT5nZXRHZGtQaXhidWYoKTsKIH0KIAogRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUljb25G
b3JDYWNoZWRJbWFnZShDYWNoZWRJbWFnZSopCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IGMyMDVjZGQuLmE4NjVmMjYgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjAgQEAKKzIwMDktMDEtMjkgIFphbiBEb2JlcnNlayAgPHphbmRvYmVyc2VrQGdt
YWlsLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NDIKKyAgICAgICAg
UGFydGlhbGx5IGltcGxlbWVudCB0aGUgZHJhZyBjbGllbnQgYW5kIHRoZSBoYW5kbGluZyBvZiBk
cmFnIGRhdGEgb24KKyAgICAgICAgdGhlIEd0ayBwb3J0LgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRHJhZ0NsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYWdDbGllbnQ6OkRy
YWdDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpEcmFnQ2xpZW50Ojp3aWxsUGVyZm9ybURyYWdT
b3VyY2VBY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpEcmFnQ2xpZW50OjpzdGFydERyYWcpOgor
ICAgICAgICAoV2ViS2l0OjpEcmFnQ2xpZW50OjpjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKToKKyAg
ICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3RrLmg6CisgICAgICAgICogd2Via2l0
L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3Lmg6CisK
IDIwMDktMDEtMjcgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERhbiBCZXJuc3RlaW4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRHJhZ0NsaWVudEd0ay5jcHAgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Ry
YWdDbGllbnRHdGsuY3BwCmluZGV4IGY1NWI2ZWEuLjliZGJiMDQgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudEd0ay5jcHAKKysrIGIvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3RrLmNwcApAQCAtMTcsMjAgKzE3LDMyIEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRHJhZ0NsaWVudEd0ay5oIgogCisjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50
ZWQuaCIKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJ3ZWJraXRwcml2YXRl
LmgiCisKKyNpbmNsdWRlIDxndGsvZ3RrLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorRHJhZ0NsaWVudDo6RHJhZ0NsaWVudChXZWJLaXRXZWJW
aWV3KiB3ZWJWaWV3KQorICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCisgICAgLCBtX3N0YXJ0UG9z
KDAsIDApCit7Cit9CisKIHZvaWQgRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1EcmFnRGVzdGluYXRp
b25BY3Rpb24oRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLCBEcmFnRGF0YSopCiB7CiAgICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KIAotdm9pZCBEcmFnQ2xpZW50Ojp3aWxsUGVyZm9ybURyYWdTb3VyY2VB
Y3Rpb24oRHJhZ1NvdXJjZUFjdGlvbiwgY29uc3QgSW50UG9pbnQmLCBDbGlwYm9hcmQqKQordm9p
ZCBEcmFnQ2xpZW50Ojp3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oRHJhZ1NvdXJjZUFjdGlv
biwgY29uc3QgSW50UG9pbnQmIHN0YXJ0UG9zLCBDbGlwYm9hcmQqKQogewotICAgIG5vdEltcGxl
bWVudGVkKCk7CisgICAgbV9zdGFydFBvcyA9IHN0YXJ0UG9zOwogfQogCiBEcmFnRGVzdGluYXRp
b25BY3Rpb24gRHJhZ0NsaWVudDo6YWN0aW9uTWFza0ZvckRyYWcoRHJhZ0RhdGEqKQpAQCAtNDUs
OSArNTcsNjUgQEAgRHJhZ1NvdXJjZUFjdGlvbiBEcmFnQ2xpZW50OjpkcmFnU291cmNlQWN0aW9u
TWFza0ZvclBvaW50KGNvbnN0IEludFBvaW50JikKICAgICByZXR1cm4gRHJhZ1NvdXJjZUFjdGlv
bkFueTsKIH0KIAotdm9pZCBEcmFnQ2xpZW50OjpzdGFydERyYWcoRHJhZ0ltYWdlUmVmLCBjb25z
dCBJbnRQb2ludCYsIGNvbnN0IEludFBvaW50JiwgQ2xpcGJvYXJkKiwgRnJhbWUqLCBib29sKQor
dm9pZCBEcmFnQ2xpZW50OjpzdGFydERyYWcoRHJhZ0ltYWdlUmVmIGltYWdlLCBjb25zdCBJbnRQ
b2ludCYsIGNvbnN0IEludFBvaW50JiwgQ2xpcGJvYXJkKiwgRnJhbWUqLCBib29sKQogewotICAg
IG5vdEltcGxlbWVudGVkKCk7CisgICAgRnJhbWUqIGZvY3VzZWRGcmFtZSA9IGNvcmUod2Via2l0
X3dlYl92aWV3X2dldF9mb2N1c2VkX2ZyYW1lKG1fd2ViVmlldykpOworCisgICAgRWxlbWVudCog
dGFyZ2V0RWxlbWVudCA9IGZvY3VzZWRGcmFtZS0+ZG9jdW1lbnQoKS0+ZWxlbWVudEZyb21Qb2lu
dChtX3N0YXJ0UG9zLngoKSwgbV9zdGFydFBvcy55KCkpOworICAgIGJvb2wgaXNFbGVtZW50TGlu
ayA9IGZhbHNlOworICAgIGJvb2wgaXNFbGVtZW50SW1hZ2UgPSB0YXJnZXRFbGVtZW50LT5yZW5k
ZXJlcigpLT5pc0ltYWdlKCk7CisKKyAgICBOb2RlKiB0YXJnZXROb2RlID0gc3RhdGljX2Nhc3Q8
Tm9kZSo+KHRhcmdldEVsZW1lbnQpOworICAgIGZvciAoTm9kZSogcCA9IHRhcmdldE5vZGU7IHA7
IHAgPSBwLT5wYXJlbnROb2RlKCkpIHsKKyAgICAgICAgaWYgKHAtPmlzTGluaygpKSB7CisgICAg
ICAgICAgICBpc0VsZW1lbnRMaW5rID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgfQorCisjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMiwxMCwwKQorICAgIEdka0F0b20g
dGV4dEh0bWwgPSBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygidGV4dC9odG1sIik7Cisg
ICAgR2RrQXRvbSBuZXRzY2FwZVVybCA9IGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJf
TkVUU0NBUEVfVVJMIik7CisjZWxzZQorICAgIEdka0F0b20gdGV4dEh0bWwgPSBnZGtfYXRvbV9p
bnRlcm4oInRleHQvaHRtbCIsIGZhbHNlKTsKKyAgICBHZGtBdG9tIG5ldHNjYXBlVXJsID0gZ2Rr
X2F0b21faW50ZXJuKCJfTkVUU0NBUEVfVVJMIiwgZmFsc2UpOworI2VuZGlmCisKKyAgICBHdGtU
YXJnZXRMaXN0KiB0YXJnZXRMaXN0ID0gZ3RrX3RhcmdldF9saXN0X25ldyhOVUxMLCAwKTsKKyAg
ICBndGtfdGFyZ2V0X2xpc3RfYWRkKHRhcmdldExpc3QsIHRleHRIdG1sLCAwLCBXRUJLSVRfV0VC
X1ZJRVdfVEFSR0VUX0lORk9fSFRNTCk7CisgICAgZ3RrX3RhcmdldF9saXN0X2FkZF90ZXh0X3Rh
cmdldHModGFyZ2V0TGlzdCwgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX1RFWFQpOworCisg
ICAgR2RrRHJhZ0FjdGlvbiBkcmFnQWN0aW9uID0gR0RLX0FDVElPTl9DT1BZOworCisgICAgaWYg
KGlzRWxlbWVudExpbmspIHsKKyAgICAgICAgZHJhZ0FjdGlvbiA9IEdES19BQ1RJT05fTElOSzsK
KyAgICAgICAgZ3RrX3RhcmdldF9saXN0X2FkZCh0YXJnZXRMaXN0LCBuZXRzY2FwZVVybCwgMCwg
V0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX05FVFNDQVBFX1VSTCk7CisgICAgICAgIGd0a190
YXJnZXRfbGlzdF9hZGRfdXJpX3RhcmdldHModGFyZ2V0TGlzdCwgV0VCS0lUX1dFQl9WSUVXX1RB
UkdFVF9JTkZPX1VSSV9MSVNUKTsKKyAgICAgICAgaWYgKGlzRWxlbWVudEltYWdlKSB7CisgICAg
ICAgICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkX2ltYWdlX3RhcmdldHModGFyZ2V0TGlzdCwgV0VC
S0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX0lNQUdFLCBmYWxzZSk7CisgICAgICAgICAgICBkcmFn
QWN0aW9uID0gKEdka0RyYWdBY3Rpb24pKGRyYWdBY3Rpb24gfCBHREtfQUNUSU9OX0NPUFkpOwor
ICAgICAgICB9CisgICAgfSBlbHNlIGlmIChpc0VsZW1lbnRJbWFnZSkgeworICAgICAgICBndGtf
dGFyZ2V0X2xpc3RfYWRkX3VyaV90YXJnZXRzKHRhcmdldExpc3QsIFdFQktJVF9XRUJfVklFV19U
QVJHRVRfSU5GT19VUklfTElTVCk7CisgICAgICAgIGd0a190YXJnZXRfbGlzdF9hZGRfaW1hZ2Vf
dGFyZ2V0cyh0YXJnZXRMaXN0LCBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fSU1BR0UsIGZh
bHNlKTsKKyAgICB9CisKKyAgICBHZGtFdmVudCogZXZlbnQgPSBnZGtfZXZlbnRfbmV3KEdES19C
VVRUT05fUFJFU1MpOworICAgICgoR2RrRXZlbnRCdXR0b24qKWV2ZW50KS0+d2luZG93ID0gZ3Rr
X3dpZGdldF9nZXRfd2luZG93KEdUS19XSURHRVQobV93ZWJWaWV3KSk7CisgICAgKChHZGtFdmVu
dEJ1dHRvbiopZXZlbnQpLT50aW1lID0gR0RLX0NVUlJFTlRfVElNRTsKKworICAgIEdka0RyYWdD
b250ZXh0KiBjb250ZXh0ID0gZ3RrX2RyYWdfYmVnaW4oR1RLX1dJREdFVChtX3dlYlZpZXcpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRMaXN0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBkcmFnQWN0aW9uLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBl
dmVudCk7CisKKyAgICBpZiAoaW1hZ2UpCisgICAgICAgIGd0a19kcmFnX3NldF9pY29uX3BpeGJ1
Zihjb250ZXh0LCBpbWFnZSwgMCwgMCk7CisgICAgZWxzZQorICAgICAgICBndGtfZHJhZ19zZXRf
aWNvbl9kZWZhdWx0KGNvbnRleHQpOworCisgICAgZ3RrX3RhcmdldF9saXN0X3VucmVmKHRhcmdl
dExpc3QpOwogfQogCiBEcmFnSW1hZ2VSZWYgRHJhZ0NsaWVudDo6Y3JlYXRlRHJhZ0ltYWdlRm9y
TGluayhLVVJMJiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgRnJhbWUqKQpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3RrLmggYi9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0RyYWdDbGllbnRHdGsuaAppbmRleCA0MzY3YzY4Li4wMWYzNDhkIDEwMDY0NAot
LS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRHdGsuaAorKysgYi9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRHdGsuaApAQCAtMzIsOSArMzIsMTggQEAK
IAogI2luY2x1ZGUgIkRyYWdDbGllbnQuaCIKIAordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlZp
ZXcgV2ViS2l0V2ViVmlldzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIGNsYXNzIEludFBv
aW50OworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKKwogICAgIGNsYXNzIERyYWdDbGllbnQgOiBw
dWJsaWMgV2ViQ29yZTo6RHJhZ0NsaWVudCB7CiAgICAgcHVibGljOgorICAgICAgICBEcmFnQ2xp
ZW50KFdlYktpdFdlYlZpZXcqKTsKKwogICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1E
cmFnRGVzdGluYXRpb25BY3Rpb24oV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLCBXZWJD
b3JlOjpEcmFnRGF0YSopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1EcmFnU291
cmNlQWN0aW9uKFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkludFBv
aW50JiwgV2ViQ29yZTo6Q2xpcGJvYXJkKik7CiAgICAgICAgIHZpcnR1YWwgV2ViQ29yZTo6RHJh
Z0Rlc3RpbmF0aW9uQWN0aW9uIGFjdGlvbk1hc2tGb3JEcmFnKFdlYkNvcmU6OkRyYWdEYXRhKik7
CkBAIC00NSw2ICs1NCwxMSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAgdmlydHVhbCBX
ZWJDb3JlOjpEcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhXZWJDb3JlOjpLVVJM
JiwgY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBsYWJlbCwgV2ViQ29yZTo6RnJhbWUqKTsKIAogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZHJhZ0NvbnRyb2xsZXJEZXN0cm95ZWQoKTsKKworICAgIHByaXZh
dGU6CisgICAgICAgIFdlYktpdFdlYlZpZXcqIG1fd2ViVmlldzsKKworICAgICAgICBXZWJDb3Jl
OjpJbnRQb2ludCBtX3N0YXJ0UG9zOwogICAgIH07CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
dmlldy5jcHAKaW5kZXggMGVhNmVkNS4uMjFlMzUyOCAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
dmlldy5jcHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJDdXJzb3IuaCIKICNpbmNsdWRl
ICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRyYWdDbGllbnRHdGsuaCIKKyNpbmNsdWRlICJEcmFn
Q2xpcGJvYXJkLmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVkZSAiRWRpdG9yQ2xpZW50
R3RrLmgiCiAjaW5jbHVkZSAiRXZlbnRIYW5kbGVyLmgiCkBAIC05MDcsNiArOTA4LDY3IEBAIHN0
YXRpYyBBdGtPYmplY3QqIHdlYmtpdF93ZWJfdmlld19nZXRfYWNjZXNzaWJsZShHdGtXaWRnZXQq
IHdpZGdldCkKICAgICByZXR1cm4gY29yZUFjY2Vzc2libGUtPndyYXBwZXIoKTsKIH0KIAorc3Rh
dGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2RyYWdfZW5kKEd0a1dpZGdldCogd2lkZ2V0LCBHZGtE
cmFnQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBEcmFnQ2xpcGJvYXJkOjpjbGlwYm9hcmQoKS0+
cmVzZXRDbGlwYm9hcmQoKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2RyYWdf
ZGF0YV9nZXQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0RyYWdDb250ZXh0KiBjb250ZXh0LCBHdGtT
ZWxlY3Rpb25EYXRhKiBzZWxlY3Rpb25fZGF0YSwgZ3VpbnQgaW5mbywgZ3VpbnQgdGltZV8pCit7
CisgICAgRHJhZ0NsaXBib2FyZCogY2xpcGJvYXJkID0gRHJhZ0NsaXBib2FyZDo6Y2xpcGJvYXJk
KCk7CisKKyAgICBzd2l0Y2ggKGluZm8pIHsKKyAgICBjYXNlIFdFQktJVF9XRUJfVklFV19UQVJH
RVRfSU5GT19IVE1MOgorICAgICAgICB7CisgICAgICAgIGdjaGFyKiBkYXRhID0gZ19zdHJkdXAo
KGNsaXBib2FyZC0+aHRtbCgpLmlzRW1wdHkoKSB8fCBjbGlwYm9hcmQtPmh0bWwoKS5pc051bGwo
KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGNsaXBib2FyZC0+
dGV4dCgpLnV0ZjgoKS5kYXRhKCkgOiBjbGlwYm9hcmQtPmh0bWwoKS51dGY4KCkuZGF0YSgpKTsK
KyAgICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3NldChzZWxlY3Rpb25fZGF0YSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGVjdGlvbl9kYXRhLT50YXJnZXQsCisgICAgICAgICAgICAgICAg
ICAgICAgICA4LCAoZ3VjaGFyKilkYXRhLCBzdHJsZW4oZGF0YSkpOworCisgICAgICAgIGdfZnJl
ZShkYXRhKTsKKyAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgY2FzZSBXRUJLSVRfV0VC
X1ZJRVdfVEFSR0VUX0lORk9fVEVYVDoKKyAgICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3NldChz
ZWxlY3Rpb25fZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbl9kYXRhLT50
YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICA4LAorICAgICAgICAgICAgICAgICAgICAg
ICAgKGd1Y2hhciopY2xpcGJvYXJkLT50ZXh0KCkudXRmOCgpLmRhdGEoKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNsaXBib2FyZC0+dGV4dCgpLmxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJu
OworICAgIGNhc2UgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX0lNQUdFOgorICAgICAgICBn
dGtfc2VsZWN0aW9uX2RhdGFfc2V0X3BpeGJ1ZihzZWxlY3Rpb25fZGF0YSwgY2xpcGJvYXJkLT5p
bWFnZSgpKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgV0VCS0lUX1dFQl9WSUVXX1RBUkdF
VF9JTkZPX1VSSV9MSVNUOgorICAgICAgICB7CisgICAgICAgIGdjaGFyKiBkYXRhID0gZ19zdHJk
dXBfcHJpbnRmKCIlc1xyXG4lc1xyXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjbGlwYm9hcmQtPnVybCgpLnV0ZjgoKS5kYXRhKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChjbGlwYm9hcmQtPnVybExhYmVsKCkuaXNFbXB0eSgpIHx8IGNsaXBib2FyZC0+
dXJsTGFiZWwoKS5pc051bGwoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPyBjbGlwYm9hcmQtPnVybCgpLnV0ZjgoKS5kYXRhKCkgOiBjbGlwYm9hcmQtPnVy
bExhYmVsKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGd0a19zZWxlY3Rpb25fZGF0YV9zZXQo
c2VsZWN0aW9uX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25fZGF0YS0+
dGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgOCwgKGd1Y2hhciopZGF0YSwgc3RybGVu
KGRhdGEpKTsKKworICAgICAgICBnX2ZyZWUoZGF0YSk7CisgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorICAgIGNhc2UgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX05FVFNDQVBFX1VSTDoK
KyAgICAgICAgeworICAgICAgICBnY2hhciogZGF0YSA9IGdfc3RyZHVwX3ByaW50ZigiJXNcbiVz
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpcGJvYXJkLT51cmwoKS51dGY4
KCkuZGF0YSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpcGJvYXJkLT51
cmxMYWJlbCgpLmlzRW1wdHkoKSB8fCBjbGlwYm9hcmQtPnVybExhYmVsKCkuaXNOdWxsKCkpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gY2xpcGJvYXJkLT51
cmwoKS51dGY4KCkuZGF0YSgpIDogY2xpcGJvYXJkLT51cmxMYWJlbCgpLnV0ZjgoKS5kYXRhKCkp
OworCisgICAgICAgIGd0a19zZWxlY3Rpb25fZGF0YV9zZXQoc2VsZWN0aW9uX2RhdGEsCisgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxlY3Rpb25fZGF0YS0+dGFyZ2V0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgOCwgKGd1Y2hhciopZGF0YSwgc3RybGVuKGRhdGEpKTsKKworICAgICAgICBn
X2ZyZWUoZGF0YSk7CisgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KK30KKwogc3Rh
dGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3
ZWJWaWV3Q2xhc3MpCiB7CiAgICAgR3RrQmluZGluZ1NldCogYmluZGluZ19zZXQ7CkBAIC0xNDEz
LDYgKzE0NzUsOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJL
aXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICB3aWRnZXRDbGFzcy0+Zm9jdXNfaW5f
ZXZlbnQgPSB3ZWJraXRfd2ViX3ZpZXdfZm9jdXNfaW5fZXZlbnQ7CiAgICAgd2lkZ2V0Q2xhc3Mt
PmZvY3VzX291dF9ldmVudCA9IHdlYmtpdF93ZWJfdmlld19mb2N1c19vdXRfZXZlbnQ7CiAgICAg
d2lkZ2V0Q2xhc3MtPmdldF9hY2Nlc3NpYmxlID0gd2Via2l0X3dlYl92aWV3X2dldF9hY2Nlc3Np
YmxlOworICAgIHdpZGdldENsYXNzLT5kcmFnX2VuZCA9IHdlYmtpdF93ZWJfdmlld19kcmFnX2Vu
ZDsKKyAgICB3aWRnZXRDbGFzcy0+ZHJhZ19kYXRhX2dldCA9IHdlYmtpdF93ZWJfdmlld19kcmFn
X2RhdGFfZ2V0OwogCiAgICAgR3RrQ29udGFpbmVyQ2xhc3MqIGNvbnRhaW5lckNsYXNzID0gR1RL
X0NPTlRBSU5FUl9DTEFTUyh3ZWJWaWV3Q2xhc3MpOwogICAgIGNvbnRhaW5lckNsYXNzLT5hZGQg
PSB3ZWJraXRfd2ViX3ZpZXdfY29udGFpbmVyX2FkZDsKQEAgLTE3NDEsNyArMTgwNSw3IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19pbml0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAg
ICAgcHJpdi0+aW1Db250ZXh0ID0gZ3RrX2ltX211bHRpY29udGV4dF9uZXcoKTsKIAogICAgIFdl
YktpdDo6SW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQgPSBuZXcgV2ViS2l0OjpJbnNw
ZWN0b3JDbGllbnQod2ViVmlldyk7Ci0gICAgcHJpdi0+Y29yZVBhZ2UgPSBuZXcgUGFnZShuZXcg
V2ViS2l0OjpDaHJvbWVDbGllbnQod2ViVmlldyksIG5ldyBXZWJLaXQ6OkNvbnRleHRNZW51Q2xp
ZW50KHdlYlZpZXcpLCBuZXcgV2ViS2l0OjpFZGl0b3JDbGllbnQod2ViVmlldyksIG5ldyBXZWJL
aXQ6OkRyYWdDbGllbnQsIGluc3BlY3RvckNsaWVudCk7CisgICAgcHJpdi0+Y29yZVBhZ2UgPSBu
ZXcgUGFnZShuZXcgV2ViS2l0OjpDaHJvbWVDbGllbnQod2ViVmlldyksIG5ldyBXZWJLaXQ6OkNv
bnRleHRNZW51Q2xpZW50KHdlYlZpZXcpLCBuZXcgV2ViS2l0OjpFZGl0b3JDbGllbnQod2ViVmll
dyksIG5ldyBXZWJLaXQ6OkRyYWdDbGllbnQod2ViVmlldyksIGluc3BlY3RvckNsaWVudCk7CiAK
ICAgICAvLyBXZSBhbHNvIGFkZCBhIHNpbXBsZSB3cmFwcGVyIGNsYXNzIHRvIHByb3ZpZGUgdGhl
IHB1YmxpYwogICAgIC8vIGludGVyZmFjZSBmb3IgdGhlIFdlYiBJbnNwZWN0b3IuCmRpZmYgLS1n
aXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmggYi9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ2aWV3LmgKaW5kZXggMmJiOGM2MS4uMDY1MzYzMSAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYnZpZXcuaApAQCAtNDksOCArNDksMTEgQEAgdHlwZWRlZiBlbnVtIHsKIAogdHlwZWRl
ZiBlbnVtCiB7Ci0gICAgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX0hUTUwgPSAtIDEsCi0g
ICAgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX1RFWFQgPSAtIDIKKyAgICBXRUJLSVRfV0VC
X1ZJRVdfVEFSR0VUX0lORk9fSFRNTCA9IDEsCisgICAgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9J
TkZPX1RFWFQsCisgICAgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX0lNQUdFLAorICAgIFdF
QktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19VUklfTElTVCwKKyAgICBXRUJLSVRfV0VCX1ZJRVdf
VEFSR0VUX0lORk9fTkVUU0NBUEVfVVJMCiB9IFdlYktpdFdlYlZpZXdUYXJnZXRJbmZvOwogCiBz
dHJ1Y3QgX1dlYktpdFdlYlZpZXcgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28123</attachid>
            <date>2009-02-28 12:51:10 -0800</date>
            <delta_ts>2009-06-30 13:53:05 -0700</delta_ts>
            <desc>The drag clipboard</desc>
            <filename>dnd-1.diff</filename>
            <type>text/plain</type>
            <size>5614</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MTg3Y2ZiMS4uMGEzNGE1YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAwOS0wMi0yOCAgWmFuIERvYmVyc2Vr
ICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzY0MgorICAgICAgICBJbXBsZW1lbnQgYSBkYXRhIGNvbnRhaW5lciB0aGF0IGNhbiBjb250
YWluIG11bHRpcGxlIGZvcm1zIG9mCisgICAgICAgIGRhdGEuIENvbWVzIGluIGhhbmR5IHdoZW4g
d2UgbmVlZCB0byBncmlwIG9uIHRvIGRyYWcgZGF0YS4KKyAgICAgICAgSW4gc3VjaCBjYXNlcywg
R3RrJ3MgY2xpcGJvYXJkcyBmYWlsLCBhcyB0aGV5IGFyZSBvbmx5IGNhcGFibGUgb2YKKyAgICAg
ICAgaG9sZGluZyBvbiB0byBvbmUgdHlwZSBvZiBkYXRhLgorCisgICAgICAgICogR05VbWFrZWZp
bGUuYW06CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0RyYWdDbGlwYm9hcmQuY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkRyYWdDbGlwYm9hcmQ6OkRyYWdDbGlwYm9hcmQpOgorICAgICAg
ICAoV2ViQ29yZTo6RHJhZ0NsaXBib2FyZDo6Y2xpcGJvYXJkKToKKyAgICAgICAgKFdlYkNvcmU6
OkRyYWdDbGlwYm9hcmQ6OnJlc2V0Q2xpcGJvYXJkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsv
RHJhZ0NsaXBib2FyZC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDbGlwYm9hcmQ6
OnNldFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NsaXBib2FyZDo6c2V0SHRtbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpEcmFnQ2xpcGJvYXJkOjpzZXRJbWFnZSk6CisgICAgICAgIChXZWJD
b3JlOjpEcmFnQ2xpcGJvYXJkOjpzZXRVcmwpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NsaXBi
b2FyZDo6c2V0VXJsTGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NsaXBib2FyZDo6dGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ2xpcGJvYXJkOjpodG1sKToKKyAgICAgICAgKFdl
YkNvcmU6OkRyYWdDbGlwYm9hcmQ6OmltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDbGlw
Ym9hcmQ6OnVybCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ2xpcGJvYXJkOjp1cmxMYWJlbCk6
CisKIDIwMDktMDItMjUgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXguIEFkZCBXZWJDb3JlL3dvcmtlcnMgdG8gdGhl
IGxpc3Qgb2YgcGF0aHMKZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0gYi9XZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IGFlY2YxMGMuLjcxNDljMzAgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQpAQCAtMTc1
Myw2ICsxNzUzLDggQEAgd2ViY29yZWd0a19zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BsYXRmb3Jt
L2d0ay9Db250ZXh0TWVudUl0ZW1HdGsuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9DdXJz
b3JHdGsuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9DdXJzb3JHdGsuaCBcCisJV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvRHJhZ0NsaXBib2FyZC5jcHAgXAorCVdlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0RyYWdDbGlwYm9hcmQuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0RhdGFHdGsuY3Bw
IFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnSW1hZ2VHdGsuY3BwIFwKIAlXZWJDb3JlL3Bs
YXRmb3JtL2d0ay9FdmVudExvb3BHdGsuY3BwIFwKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL0RyYWdDbGlwYm9hcmQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0NsaXBi
b2FyZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGVkMTZkZAotLS0g
L2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdDbGlwYm9hcmQuY3BwCkBA
IC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgWmFuIERvYmVyc2VrIDx6
YW5kb2JlcnNla0BnbWFpbC5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRo
ZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0
IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxk
IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcu
TElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg
SW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIx
MTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
RHJhZ0NsaXBib2FyZC5oIgorCisjaW5jbHVkZSAiRHJhZ0ltYWdlLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworRHJhZ0NsaXBib2FyZDo6RHJhZ0NsaXBib2FyZCgpCisgICAgOiBtX2ltYWdl
KDApCit7Cit9CisKK0RyYWdDbGlwYm9hcmQqIERyYWdDbGlwYm9hcmQ6OmNsaXBib2FyZCgpCit7
CisgICAgc3RhdGljIERyYWdDbGlwYm9hcmQqIGNsaXBib2FyZCA9IDA7CisKKyAgICBpZiAoIWNs
aXBib2FyZCkKKyAgICAgICAgY2xpcGJvYXJkID0gbmV3IERyYWdDbGlwYm9hcmQ7CisKKyAgICBy
ZXR1cm4gY2xpcGJvYXJkOworfQorCit2b2lkIERyYWdDbGlwYm9hcmQ6OnJlc2V0Q2xpcGJvYXJk
KCkKK3sKKyAgICBpZiAoaW1hZ2UoKSkKKyAgICAgICAgZGVsZXRlRHJhZ0ltYWdlKGltYWdlKCkp
OworICAgIHNldEltYWdlKDApOworCisgICAgc2V0SHRtbChTdHJpbmcoKSk7CisgICAgc2V0VGV4
dChTdHJpbmcoKSk7CisgICAgc2V0VXJsKFN0cmluZygpKTsKKyAgICBzZXRVcmxMYWJlbChTdHJp
bmcoKSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdDbGlw
Ym9hcmQuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdDbGlwYm9hcmQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMzIzZWE4Ci0tLSAvZGV2L251bGwKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0NsaXBib2FyZC5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgWmFuIERvYmVyc2VrIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAq
LworCisjaWZuZGVmIERyYWdDbGlwYm9hcmRfaAorI2RlZmluZSBEcmFnQ2xpcGJvYXJkX2gKKwor
I2luY2x1ZGUgIkRyYWdJbWFnZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisKK3R5
cGVkZWYgc3RydWN0IF9HdGtTZWxlY3Rpb25EYXRhIEd0a1NlbGVjdGlvbkRhdGE7CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKK2NsYXNzIFN0cmluZzsKKworY2xhc3MgRHJhZ0NsaXBib2FyZCB7Citw
dWJsaWM6CisgICAgRHJhZ0NsaXBib2FyZCgpOworCisgICAgc3RhdGljIERyYWdDbGlwYm9hcmQq
IGNsaXBib2FyZCgpOworCisgICAgdm9pZCBzZXRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkgeyBt
X3RleHQgPSB0ZXh0OyB9CisgICAgdm9pZCBzZXRIdG1sKGNvbnN0IFN0cmluZyYgaHRtbCkgeyBt
X2h0bWwgPSBodG1sOyB9CisgICAgdm9pZCBzZXRJbWFnZShEcmFnSW1hZ2VSZWYgaW1hZ2UpIHsg
bV9pbWFnZSA9IGltYWdlOyB9CisgICAgdm9pZCBzZXRVcmwoY29uc3QgU3RyaW5nJiB1cmwpIHsg
bV91cmwgPSB1cmw7IH0KKyAgICB2b2lkIHNldFVybExhYmVsKGNvbnN0IFN0cmluZyYgdXJsTGFi
ZWwpIHsgbV91cmxMYWJlbCA9IHVybExhYmVsOyB9CisKKyAgICBTdHJpbmcgdGV4dCgpIHsgcmV0
dXJuIG1fdGV4dDsgfQorICAgIFN0cmluZyBodG1sKCkgeyByZXR1cm4gbV9odG1sOyB9CisgICAg
RHJhZ0ltYWdlUmVmIGltYWdlKCkgeyByZXR1cm4gbV9pbWFnZTsgfQorICAgIFN0cmluZyB1cmwo
KSB7IHJldHVybiBtX3VybDsgfQorICAgIFN0cmluZyB1cmxMYWJlbCgpIHsgcmV0dXJuIG1fdXJs
TGFiZWw7IH0KKworICAgIHZvaWQgcmVzZXRDbGlwYm9hcmQoKTsKKworcHJpdmF0ZToKKyAgICBT
dHJpbmcgbV90ZXh0OworICAgIFN0cmluZyBtX2h0bWw7CisgICAgRHJhZ0ltYWdlUmVmIG1faW1h
Z2U7CisgICAgU3RyaW5nIG1fdXJsOworICAgIFN0cmluZyBtX3VybExhYmVsOworfTsKKworfQor
CisjZW5kaWYgLy8gRHJhZ0NsaXBib2FyZF9oCg==
</data>
<flag name="review"
          id="13732"
          type_id="1"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>28124</attachid>
            <date>2009-02-28 12:55:08 -0800</date>
            <delta_ts>2009-04-24 05:46:55 -0700</delta_ts>
            <desc>The clipboard, drag image and other implementations</desc>
            <filename>dnd-3.diff</filename>
            <type>text/plain</type>
            <size>18319</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MTg3Y2ZiMS4uZDVjZTliZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAwOS0wMi0yOCAgWmFuIERvYmVyc2Vr
ICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzY0MgorICAgICAgICBBZGQgaW1wbGVtZW50YXRpb25zIHRoYXQgZnVuY3Rpb25hbGl6ZSBk
cmFnIHN1cHBvcnQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9EcmFnSW1hZ2UuaDogRGVmaW5lIERy
YWdJbWFnZVJlZiBhcyBHZGtQaXhidWYKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvQ2xpcGJvYXJk
R3RrLmNwcDogSW1wbGVtZW50IGZ1bmN0aW9ucyB3cml0aW5nIGRhdGEgdG8gY2xpcGJvYXJkLgor
ICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkR3RrOjpDbGlwYm9hcmRHdGspOgorICAgICAgICAo
V2ViQ29yZTo6Q2xpcGJvYXJkR3RrOjp+Q2xpcGJvYXJkR3RrKToKKyAgICAgICAgKFdlYkNvcmU6
OmdldENhY2hlZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEd0azo6ZGVjbGFy
ZUFuZFdyaXRlRHJhZ0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEd0azo6d3Jp
dGVVUkwpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkR3RrOjp3cml0ZVJhbmdlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmg6IENsaXBib2FyZEdkayAtPiBDbGlw
Ym9hcmRHdGsKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcDogSW1wbGVt
ZW50IGRyYWcgaW1hZ2UgbWFuaXB1bGF0aW9uIGZ1bmN0aW9ucy4KKyAgICAgICAgKFdlYkNvcmU6
OmRyYWdJbWFnZVNpemUpOgorICAgICAgICAoV2ViQ29yZTo6ZGVsZXRlRHJhZ0ltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OnNjYWxlRHJhZ0ltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZURyYWdJbWFnZUZyb21JbWFnZSk6CisKIDIwMDktMDItMjUgIEd1c3Rhdm8gTm9yb25oYSBTaWx2
YSAgPGduc0Bnbm9tZS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBidWlsZCBmaXguIEFkZCBX
ZWJDb3JlL3dvcmtlcnMgdG8gdGhlIGxpc3Qgb2YgcGF0aHMKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vRHJhZ0ltYWdlLmggYi9XZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCmluZGV4
IDc0NGU0NTAuLmE5MDM5ZGIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdl
LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaApAQCAtNDYsNiArNDYsOCBAQCB0
eXBlZGVmIHN0cnVjdCBIQklUTUFQX18qIEhCSVRNQVA7CiBjbGFzcyB3eERyYWdJbWFnZTsKICNl
bGlmIFBMQVRGT1JNKENIUk9NSVVNKQogI2luY2x1ZGUgIkRyYWdJbWFnZVJlZi5oIgorI2VsaWYg
UExBVEZPUk0oR1RLKQordHlwZWRlZiBzdHJ1Y3QgX0dka1BpeGJ1ZiBHZGtQaXhidWY7CiAjZW5k
aWYKIAogLy9XZSBuZWVkIHRvICNkZWZpbmUgWU9mZnNldCBhcyBpdCBuZWVkcyB0byBiZSBzaGFy
ZWQgd2l0aCBXZWJLaXQKQEAgLTY5LDcgKzcxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2Vs
aWYgUExBVEZPUk0oV1gpCiAgICAgdHlwZWRlZiB3eERyYWdJbWFnZSogRHJhZ0ltYWdlUmVmOwog
I2VsaWYgUExBVEZPUk0oR1RLKQotICAgIHR5cGVkZWYgdm9pZCogRHJhZ0ltYWdlUmVmOworICAg
IHR5cGVkZWYgR2RrUGl4YnVmKiBEcmFnSW1hZ2VSZWY7CiAjZW5kaWYKICAgICAKICAgICBJbnRT
aXplIGRyYWdJbWFnZVNpemUoRHJhZ0ltYWdlUmVmKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9h
cmRHdGsuY3BwCmluZGV4IDQ0YWE3ZjcuLmYwNDM0YmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xp
cGJvYXJkR3RrLmNwcApAQCAtMSw0ICsxLDYgQEAKIC8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
WmFuIERvYmVyc2VrIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisgKgogICogIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGlj
CiAgKiAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCkBAIC0xNywxMSArMTksMTYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJDbGlwYm9hcmRHdGsuaCIKIAorI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCisjaW5jbHVk
ZSAiRHJhZ0NsaXBib2FyZC5oIgorI2luY2x1ZGUgIkVkaXRvci5oIgorI2luY2x1ZGUgIkVsZW1l
bnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUg
Ik5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiUmVuZGVySW1hZ2UuaCIKICNpbmNsdWRlICJT
dHJpbmdIYXNoLmgiCiAKLSNpbmNsdWRlICJFZGl0b3IuaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBQYXNzUmVmUHRyPENsaXBib2FyZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENs
aXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kpCkBAIC0zMSwxMyArMzgsMTIgQEAgUGFzc1JlZlB0
cjxDbGlwYm9hcmQ+IEVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQ
b2xpY3kgcG9saWN5KQogCiBDbGlwYm9hcmRHdGs6OkNsaXBib2FyZEd0ayhDbGlwYm9hcmRBY2Nl
c3NQb2xpY3kgcG9saWN5LCBib29sIGZvckRyYWdnaW5nKQogICAgIDogQ2xpcGJvYXJkKHBvbGlj
eSwgZm9yRHJhZ2dpbmcpCisgICAgLCBtX2RyYWdDbGlwYm9hcmQoZm9yRHJhZ2dpbmcgPyBEcmFn
Q2xpcGJvYXJkOjpjbGlwYm9hcmQoKSA6IDApCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
IAogQ2xpcGJvYXJkR3RrOjp+Q2xpcGJvYXJkR3RrKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OwogfQogCiB2b2lkIENsaXBib2FyZEd0azo6Y2xlYXJEYXRhKGNvbnN0IFN0cmluZyYpCkBAIC0x
MDMsMTkgKzEwOSw1NiBAQCBEcmFnSW1hZ2VSZWYgQ2xpcGJvYXJkR3RrOjpjcmVhdGVEcmFnSW1h
Z2UoSW50UG9pbnQmKSBjb25zdAogICAgIHJldHVybiAwOwogfQogCi12b2lkIENsaXBib2FyZEd0
azo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKEVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3Qg
U3RyaW5nJiwgRnJhbWUqKQorc3RhdGljIENhY2hlZEltYWdlKiBnZXRDYWNoZWRJbWFnZShFbGVt
ZW50KiBlbGVtZW50KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgLy8gQXR0ZW1wdCB0
byBwdWxsIENhY2hlZEltYWdlIGZyb20gZWxlbWVudAorICAgIEFTU0VSVChlbGVtZW50KTsKKyAg
ICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZWxlbWVudC0+cmVuZGVyZXIoKTsKKyAgICBpZiAo
IXJlbmRlcmVyIHx8ICFyZW5kZXJlci0+aXNJbWFnZSgpKQorICAgICAgICByZXR1cm4gMDsKKwor
ICAgIFJlbmRlckltYWdlKiBpbWFnZSA9IHN0YXRpY19jYXN0PFJlbmRlckltYWdlKj4ocmVuZGVy
ZXIpOworICAgIGlmIChpbWFnZS0+Y2FjaGVkSW1hZ2UoKSAmJiAhaW1hZ2UtPmNhY2hlZEltYWdl
KCktPmVycm9yT2NjdXJyZWQoKSkKKyAgICAgICAgcmV0dXJuIGltYWdlLT5jYWNoZWRJbWFnZSgp
OworCisgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgQ2xpcGJvYXJkR3RrOjp3cml0ZVVSTChjb25z
dCBLVVJMJiwgY29uc3QgU3RyaW5nJiwgRnJhbWUqKQordm9pZCBDbGlwYm9hcmRHdGs6OmRlY2xh
cmVBbmRXcml0ZURyYWdJbWFnZShFbGVtZW50KiBlbGVtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNv
bnN0IFN0cmluZyYgbGFiZWwsIEZyYW1lKikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAg
IGlmICghbV9kcmFnQ2xpcGJvYXJkKQorICAgICAgICByZXR1cm47CisKKyAgICBDYWNoZWRJbWFn
ZSogY2FjaGVkSW1hZ2UgPSBnZXRDYWNoZWRJbWFnZShlbGVtZW50KTsKKyAgICBpZiAoIWNhY2hl
ZEltYWdlIHx8ICFjYWNoZWRJbWFnZS0+aW1hZ2UoKSB8fCAhY2FjaGVkSW1hZ2UtPmlzTG9hZGVk
KCkpCisgICAgICAgIHJldHVybjsKKyAgICBHZGtQaXhidWYqIHBpeGJ1ZiA9IGNhY2hlZEltYWdl
LT5pbWFnZSgpLT5nZXRHZGtQaXhidWYoKTsKKyAgICBpZiAocGl4YnVmKQorICAgICAgICBtX2Ry
YWdDbGlwYm9hcmQtPnNldEltYWdlKHBpeGJ1Zik7OworCisgICAgbV9kcmFnQ2xpcGJvYXJkLT5z
ZXRUZXh0KHVybC5zdHJpbmcoKSk7CisgICAgbV9kcmFnQ2xpcGJvYXJkLT5zZXRVcmwodXJsLnN0
cmluZygpKTsKKyAgICBtX2RyYWdDbGlwYm9hcmQtPnNldFVybExhYmVsKGxhYmVsKTsKIH0KIAot
dm9pZCBDbGlwYm9hcmRHdGs6OndyaXRlUmFuZ2UoUmFuZ2UqLCBGcmFtZSopCit2b2lkIENsaXBi
b2FyZEd0azo6d3JpdGVVUkwoY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBG
cmFtZSopCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoIW1fZHJhZ0NsaXBib2Fy
ZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9kcmFnQ2xpcGJvYXJkLT5zZXRUZXh0KHVybC5z
dHJpbmcoKSk7CisgICAgbV9kcmFnQ2xpcGJvYXJkLT5zZXRVcmwodXJsLnN0cmluZygpKTsKKyAg
ICBtX2RyYWdDbGlwYm9hcmQtPnNldFVybExhYmVsKGxhYmVsKTsKK30KKwordm9pZCBDbGlwYm9h
cmRHdGs6OndyaXRlUmFuZ2UoUmFuZ2UqIHJhbmdlLCBGcmFtZSogZnJhbWUpCit7CisgICAgaWYg
KCFtX2RyYWdDbGlwYm9hcmQpCisgICAgICAgIHJldHVybjsKKworICAgIFN0cmluZyB0ZXh0ID0g
ZnJhbWUtPnNlbGVjdGVkVGV4dCgpOworICAgIG1fZHJhZ0NsaXBib2FyZC0+c2V0VGV4dCh0ZXh0
KTsKKyAgICBtX2RyYWdDbGlwYm9hcmQtPnNldEh0bWwoY3JlYXRlTWFya3VwKHJhbmdlLCAwLCBB
bm5vdGF0ZUZvckludGVyY2hhbmdlKSk7CiB9CiAKIGJvb2wgQ2xpcGJvYXJkR3RrOjpoYXNEYXRh
KCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5oIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmgKaW5kZXggYjhiNGRkZi4uNGU3ZWYzOCAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmgKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmgKQEAgLTI0LDEzICsyNCwxNCBAQAogICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIENsaXBib2FyZEdka19oCi0jZGVmaW5lIENsaXBi
b2FyZEdka19oCisjaWZuZGVmIENsaXBib2FyZEd0a19oCisjZGVmaW5lIENsaXBib2FyZEd0a19o
CiAKICNpbmNsdWRlICJDbGlwYm9hcmQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNs
YXNzIENhY2hlZEltYWdlOworICAgIGNsYXNzIERyYWdDbGlwYm9hcmQ7CiAKICAgICAvLyBTdGF0
ZSBhdmFpbGFibGUgZHVyaW5nIElFJ3MgZXZlbnRzIGZvciBkcmFnIGFuZCBkcm9wIGFuZCBjb3B5
L3Bhc3RlCiAgICAgLy8gQ3JlYXRlZCBmcm9tIHRoZSBFdmVudEhhbmRsZXJHdGsgdG8gYmUgdXNl
ZCBieSB0aGUgZG9tCkBAIC02Myw2ICs2NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
IHByaXZhdGU6CiAgICAgICAgIENsaXBib2FyZEd0ayhDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIGJv
b2wpOworCisgICAgICAgIERyYWdDbGlwYm9hcmQqIG1fZHJhZ0NsaXBib2FyZDsKICAgICB9Owog
fQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnSW1hZ2VHdGsuY3BwIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcAppbmRleCA0ZGRhZTNhLi43NGY0
ZDZiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnSW1hZ2VHdGsuY3BwCisr
KyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAKQEAgLTE5LDIxICsxOSwz
MyBAQAogCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKICNpbmNsdWRlICJJbWFnZS5oIgorI2lu
Y2x1ZGUgPGd0ay9ndGsuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JbnRTaXplIGRyYWdJ
bWFnZVNpemUoRHJhZ0ltYWdlUmVmKQorSW50U2l6ZSBkcmFnSW1hZ2VTaXplKERyYWdJbWFnZVJl
ZiBpbWFnZSkKIHsKKyAgICBpZiAoaW1hZ2UpCisgICAgICAgIHJldHVybiBJbnRTaXplKGdka19w
aXhidWZfZ2V0X3dpZHRoKGltYWdlKSwgZ2RrX3BpeGJ1Zl9nZXRfaGVpZ2h0KGltYWdlKSk7CisK
ICAgICByZXR1cm4gSW50U2l6ZSgwLCAwKTsKIH0KIAotdm9pZCBkZWxldGVEcmFnSW1hZ2UoRHJh
Z0ltYWdlUmVmKQordm9pZCBkZWxldGVEcmFnSW1hZ2UoRHJhZ0ltYWdlUmVmIGltYWdlKQogewor
ICAgIGdfb2JqZWN0X3VucmVmKGltYWdlKTsKIH0KIAotRHJhZ0ltYWdlUmVmIHNjYWxlRHJhZ0lt
YWdlKERyYWdJbWFnZVJlZiBpbWFnZSwgRmxvYXRTaXplKQorRHJhZ0ltYWdlUmVmIHNjYWxlRHJh
Z0ltYWdlKERyYWdJbWFnZVJlZiBpbWFnZSwgRmxvYXRTaXplIHNjYWxlKQogewotICAgIHJldHVy
biBpbWFnZTsKKyAgICBpZiAoaW1hZ2UpIHsKKyAgICAgICAgSW50U2l6ZSBpbWFnZVNpemUgPSBk
cmFnSW1hZ2VTaXplKGltYWdlKTsKKyAgICAgICAgR2RrUGl4YnVmKiBzY2FsZWRJbWFnZSA9IGdk
a19waXhidWZfc2NhbGVfc2ltcGxlKGltYWdlLCBpbWFnZVNpemUud2lkdGgoKSAqIHNjYWxlLndp
ZHRoKCksIGltYWdlU2l6ZS5oZWlnaHQoKSAqIHNjYWxlLmhlaWdodCgpLCBHREtfSU5URVJQX05F
QVJFU1QpOworICAgICAgICBkZWxldGVEcmFnSW1hZ2UoaW1hZ2UpOworICAgICAgICByZXR1cm4g
c2NhbGVkSW1hZ2U7CisgICAgfQorCisgICAgcmV0dXJuIDA7CiB9CiAKIERyYWdJbWFnZVJlZiBk
aXNzb2x2ZURyYWdJbWFnZVRvRnJhY3Rpb24oRHJhZ0ltYWdlUmVmIGltYWdlLCBmbG9hdCkKQEAg
LTQxLDkgKzUzLDkgQEAgRHJhZ0ltYWdlUmVmIGRpc3NvbHZlRHJhZ0ltYWdlVG9GcmFjdGlvbihE
cmFnSW1hZ2VSZWYgaW1hZ2UsIGZsb2F0KQogICAgIHJldHVybiBpbWFnZTsKIH0KIAotRHJhZ0lt
YWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSopCitEcmFnSW1hZ2VSZWYgY3Jl
YXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWFnZSkKIHsKLSAgICByZXR1cm4gMDsKKyAg
ICByZXR1cm4gaW1hZ2UtPmdldEdka1BpeGJ1ZigpOwogfQogCiBEcmFnSW1hZ2VSZWYgY3JlYXRl
RHJhZ0ltYWdlSWNvbkZvckNhY2hlZEltYWdlKENhY2hlZEltYWdlKikKZGlmZiAtLWdpdCBhL1dl
YktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggMWE0YTkyZC4u
NTk2ZTI3ZSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAwOS0wMi0yOCAgWmFuIERvYmVyc2VrICA8
emFuZG9iZXJzZWtAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzY0MgorICAgICAgICBBZGQgc3VwcG9ydCBmb3IgZHJhZyBhY3Rpb25zLgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYWdD
bGllbnQ6OkRyYWdDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpEcmFnQ2xpZW50Ojp3aWxsUGVy
Zm9ybURyYWdTb3VyY2VBY3Rpb24pOiBBY3F1aXJlIHRoZSBzdGFydCBwb3NpdGlvbiBvZiB0aGUg
ZHJhZworICAgICAgICAoV2ViS2l0OjpEcmFnQ2xpZW50OjpzdGFydERyYWcpOiBHZXQgdGhlIGRy
YWcgZ29pbmcuCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudEd0ay5oOgorICAg
ICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDogR2l2ZSBkYXRhIGF3YXkgd2hlbiBhc2tl
ZCB0byBhbmQgcmVzZXQgY2xpcGJvYXJkIHdoZW4gZHJhZyBlbmRzLgorICAgICAgICAqIHdlYmtp
dC93ZWJraXR3ZWJ2aWV3Lmg6IEFkZCBtb3JlIHRhcmdldCBJRHMuCisKIDIwMDktMDItMjMgIFhh
biBMb3BleiAgPHhhbkBnbm9tZS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFBy
b3NrdXJ5YWtvdi4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHJhZ0Ns
aWVudEd0ay5jcHAgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRHdGsuY3Bw
CmluZGV4IGY1NWI2ZWEuLmY3OTAyZDYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRHJhZ0NsaWVudEd0ay5jcHAKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9E
cmFnQ2xpZW50R3RrLmNwcApAQCAtMTcsMjAgKzE3LDMyIEBACiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiRHJhZ0NsaWVudEd0ay5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNp
bmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRl
ICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJ3ZWJraXRwcml2YXRlLmgiCisKKyNpbmNsdWRl
IDxndGsvZ3RrLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAorRHJhZ0NsaWVudDo6RHJhZ0NsaWVudChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQor
ICAgIDogbV93ZWJWaWV3KHdlYlZpZXcpCisgICAgLCBtX3N0YXJ0UG9zKDAsIDApCit7Cit9CisK
IHZvaWQgRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25BY3Rpb24oRHJhZ0Rl
c3RpbmF0aW9uQWN0aW9uLCBEcmFnRGF0YSopCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
IAotdm9pZCBEcmFnQ2xpZW50Ojp3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oRHJhZ1NvdXJj
ZUFjdGlvbiwgY29uc3QgSW50UG9pbnQmLCBDbGlwYm9hcmQqKQordm9pZCBEcmFnQ2xpZW50Ojp3
aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oRHJhZ1NvdXJjZUFjdGlvbiwgY29uc3QgSW50UG9p
bnQmIHN0YXJ0UG9zLCBDbGlwYm9hcmQqKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAg
bV9zdGFydFBvcyA9IHN0YXJ0UG9zOwogfQogCiBEcmFnRGVzdGluYXRpb25BY3Rpb24gRHJhZ0Ns
aWVudDo6YWN0aW9uTWFza0ZvckRyYWcoRHJhZ0RhdGEqKQpAQCAtNDUsOSArNTcsNjQgQEAgRHJh
Z1NvdXJjZUFjdGlvbiBEcmFnQ2xpZW50OjpkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KGNv
bnN0IEludFBvaW50JikKICAgICByZXR1cm4gRHJhZ1NvdXJjZUFjdGlvbkFueTsKIH0KIAotdm9p
ZCBEcmFnQ2xpZW50OjpzdGFydERyYWcoRHJhZ0ltYWdlUmVmLCBjb25zdCBJbnRQb2ludCYsIGNv
bnN0IEludFBvaW50JiwgQ2xpcGJvYXJkKiwgRnJhbWUqLCBib29sKQordm9pZCBEcmFnQ2xpZW50
OjpzdGFydERyYWcoRHJhZ0ltYWdlUmVmIGltYWdlLCBjb25zdCBJbnRQb2ludCYsIGNvbnN0IElu
dFBvaW50JiwgQ2xpcGJvYXJkKiwgRnJhbWUqLCBib29sKQogewotICAgIG5vdEltcGxlbWVudGVk
KCk7CisgICAgRnJhbWUqIGZvY3VzZWRGcmFtZSA9IGNvcmUod2Via2l0X3dlYl92aWV3X2dldF9m
b2N1c2VkX2ZyYW1lKG1fd2ViVmlldykpOworCisgICAgRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9
IGZvY3VzZWRGcmFtZS0+ZG9jdW1lbnQoKS0+ZWxlbWVudEZyb21Qb2ludChtX3N0YXJ0UG9zLngo
KSwgbV9zdGFydFBvcy55KCkpOworICAgIGJvb2wgaXNFbGVtZW50TGluayA9IGZhbHNlOworICAg
IGJvb2wgaXNFbGVtZW50SW1hZ2UgPSB0YXJnZXRFbGVtZW50LT5yZW5kZXJlcigpLT5pc0ltYWdl
KCk7CisKKyAgICBOb2RlKiB0YXJnZXROb2RlID0gc3RhdGljX2Nhc3Q8Tm9kZSo+KHRhcmdldEVs
ZW1lbnQpOworICAgIGZvciAoTm9kZSogcCA9IHRhcmdldE5vZGU7IHA7IHAgPSBwLT5wYXJlbnRO
b2RlKCkpIHsKKyAgICAgICAgaWYgKHAtPmlzTGluaygpKSB7CisgICAgICAgICAgICBpc0VsZW1l
bnRMaW5rID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisj
aWYgR1RLX0NIRUNLX1ZFUlNJT04oMiwxMCwwKQorICAgIEdka0F0b20gdGV4dEh0bWwgPSBnZGtf
YXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygidGV4dC9odG1sIik7CisgICAgR2RrQXRvbSBuZXRz
Y2FwZVVybCA9IGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJfTkVUU0NBUEVfVVJMIik7
CisjZWxzZQorICAgIEdka0F0b20gdGV4dEh0bWwgPSBnZGtfYXRvbV9pbnRlcm4oInRleHQvaHRt
bCIsIGZhbHNlKTsKKyAgICBHZGtBdG9tIG5ldHNjYXBlVXJsID0gZ2RrX2F0b21faW50ZXJuKCJf
TkVUU0NBUEVfVVJMIiwgZmFsc2UpOworI2VuZGlmCisKKyAgICBHdGtUYXJnZXRMaXN0KiB0YXJn
ZXRMaXN0ID0gZ3RrX3RhcmdldF9saXN0X25ldyhOVUxMLCAwKTsKKyAgICBndGtfdGFyZ2V0X2xp
c3RfYWRkKHRhcmdldExpc3QsIHRleHRIdG1sLCAwLCBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lO
Rk9fSFRNTCk7CisgICAgZ3RrX3RhcmdldF9saXN0X2FkZF90ZXh0X3RhcmdldHModGFyZ2V0TGlz
dCwgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX1RFWFQpOworICAgIGd0a190YXJnZXRfbGlz
dF9hZGQodGFyZ2V0TGlzdCwgbmV0c2NhcGVVcmwsIDAsIFdFQktJVF9XRUJfVklFV19UQVJHRVRf
SU5GT19ORVRTQ0FQRV9VUkwpOworICAgIGd0a190YXJnZXRfbGlzdF9hZGRfdXJpX3RhcmdldHMo
dGFyZ2V0TGlzdCwgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX1VSSV9MSVNUKTsKKworICAg
IEdka0RyYWdBY3Rpb24gZHJhZ0FjdGlvbiA9IEdES19BQ1RJT05fQ09QWTsKKworICAgIGlmIChp
c0VsZW1lbnRMaW5rKSB7CisgICAgICAgIGRyYWdBY3Rpb24gPSBHREtfQUNUSU9OX0xJTks7Cisg
ICAgICAgIGlmIChpc0VsZW1lbnRJbWFnZSkgeworICAgICAgICAgICAgZ3RrX3RhcmdldF9saXN0
X2FkZF9pbWFnZV90YXJnZXRzKHRhcmdldExpc3QsIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5G
T19JTUFHRSwgZmFsc2UpOworICAgICAgICAgICAgZHJhZ0FjdGlvbiA9IChHZGtEcmFnQWN0aW9u
KShkcmFnQWN0aW9uIHwgR0RLX0FDVElPTl9DT1BZKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBp
ZiAoaXNFbGVtZW50SW1hZ2UpIHsKKyAgICAgICAgZ3RrX3RhcmdldF9saXN0X2FkZF9pbWFnZV90
YXJnZXRzKHRhcmdldExpc3QsIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19JTUFHRSwgZmFs
c2UpOworICAgIH0KKworICAgIEdka0V2ZW50KiBldmVudCA9IGdka19ldmVudF9uZXcoR0RLX0JV
VFRPTl9QUkVTUyk7CisgICAgKChHZGtFdmVudEJ1dHRvbiopZXZlbnQpLT53aW5kb3cgPSBndGtf
d2lkZ2V0X2dldF93aW5kb3coR1RLX1dJREdFVChtX3dlYlZpZXcpKTsKKyAgICAoKEdka0V2ZW50
QnV0dG9uKilldmVudCktPnRpbWUgPSBHREtfQ1VSUkVOVF9USU1FOworCisgICAgR2RrRHJhZ0Nv
bnRleHQqIGNvbnRleHQgPSBndGtfZHJhZ19iZWdpbihHVEtfV0lER0VUKG1fd2ViVmlldyksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldExpc3QsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRyYWdBY3Rpb24sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2
ZW50KTsKKworICAgIGlmIChpbWFnZSkKKyAgICAgICAgZ3RrX2RyYWdfc2V0X2ljb25fcGl4YnVm
KGNvbnRleHQsIGltYWdlLCAwLCAwKTsKKyAgICBlbHNlCisgICAgICAgIGd0a19kcmFnX3NldF9p
Y29uX2RlZmF1bHQoY29udGV4dCk7CisKKyAgICBndGtfdGFyZ2V0X2xpc3RfdW5yZWYodGFyZ2V0
TGlzdCk7CiB9CiAKIERyYWdJbWFnZVJlZiBEcmFnQ2xpZW50OjpjcmVhdGVEcmFnSW1hZ2VGb3JM
aW5rKEtVUkwmLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBGcmFtZSopCmRpZmYgLS1naXQgYS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRHdGsuaCBiL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRHJhZ0NsaWVudEd0ay5oCmluZGV4IDQzNjdjNjguLjAxZjM0OGQgMTAwNjQ0Ci0t
LSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudEd0ay5oCisrKyBiL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudEd0ay5oCkBAIC0zMiw5ICszMiwxOCBAQAog
CiAjaW5jbHVkZSAiRHJhZ0NsaWVudC5oIgogCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVmll
dyBXZWJLaXRXZWJWaWV3OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgY2xhc3MgSW50UG9p
bnQ7Cit9CisKIG5hbWVzcGFjZSBXZWJLaXQgeworCiAgICAgY2xhc3MgRHJhZ0NsaWVudCA6IHB1
YmxpYyBXZWJDb3JlOjpEcmFnQ2xpZW50IHsKICAgICBwdWJsaWM6CisgICAgICAgIERyYWdDbGll
bnQoV2ViS2l0V2ViVmlldyopOworCiAgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybURy
YWdEZXN0aW5hdGlvbkFjdGlvbihXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24sIFdlYkNv
cmU6OkRyYWdEYXRhKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybURyYWdTb3Vy
Y2VBY3Rpb24oV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmLCBXZWJDb3JlOjpDbGlwYm9hcmQqKTsKICAgICAgICAgdmlydHVhbCBXZWJDb3JlOjpEcmFn
RGVzdGluYXRpb25BY3Rpb24gYWN0aW9uTWFza0ZvckRyYWcoV2ViQ29yZTo6RHJhZ0RhdGEqKTsK
QEAgLTQ1LDYgKzU0LDExIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFsIFdl
YkNvcmU6OkRyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKFdlYkNvcmU6OktVUkwm
LCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGxhYmVsLCBXZWJDb3JlOjpGcmFtZSopOwogCiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkcmFnQ29udHJvbGxlckRlc3Ryb3llZCgpOworCisgICAgcHJpdmF0
ZToKKyAgICAgICAgV2ViS2l0V2ViVmlldyogbV93ZWJWaWV3OworCisgICAgICAgIFdlYkNvcmU6
OkludFBvaW50IG1fc3RhcnRQb3M7CiAgICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2
aWV3LmNwcAppbmRleCBiMDRlZjA1Li40NDM4MjAwIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2
aWV3LmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIkN1cnNvci5oIgogI2luY2x1ZGUg
IkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRHJhZ0NsaWVudEd0ay5oIgorI2luY2x1ZGUgIkRyYWdD
bGlwYm9hcmQuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJFZGl0b3JDbGllbnRH
dGsuaCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKQEAgLTkwNyw2ICs5MDgsNjcgQEAgc3Rh
dGljIEF0a09iamVjdCogd2Via2l0X3dlYl92aWV3X2dldF9hY2Nlc3NpYmxlKEd0a1dpZGdldCog
d2lkZ2V0KQogICAgIHJldHVybiBjb3JlQWNjZXNzaWJsZS0+d3JhcHBlcigpOwogfQogCitzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZHJhZ19lbmQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0Ry
YWdDb250ZXh0KiBjb250ZXh0KQoreworICAgIERyYWdDbGlwYm9hcmQ6OmNsaXBib2FyZCgpLT5y
ZXNldENsaXBib2FyZCgpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZHJhZ19k
YXRhX2dldChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRHJhZ0NvbnRleHQqIGNvbnRleHQsIEd0a1Nl
bGVjdGlvbkRhdGEqIHNlbGVjdGlvbl9kYXRhLCBndWludCBpbmZvLCBndWludCB0aW1lXykKK3sK
KyAgICBEcmFnQ2xpcGJvYXJkKiBjbGlwYm9hcmQgPSBEcmFnQ2xpcGJvYXJkOjpjbGlwYm9hcmQo
KTsKKworICAgIHN3aXRjaCAoaW5mbykgeworICAgIGNhc2UgV0VCS0lUX1dFQl9WSUVXX1RBUkdF
VF9JTkZPX0hUTUw6CisgICAgICAgIHsKKyAgICAgICAgZ2NoYXIqIGRhdGEgPSBnX3N0cmR1cCgo
Y2xpcGJvYXJkLT5odG1sKCkuaXNFbXB0eSgpIHx8IGNsaXBib2FyZC0+aHRtbCgpLmlzTnVsbCgp
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gY2xpcGJvYXJkLT50
ZXh0KCkudXRmOCgpLmRhdGEoKSA6IGNsaXBib2FyZC0+aHRtbCgpLnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0KHNlbGVjdGlvbl9kYXRhLAorICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZWN0aW9uX2RhdGEtPnRhcmdldCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgIDgsIChndWNoYXIqKWRhdGEsIHN0cmxlbihkYXRhKSk7CisKKyAgICAgICAgZ19mcmVl
KGRhdGEpOworICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICBjYXNlIFdFQktJVF9XRUJf
VklFV19UQVJHRVRfSU5GT19URVhUOgorICAgICAgICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0KHNl
bGVjdGlvbl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uX2RhdGEtPnRh
cmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgIDgsCisgICAgICAgICAgICAgICAgICAgICAg
ICAoZ3VjaGFyKiljbGlwYm9hcmQtPnRleHQoKS51dGY4KCkuZGF0YSgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgY2xpcGJvYXJkLT50ZXh0KCkubGVuZ3RoKCkpOworICAgICAgICByZXR1cm47
CisgICAgY2FzZSBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fSU1BR0U6CisgICAgICAgIGd0
a19zZWxlY3Rpb25fZGF0YV9zZXRfcGl4YnVmKHNlbGVjdGlvbl9kYXRhLCBjbGlwYm9hcmQtPmlt
YWdlKCkpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VU
X0lORk9fVVJJX0xJU1Q6CisgICAgICAgIHsKKyAgICAgICAgZ2NoYXIqIGRhdGEgPSBnX3N0cmR1
cF9wcmludGYoIiVzXHJcbiVzXHJcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNsaXBib2FyZC0+dXJsKCkudXRmOCgpLmRhdGEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgKGNsaXBib2FyZC0+dXJsTGFiZWwoKS5pc0VtcHR5KCkgfHwgY2xpcGJvYXJkLT51
cmxMYWJlbCgpLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICA/IGNsaXBib2FyZC0+dXJsKCkudXRmOCgpLmRhdGEoKSA6IGNsaXBib2FyZC0+dXJs
TGFiZWwoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3NldChz
ZWxlY3Rpb25fZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbl9kYXRhLT50
YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICA4LCAoZ3VjaGFyKilkYXRhLCBzdHJsZW4o
ZGF0YSkpOworCisgICAgICAgIGdfZnJlZShkYXRhKTsKKyAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgY2FzZSBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fTkVUU0NBUEVfVVJMOgor
ICAgICAgICB7CisgICAgICAgIGdjaGFyKiBkYXRhID0gZ19zdHJkdXBfcHJpbnRmKCIlc1xuJXMi
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwYm9hcmQtPnVybCgpLnV0Zjgo
KS5kYXRhKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGlwYm9hcmQtPnVy
bExhYmVsKCkuaXNFbXB0eSgpIHx8IGNsaXBib2FyZC0+dXJsTGFiZWwoKS5pc051bGwoKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBjbGlwYm9hcmQtPnVy
bCgpLnV0ZjgoKS5kYXRhKCkgOiBjbGlwYm9hcmQtPnVybExhYmVsKCkudXRmOCgpLmRhdGEoKSk7
CisKKyAgICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3NldChzZWxlY3Rpb25fZGF0YSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbl9kYXRhLT50YXJnZXQsCisgICAgICAgICAgICAg
ICAgICAgICAgICA4LCAoZ3VjaGFyKilkYXRhLCBzdHJsZW4oZGF0YSkpOworCisgICAgICAgIGdf
ZnJlZShkYXRhKTsKKyAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorfQorCiBzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdl
YlZpZXdDbGFzcykKIHsKICAgICBHdGtCaW5kaW5nU2V0KiBiaW5kaW5nX3NldDsKQEAgLTE0MTMs
NiArMTQ3NSw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktp
dFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAgIHdpZGdldENsYXNzLT5mb2N1c19pbl9l
dmVudCA9IHdlYmtpdF93ZWJfdmlld19mb2N1c19pbl9ldmVudDsKICAgICB3aWRnZXRDbGFzcy0+
Zm9jdXNfb3V0X2V2ZW50ID0gd2Via2l0X3dlYl92aWV3X2ZvY3VzX291dF9ldmVudDsKICAgICB3
aWRnZXRDbGFzcy0+Z2V0X2FjY2Vzc2libGUgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2FjY2Vzc2li
bGU7CisgICAgd2lkZ2V0Q2xhc3MtPmRyYWdfZW5kID0gd2Via2l0X3dlYl92aWV3X2RyYWdfZW5k
OworICAgIHdpZGdldENsYXNzLT5kcmFnX2RhdGFfZ2V0ID0gd2Via2l0X3dlYl92aWV3X2RyYWdf
ZGF0YV9nZXQ7CiAKICAgICBHdGtDb250YWluZXJDbGFzcyogY29udGFpbmVyQ2xhc3MgPSBHVEtf
Q09OVEFJTkVSX0NMQVNTKHdlYlZpZXdDbGFzcyk7CiAgICAgY29udGFpbmVyQ2xhc3MtPmFkZCA9
IHdlYmtpdF93ZWJfdmlld19jb250YWluZXJfYWRkOwpAQCAtMTc0MSw3ICsxODA1LDcgQEAgc3Rh
dGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2luaXQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAg
ICBwcml2LT5pbUNvbnRleHQgPSBndGtfaW1fbXVsdGljb250ZXh0X25ldygpOwogCiAgICAgV2Vi
S2l0OjpJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckNsaWVudCA9IG5ldyBXZWJLaXQ6Okluc3Bl
Y3RvckNsaWVudCh3ZWJWaWV3KTsKLSAgICBwcml2LT5jb3JlUGFnZSA9IG5ldyBQYWdlKG5ldyBX
ZWJLaXQ6OkNocm9tZUNsaWVudCh3ZWJWaWV3KSwgbmV3IFdlYktpdDo6Q29udGV4dE1lbnVDbGll
bnQod2ViVmlldyksIG5ldyBXZWJLaXQ6OkVkaXRvckNsaWVudCh3ZWJWaWV3KSwgbmV3IFdlYktp
dDo6RHJhZ0NsaWVudCwgaW5zcGVjdG9yQ2xpZW50KTsKKyAgICBwcml2LT5jb3JlUGFnZSA9IG5l
dyBQYWdlKG5ldyBXZWJLaXQ6OkNocm9tZUNsaWVudCh3ZWJWaWV3KSwgbmV3IFdlYktpdDo6Q29u
dGV4dE1lbnVDbGllbnQod2ViVmlldyksIG5ldyBXZWJLaXQ6OkVkaXRvckNsaWVudCh3ZWJWaWV3
KSwgbmV3IFdlYktpdDo6RHJhZ0NsaWVudCh3ZWJWaWV3KSwgaW5zcGVjdG9yQ2xpZW50KTsKIAog
ICAgIC8vIFdlIGFsc28gYWRkIGEgc2ltcGxlIHdyYXBwZXIgY2xhc3MgdG8gcHJvdmlkZSB0aGUg
cHVibGljCiAgICAgLy8gaW50ZXJmYWNlIGZvciB0aGUgV2ViIEluc3BlY3Rvci4KZGlmZiAtLWdp
dCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaCBiL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYnZpZXcuaAppbmRleCA0Y2MzNTY5Li40NGQzZTdjIDEwMDY0NAotLS0gYS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vidmlldy5oCkBAIC01MSw3ICs1MSwxMCBAQCB0eXBlZGVmIGVudW0gewogdHlwZWRlZiBl
bnVtCiB7CiAgICAgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX0hUTUwsCi0gICAgV0VCS0lU
X1dFQl9WSUVXX1RBUkdFVF9JTkZPX1RFWFQKKyAgICBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lO
Rk9fVEVYVCwKKyAgICBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fSU1BR0UsCisgICAgV0VC
S0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX1VSSV9MSVNULAorICAgIFdFQktJVF9XRUJfVklFV19U
QVJHRVRfSU5GT19ORVRTQ0FQRV9VUkwKIH0gV2ViS2l0V2ViVmlld1RhcmdldEluZm87CiAKIHN0
cnVjdCBfV2ViS2l0V2ViVmlldyB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29738</attachid>
            <date>2009-04-24 05:46:55 -0700</date>
            <delta_ts>2009-04-25 03:23:53 -0700</delta_ts>
            <desc>The clipboard, drag image and other implementations, improved</desc>
            <filename>dnd-3.diff</filename>
            <type>text/plain</type>
            <size>18606</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MWE2ZmVjMy4uOTk0Njg0MiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAwOS0wNC0yNCAgWmFuIERvYmVyc2Vr
ICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzY0MgorICAgICAgICBBZGQgaW1wbGVtZW50YXRpb25zIHRoYXQgZnVuY3Rpb25hbGl6ZSBk
cmFnIHN1cHBvcnQKKworICAgICAgICAqIHBsYXRmb3JtL0RyYWdJbWFnZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJv
YXJkR3RrOjpDbGlwYm9hcmRHdGspOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkR3RrOjp+
Q2xpcGJvYXJkR3RrKToKKyAgICAgICAgKFdlYkNvcmU6OmdldENhY2hlZEltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNsaXBib2FyZEd0azo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEd0azo6d3JpdGVVUkwpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkR3RrOjp3cml0ZVJhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvQ2xp
cGJvYXJkR3RrLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpkcmFnSW1hZ2VTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OmRlbGV0
ZURyYWdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpzY2FsZURyYWdJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorCiAyMDA5LTA0LTIzICBaYW4g
RG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkg
R3VzdGF2byBOb3JvbmhhLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2Uu
aCBiL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmgKaW5kZXggNzQ0ZTQ1MC4uYTkwMzlkYiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL0RyYWdJbWFnZS5oCkBAIC00Niw2ICs0Niw4IEBAIHR5cGVkZWYgc3RydWN0IEhCSVRN
QVBfXyogSEJJVE1BUDsKIGNsYXNzIHd4RHJhZ0ltYWdlOwogI2VsaWYgUExBVEZPUk0oQ0hST01J
VU0pCiAjaW5jbHVkZSAiRHJhZ0ltYWdlUmVmLmgiCisjZWxpZiBQTEFURk9STShHVEspCit0eXBl
ZGVmIHN0cnVjdCBfR2RrUGl4YnVmIEdka1BpeGJ1ZjsKICNlbmRpZgogCiAvL1dlIG5lZWQgdG8g
I2RlZmluZSBZT2Zmc2V0IGFzIGl0IG5lZWRzIHRvIGJlIHNoYXJlZCB3aXRoIFdlYktpdApAQCAt
NjksNyArNzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZWxpZiBQTEFURk9STShXWCkKICAg
ICB0eXBlZGVmIHd4RHJhZ0ltYWdlKiBEcmFnSW1hZ2VSZWY7CiAjZWxpZiBQTEFURk9STShHVEsp
Ci0gICAgdHlwZWRlZiB2b2lkKiBEcmFnSW1hZ2VSZWY7CisgICAgdHlwZWRlZiBHZGtQaXhidWYq
IERyYWdJbWFnZVJlZjsKICNlbmRpZgogICAgIAogICAgIEludFNpemUgZHJhZ0ltYWdlU2l6ZShE
cmFnSW1hZ2VSZWYpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJk
R3RrLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5jcHAKaW5kZXggNDRh
YTdmNy4uZjA0MzRiZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJk
R3RrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwCkBAIC0x
LDQgKzEsNiBAQAogLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBaYW4gRG9iZXJzZWsgPHphbmRv
YmVyc2VrQGdtYWlsLmNvbT4KKyAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICAqICBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKQEAgLTE3LDEx
ICsxOSwxNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNsaXBib2FyZEd0ay5o
IgogCisjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKKyNpbmNsdWRlICJEcmFnQ2xpcGJvYXJkLmgi
CisjaW5jbHVkZSAiRWRpdG9yLmgiCisjaW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIkZy
YW1lLmgiCisjaW5jbHVkZSAibWFya3VwLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIK
KyNpbmNsdWRlICJSZW5kZXJJbWFnZS5oIgogI2luY2x1ZGUgIlN0cmluZ0hhc2guaCIKIAotI2lu
Y2x1ZGUgIkVkaXRvci5oIgotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8Q2xp
cGJvYXJkPiBFZGl0b3I6Om5ld0dlbmVyYWxDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5
IHBvbGljeSkKQEAgLTMxLDEzICszOCwxMiBAQCBQYXNzUmVmUHRyPENsaXBib2FyZD4gRWRpdG9y
OjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3kpCiAKIENs
aXBib2FyZEd0azo6Q2xpcGJvYXJkR3RrKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIGJv
b2wgZm9yRHJhZ2dpbmcpCiAgICAgOiBDbGlwYm9hcmQocG9saWN5LCBmb3JEcmFnZ2luZykKKyAg
ICAsIG1fZHJhZ0NsaXBib2FyZChmb3JEcmFnZ2luZyA/IERyYWdDbGlwYm9hcmQ6OmNsaXBib2Fy
ZCgpIDogMCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCiBDbGlwYm9hcmRHdGs6On5D
bGlwYm9hcmRHdGsoKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKIHZvaWQgQ2xpcGJv
YXJkR3RrOjpjbGVhckRhdGEoY29uc3QgU3RyaW5nJikKQEAgLTEwMywxOSArMTA5LDU2IEBAIERy
YWdJbWFnZVJlZiBDbGlwYm9hcmRHdGs6OmNyZWF0ZURyYWdJbWFnZShJbnRQb2ludCYpIGNvbnN0
CiAgICAgcmV0dXJuIDA7CiB9CiAKLXZvaWQgQ2xpcGJvYXJkR3RrOjpkZWNsYXJlQW5kV3JpdGVE
cmFnSW1hZ2UoRWxlbWVudCosIGNvbnN0IEtVUkwmLCBjb25zdCBTdHJpbmcmLCBGcmFtZSopCitz
dGF0aWMgQ2FjaGVkSW1hZ2UqIGdldENhY2hlZEltYWdlKEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICAvLyBBdHRlbXB0IHRvIHB1bGwgQ2FjaGVkSW1hZ2Ug
ZnJvbSBlbGVtZW50CisgICAgQVNTRVJUKGVsZW1lbnQpOworICAgIFJlbmRlck9iamVjdCogcmVu
ZGVyZXIgPSBlbGVtZW50LT5yZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXIgfHwgIXJlbmRl
cmVyLT5pc0ltYWdlKCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVuZGVySW1hZ2UqIGlt
YWdlID0gc3RhdGljX2Nhc3Q8UmVuZGVySW1hZ2UqPihyZW5kZXJlcik7CisgICAgaWYgKGltYWdl
LT5jYWNoZWRJbWFnZSgpICYmICFpbWFnZS0+Y2FjaGVkSW1hZ2UoKS0+ZXJyb3JPY2N1cnJlZCgp
KQorICAgICAgICByZXR1cm4gaW1hZ2UtPmNhY2hlZEltYWdlKCk7CisKKyAgICByZXR1cm4gMDsK
IH0KIAotdm9pZCBDbGlwYm9hcmRHdGs6OndyaXRlVVJMKGNvbnN0IEtVUkwmLCBjb25zdCBTdHJp
bmcmLCBGcmFtZSopCit2b2lkIENsaXBib2FyZEd0azo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdl
KEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBsYWJlbCwg
RnJhbWUqKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKCFtX2RyYWdDbGlwYm9h
cmQpCisgICAgICAgIHJldHVybjsKKworICAgIENhY2hlZEltYWdlKiBjYWNoZWRJbWFnZSA9IGdl
dENhY2hlZEltYWdlKGVsZW1lbnQpOworICAgIGlmICghY2FjaGVkSW1hZ2UgfHwgIWNhY2hlZElt
YWdlLT5pbWFnZSgpIHx8ICFjYWNoZWRJbWFnZS0+aXNMb2FkZWQoKSkKKyAgICAgICAgcmV0dXJu
OworICAgIEdka1BpeGJ1ZiogcGl4YnVmID0gY2FjaGVkSW1hZ2UtPmltYWdlKCktPmdldEdka1Bp
eGJ1ZigpOworICAgIGlmIChwaXhidWYpCisgICAgICAgIG1fZHJhZ0NsaXBib2FyZC0+c2V0SW1h
Z2UocGl4YnVmKTs7CisKKyAgICBtX2RyYWdDbGlwYm9hcmQtPnNldFRleHQodXJsLnN0cmluZygp
KTsKKyAgICBtX2RyYWdDbGlwYm9hcmQtPnNldFVybCh1cmwuc3RyaW5nKCkpOworICAgIG1fZHJh
Z0NsaXBib2FyZC0+c2V0VXJsTGFiZWwobGFiZWwpOwogfQogCi12b2lkIENsaXBib2FyZEd0azo6
d3JpdGVSYW5nZShSYW5nZSosIEZyYW1lKikKK3ZvaWQgQ2xpcGJvYXJkR3RrOjp3cml0ZVVSTChj
b25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbGFiZWwsIEZyYW1lKikKIHsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOworICAgIGlmICghbV9kcmFnQ2xpcGJvYXJkKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX2RyYWdDbGlwYm9hcmQtPnNldFRleHQodXJsLnN0cmluZygpKTsKKyAgICBtX2Ry
YWdDbGlwYm9hcmQtPnNldFVybCh1cmwuc3RyaW5nKCkpOworICAgIG1fZHJhZ0NsaXBib2FyZC0+
c2V0VXJsTGFiZWwobGFiZWwpOworfQorCit2b2lkIENsaXBib2FyZEd0azo6d3JpdGVSYW5nZShS
YW5nZSogcmFuZ2UsIEZyYW1lKiBmcmFtZSkKK3sKKyAgICBpZiAoIW1fZHJhZ0NsaXBib2FyZCkK
KyAgICAgICAgcmV0dXJuOworCisgICAgU3RyaW5nIHRleHQgPSBmcmFtZS0+c2VsZWN0ZWRUZXh0
KCk7CisgICAgbV9kcmFnQ2xpcGJvYXJkLT5zZXRUZXh0KHRleHQpOworICAgIG1fZHJhZ0NsaXBi
b2FyZC0+c2V0SHRtbChjcmVhdGVNYXJrdXAocmFuZ2UsIDAsIEFubm90YXRlRm9ySW50ZXJjaGFu
Z2UpKTsKIH0KIAogYm9vbCBDbGlwYm9hcmRHdGs6Omhhc0RhdGEoKQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmggYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9D
bGlwYm9hcmRHdGsuaAppbmRleCBiOGI0ZGRmLi40ZTdlZjM4IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9D
bGlwYm9hcmRHdGsuaApAQCAtMjQsMTMgKzI0LDE0IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LSNpZm5kZWYgQ2xpcGJvYXJkR2RrX2gKLSNkZWZpbmUgQ2xpcGJvYXJkR2RrX2gKKyNpZm5kZWYg
Q2xpcGJvYXJkR3RrX2gKKyNkZWZpbmUgQ2xpcGJvYXJkR3RrX2gKIAogI2luY2x1ZGUgIkNsaXBi
b2FyZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgQ2FjaGVkSW1hZ2U7Cisg
ICAgY2xhc3MgRHJhZ0NsaXBib2FyZDsKIAogICAgIC8vIFN0YXRlIGF2YWlsYWJsZSBkdXJpbmcg
SUUncyBldmVudHMgZm9yIGRyYWcgYW5kIGRyb3AgYW5kIGNvcHkvcGFzdGUKICAgICAvLyBDcmVh
dGVkIGZyb20gdGhlIEV2ZW50SGFuZGxlckd0ayB0byBiZSB1c2VkIGJ5IHRoZSBkb20KQEAgLTYz
LDYgKzY0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgcHJpdmF0ZToKICAgICAgICAg
Q2xpcGJvYXJkR3RrKENsaXBib2FyZEFjY2Vzc1BvbGljeSwgYm9vbCk7CisKKyAgICAgICAgRHJh
Z0NsaXBib2FyZCogbV9kcmFnQ2xpcGJvYXJkOwogICAgIH07CiB9CiAKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9EcmFnSW1hZ2VHdGsuY3BwCmluZGV4IDRkZGFlM2EuLjc0ZjRkNmIgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvRHJhZ0ltYWdlR3RrLmNwcApAQCAtMTksMjEgKzE5LDMzIEBACiAKICNpbmNsdWRlICJD
YWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVkZSA8Z3RrL2d0ay5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUludFNpemUgZHJhZ0ltYWdlU2l6ZShEcmFnSW1hZ2VS
ZWYpCitJbnRTaXplIGRyYWdJbWFnZVNpemUoRHJhZ0ltYWdlUmVmIGltYWdlKQogeworICAgIGlm
IChpbWFnZSkKKyAgICAgICAgcmV0dXJuIEludFNpemUoZ2RrX3BpeGJ1Zl9nZXRfd2lkdGgoaW1h
Z2UpLCBnZGtfcGl4YnVmX2dldF9oZWlnaHQoaW1hZ2UpKTsKKwogICAgIHJldHVybiBJbnRTaXpl
KDAsIDApOwogfQogCi12b2lkIGRlbGV0ZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYpCit2b2lkIGRl
bGV0ZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYgaW1hZ2UpCiB7CisgICAgZ19vYmplY3RfdW5yZWYo
aW1hZ2UpOwogfQogCi1EcmFnSW1hZ2VSZWYgc2NhbGVEcmFnSW1hZ2UoRHJhZ0ltYWdlUmVmIGlt
YWdlLCBGbG9hdFNpemUpCitEcmFnSW1hZ2VSZWYgc2NhbGVEcmFnSW1hZ2UoRHJhZ0ltYWdlUmVm
IGltYWdlLCBGbG9hdFNpemUgc2NhbGUpCiB7Ci0gICAgcmV0dXJuIGltYWdlOworICAgIGlmIChp
bWFnZSkgeworICAgICAgICBJbnRTaXplIGltYWdlU2l6ZSA9IGRyYWdJbWFnZVNpemUoaW1hZ2Up
OworICAgICAgICBHZGtQaXhidWYqIHNjYWxlZEltYWdlID0gZ2RrX3BpeGJ1Zl9zY2FsZV9zaW1w
bGUoaW1hZ2UsIGltYWdlU2l6ZS53aWR0aCgpICogc2NhbGUud2lkdGgoKSwgaW1hZ2VTaXplLmhl
aWdodCgpICogc2NhbGUuaGVpZ2h0KCksIEdES19JTlRFUlBfTkVBUkVTVCk7CisgICAgICAgIGRl
bGV0ZURyYWdJbWFnZShpbWFnZSk7CisgICAgICAgIHJldHVybiBzY2FsZWRJbWFnZTsKKyAgICB9
CisKKyAgICByZXR1cm4gMDsKIH0KIAogRHJhZ0ltYWdlUmVmIGRpc3NvbHZlRHJhZ0ltYWdlVG9G
cmFjdGlvbihEcmFnSW1hZ2VSZWYgaW1hZ2UsIGZsb2F0KQpAQCAtNDEsOSArNTMsOSBAQCBEcmFn
SW1hZ2VSZWYgZGlzc29sdmVEcmFnSW1hZ2VUb0ZyYWN0aW9uKERyYWdJbWFnZVJlZiBpbWFnZSwg
ZmxvYXQpCiAgICAgcmV0dXJuIGltYWdlOwogfQogCi1EcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0lt
YWdlRnJvbUltYWdlKEltYWdlKikKK0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1h
Z2UoSW1hZ2UqIGltYWdlKQogewotICAgIHJldHVybiAwOworICAgIHJldHVybiBpbWFnZS0+Z2V0
R2RrUGl4YnVmKCk7CiB9CiAKIERyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VJY29uRm9yQ2Fj
aGVkSW1hZ2UoQ2FjaGVkSW1hZ2UqKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cg
Yi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCAxYjlkOGRjLi5mN2RhNWZkIDEwMDY0NAotLS0g
YS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE4IEBACisyMDA5LTA0LTI0ICBaYW4gRG9iZXJzZWsgIDx6YW5kb2JlcnNla0BnbWFpbC5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjQyCisgICAgICAgIEFkZCBz
dXBwb3J0IGZvciBkcmFnIGFjdGlvbnMuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EcmFn
Q2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhZ0NsaWVudDo6RHJhZ0NsaWVudCk6
CisgICAgICAgIChXZWJLaXQ6OkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlv
bik6CisgICAgICAgIChXZWJLaXQ6OkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyk6CisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudEd0ay5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3
ZWJ2aWV3LmNwcDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5oOgorCiAyMDA5LTA0
LTIxICBYYW4gTG9wZXogIDx4bG9wZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBHdXN0YXZvIE5vcm9uaGEuCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0
L0RyYWdDbGllbnRHdGsuY3BwIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50
R3RrLmNwcAppbmRleCBmNTViNmVhLi42Y2JlN2MzIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0RyYWdDbGllbnRHdGsuY3BwCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRHJhZ0NsaWVudEd0ay5jcHAKQEAgLTE3LDIwICsxNywzMiBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIkRyYWdDbGllbnRHdGsuaCIKIAorI2luY2x1ZGUgIkRvY3VtZW50
LmgiCisjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisj
aW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCisjaW5jbHVkZSAid2Via2l0cHJpdmF0ZS5oIgorCisj
aW5jbHVkZSA8Z3RrL2d0ay5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNw
YWNlIFdlYktpdCB7CiAKK0RyYWdDbGllbnQ6OkRyYWdDbGllbnQoV2ViS2l0V2ViVmlldyogd2Vi
VmlldykKKyAgICA6IG1fd2ViVmlldyh3ZWJWaWV3KQorICAgICwgbV9zdGFydFBvcygwLCAwKQor
eworfQorCiB2b2lkIERyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
KERyYWdEZXN0aW5hdGlvbkFjdGlvbiwgRHJhZ0RhdGEqKQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CiAKLXZvaWQgRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERy
YWdTb3VyY2VBY3Rpb24sIGNvbnN0IEludFBvaW50JiwgQ2xpcGJvYXJkKikKK3ZvaWQgRHJhZ0Ns
aWVudDo6d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb24sIGNvbnN0
IEludFBvaW50JiBzdGFydFBvcywgQ2xpcGJvYXJkKikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgp
OworICAgIG1fc3RhcnRQb3MgPSBzdGFydFBvczsKIH0KIAogRHJhZ0Rlc3RpbmF0aW9uQWN0aW9u
IERyYWdDbGllbnQ6OmFjdGlvbk1hc2tGb3JEcmFnKERyYWdEYXRhKikKQEAgLTQ1LDkgKzU3LDY4
IEBAIERyYWdTb3VyY2VBY3Rpb24gRHJhZ0NsaWVudDo6ZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQ
b2ludChjb25zdCBJbnRQb2ludCYpCiAgICAgcmV0dXJuIERyYWdTb3VyY2VBY3Rpb25Bbnk7CiB9
CiAKLXZvaWQgRHJhZ0NsaWVudDo6c3RhcnREcmFnKERyYWdJbWFnZVJlZiwgY29uc3QgSW50UG9p
bnQmLCBjb25zdCBJbnRQb2ludCYsIENsaXBib2FyZCosIEZyYW1lKiwgYm9vbCkKK3ZvaWQgRHJh
Z0NsaWVudDo6c3RhcnREcmFnKERyYWdJbWFnZVJlZiBpbWFnZSwgY29uc3QgSW50UG9pbnQmIGRy
YWdJbWFnZU9yaWdpbiwgY29uc3QgSW50UG9pbnQmIGV2ZW50UG9zLCBDbGlwYm9hcmQqLCBGcmFt
ZSosIGJvb2wpCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBGcmFtZSogZm9jdXNlZEZy
YW1lID0gY29yZSh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2ZvY3VzZWRfZnJhbWUobV93ZWJWaWV3KSk7
CisgICAgRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IGZvY3VzZWRGcmFtZS0+ZG9jdW1lbnQoKS0+
ZWxlbWVudEZyb21Qb2ludChtX3N0YXJ0UG9zLngoKSwgbV9zdGFydFBvcy55KCkpOworICAgIGJv
b2wgaXNFbGVtZW50TGluayA9IGZhbHNlOworICAgIGJvb2wgaXNFbGVtZW50SW1hZ2UgPSBmYWxz
ZTsKKworICAgIGlmICh0YXJnZXRFbGVtZW50KSB7CisgICAgICAgIGlzRWxlbWVudEltYWdlID0g
dGFyZ2V0RWxlbWVudC0+cmVuZGVyZXIoKS0+aXNJbWFnZSgpOworCisgICAgICAgIE5vZGUqIHRh
cmdldE5vZGUgPSBzdGF0aWNfY2FzdDxOb2RlKj4odGFyZ2V0RWxlbWVudCk7CisgICAgICAgIGZv
ciAoTm9kZSogcCA9IHRhcmdldE5vZGU7IHA7IHAgPSBwLT5wYXJlbnROb2RlKCkpIHsKKyAgICAg
ICAgICAgIGlmIChwLT5pc0xpbmsoKSkgeworICAgICAgICAgICAgICAgIGlzRWxlbWVudExpbmsg
PSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorCisjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMiwxMCwwKQorICAgIEdka0F0b20gdGV4
dEh0bWwgPSBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygidGV4dC9odG1sIik7CisgICAg
R2RrQXRvbSBuZXRzY2FwZVVybCA9IGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJfTkVU
U0NBUEVfVVJMIik7CisjZWxzZQorICAgIEdka0F0b20gdGV4dEh0bWwgPSBnZGtfYXRvbV9pbnRl
cm4oInRleHQvaHRtbCIsIGZhbHNlKTsKKyAgICBHZGtBdG9tIG5ldHNjYXBlVXJsID0gZ2RrX2F0
b21faW50ZXJuKCJfTkVUU0NBUEVfVVJMIiwgZmFsc2UpOworI2VuZGlmCisKKyAgICBHdGtUYXJn
ZXRMaXN0KiB0YXJnZXRMaXN0ID0gZ3RrX3RhcmdldF9saXN0X25ldyhOVUxMLCAwKTsKKyAgICBn
dGtfdGFyZ2V0X2xpc3RfYWRkKHRhcmdldExpc3QsIHRleHRIdG1sLCAwLCBXRUJLSVRfV0VCX1ZJ
RVdfVEFSR0VUX0lORk9fSFRNTCk7CisgICAgZ3RrX3RhcmdldF9saXN0X2FkZF90ZXh0X3Rhcmdl
dHModGFyZ2V0TGlzdCwgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX1RFWFQpOworCisgICAg
aWYgKGlzRWxlbWVudExpbmsgfHwgaXNFbGVtZW50SW1hZ2UpIHsKKyAgICAgICAgZ3RrX3Rhcmdl
dF9saXN0X2FkZCh0YXJnZXRMaXN0LCBuZXRzY2FwZVVybCwgMCwgV0VCS0lUX1dFQl9WSUVXX1RB
UkdFVF9JTkZPX05FVFNDQVBFX1VSTCk7CisgICAgICAgIGd0a190YXJnZXRfbGlzdF9hZGRfdXJp
X3RhcmdldHModGFyZ2V0TGlzdCwgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX1VSSV9MSVNU
KTsKKyAgICB9CisKKyAgICBpZiAoaXNFbGVtZW50SW1hZ2UpCisgICAgICAgIGd0a190YXJnZXRf
bGlzdF9hZGRfaW1hZ2VfdGFyZ2V0cyh0YXJnZXRMaXN0LCBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VU
X0lORk9fSU1BR0UsIGZhbHNlKTsKKworICAgIEdka0RyYWdBY3Rpb24gZHJhZ0FjdGlvbiA9IEdE
S19BQ1RJT05fQ09QWTsKKyAgICBpZiAoaXNFbGVtZW50TGluaykgeworICAgICAgICBkcmFnQWN0
aW9uID0gR0RLX0FDVElPTl9MSU5LOworICAgICAgICBpZiAoaXNFbGVtZW50SW1hZ2UpCisgICAg
ICAgICAgICBkcmFnQWN0aW9uID0gKEdka0RyYWdBY3Rpb24pKGRyYWdBY3Rpb24gfCBHREtfQUNU
SU9OX0NPUFkpOworICAgIH0KKworICAgIEdka0V2ZW50KiBldmVudCA9IGdka19ldmVudF9uZXco
R0RLX0JVVFRPTl9QUkVTUyk7CisgICAgcmVpbnRlcnByZXRfY2FzdDxHZGtFdmVudEJ1dHRvbio+
KGV2ZW50KS0+d2luZG93ID0gZ3RrX3dpZGdldF9nZXRfd2luZG93KEdUS19XSURHRVQobV93ZWJW
aWV3KSk7CisgICAgcmVpbnRlcnByZXRfY2FzdDxHZGtFdmVudEJ1dHRvbio+KGV2ZW50KS0+dGlt
ZSA9IEdES19DVVJSRU5UX1RJTUU7CisKKyAgICBHZGtEcmFnQ29udGV4dCogY29udGV4dCA9IGd0
a19kcmFnX2JlZ2luKEdUS19XSURHRVQobV93ZWJWaWV3KSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldExpc3QsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmFnQWN0aW9uLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50KTsKKworICAgIGlmIChpbWFnZSkK
KyAgICAgICAgZ3RrX2RyYWdfc2V0X2ljb25fcGl4YnVmKGNvbnRleHQsIGltYWdlLCBldmVudFBv
cy54KCkgLSBkcmFnSW1hZ2VPcmlnaW4ueCgpLCBldmVudFBvcy55KCkgLSBkcmFnSW1hZ2VPcmln
aW4ueSgpKTsKKyAgICBlbHNlCisgICAgICAgIGd0a19kcmFnX3NldF9pY29uX2RlZmF1bHQoY29u
dGV4dCk7CisKKyAgICBndGtfdGFyZ2V0X2xpc3RfdW5yZWYodGFyZ2V0TGlzdCk7CiB9CiAKIERy
YWdJbWFnZVJlZiBEcmFnQ2xpZW50OjpjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKEtVUkwmLCBjb25z
dCBTdHJpbmcmIGxhYmVsLCBGcmFtZSopCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0RyYWdDbGllbnRHdGsuaCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHJhZ0Ns
aWVudEd0ay5oCmluZGV4IDQzNjdjNjguLjAxZjM0OGQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudEd0ay5oCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRHJhZ0NsaWVudEd0ay5oCkBAIC0zMiw5ICszMiwxOCBAQAogCiAjaW5jbHVkZSAiRHJh
Z0NsaWVudC5oIgogCit0eXBlZGVmIHN0cnVjdCBfV2ViS2l0V2ViVmlldyBXZWJLaXRXZWJWaWV3
OworCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgY2xhc3MgSW50UG9pbnQ7Cit9CisKIG5hbWVz
cGFjZSBXZWJLaXQgeworCiAgICAgY2xhc3MgRHJhZ0NsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpE
cmFnQ2xpZW50IHsKICAgICBwdWJsaWM6CisgICAgICAgIERyYWdDbGllbnQoV2ViS2l0V2ViVmll
dyopOworCiAgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFj
dGlvbihXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24sIFdlYkNvcmU6OkRyYWdEYXRhKik7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oV2ViQ29y
ZTo6RHJhZ1NvdXJjZUFjdGlvbiwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBXZWJDb3JlOjpD
bGlwYm9hcmQqKTsKICAgICAgICAgdmlydHVhbCBXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rp
b24gYWN0aW9uTWFza0ZvckRyYWcoV2ViQ29yZTo6RHJhZ0RhdGEqKTsKQEAgLTQ1LDYgKzU0LDEx
IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFsIFdlYkNvcmU6OkRyYWdJbWFn
ZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKFdlYkNvcmU6OktVUkwmLCBjb25zdCBXZWJDb3Jl
OjpTdHJpbmcmIGxhYmVsLCBXZWJDb3JlOjpGcmFtZSopOwogCiAgICAgICAgIHZpcnR1YWwgdm9p
ZCBkcmFnQ29udHJvbGxlckRlc3Ryb3llZCgpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgV2Vi
S2l0V2ViVmlldyogbV93ZWJWaWV3OworCisgICAgICAgIFdlYkNvcmU6OkludFBvaW50IG1fc3Rh
cnRQb3M7CiAgICAgfTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlldy5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCAx
NTI0ZWJiLi5iMGE5MGUyIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2
aWV3LmNwcAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtNDcs
NiArNDcsNyBAQAogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRMb2Fk
ZXIuaCIKICNpbmNsdWRlICJEcmFnQ2xpZW50R3RrLmgiCisjaW5jbHVkZSAiRHJhZ0NsaXBib2Fy
ZC5oIgogI2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkVkaXRvckNsaWVudEd0ay5oIgog
I2luY2x1ZGUgIkV2ZW50SGFuZGxlci5oIgpAQCAtMTAxMyw2ICsxMDE0LDcwIEBAIHN0YXRpYyB2
b2lkIHdlYmtpdF93ZWJfdmlld19zY3JlZW5fY2hhbmdlZChHdGtXaWRnZXQqIHdpZGdldCwgR2Rr
U2NyZWVuKiBwcmV2aW91CiAgICAgc2V0dGluZ3MtPnNldE1pbmltdW1Mb2dpY2FsRm9udFNpemUo
bWluaW11bUxvZ2ljYWxGb250U2l6ZSAvIDcyLjAgKiBEUEkpOwogfQogCitzdGF0aWMgdm9pZCB3
ZWJraXRfd2ViX3ZpZXdfZHJhZ19lbmQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0RyYWdDb250ZXh0
KiBjb250ZXh0KQoreworICAgIERyYWdDbGlwYm9hcmQ6OmNsaXBib2FyZCgpLT5yZXNldENsaXBi
b2FyZCgpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZHJhZ19kYXRhX2dldChH
dGtXaWRnZXQqIHdpZGdldCwgR2RrRHJhZ0NvbnRleHQqIGNvbnRleHQsIEd0a1NlbGVjdGlvbkRh
dGEqIHNlbGVjdGlvbl9kYXRhLCBndWludCBpbmZvLCBndWludCB0aW1lXykKK3sKKyAgICBEcmFn
Q2xpcGJvYXJkKiBjbGlwYm9hcmQgPSBEcmFnQ2xpcGJvYXJkOjpjbGlwYm9hcmQoKTsKKyAgICBj
aGFyKiBkYXRhOworCisgICAgc3dpdGNoIChpbmZvKSB7CisgICAgY2FzZSBXRUJLSVRfV0VCX1ZJ
RVdfVEFSR0VUX0lORk9fSFRNTDoKKyAgICAgICAgZGF0YSA9IGdfc3RyZHVwKChjbGlwYm9hcmQt
Pmh0bWwoKS5pc0VtcHR5KCkgfHwgY2xpcGJvYXJkLT5odG1sKCkuaXNOdWxsKCkpCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBjbGlwYm9hcmQtPnRleHQoKS51dGY4
KCkuZGF0YSgpIDogY2xpcGJvYXJkLT5odG1sKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGd0
a19zZWxlY3Rpb25fZGF0YV9zZXQoc2VsZWN0aW9uX2RhdGEsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGVjdGlvbl9kYXRhLT50YXJnZXQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJw
cmV0X2Nhc3Q8Z3VjaGFyKj4oZGF0YSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHN0cmxlbihkYXRhKSk7CisKKyAgICAgICAgZ19mcmVlKGRhdGEpOworICAgICAgICByZXR1cm47
CisgICAgY2FzZSBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fVEVYVDoKKyAgICAgICAgZGF0
YSA9IGdfc3RyZHVwKGNsaXBib2FyZC0+dGV4dCgpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBn
dGtfc2VsZWN0aW9uX2RhdGFfc2V0KHNlbGVjdGlvbl9kYXRhLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZWxlY3Rpb25fZGF0YS0+dGFyZ2V0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICA4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVy
cHJldF9jYXN0PGd1Y2hhcio+KGRhdGEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdHJsZW4oZGF0YSkpOworICAgICAgICBnX2ZyZWUoZGF0YSk7CisgICAgICAgIHJldHVybjsK
KyAgICBjYXNlIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19JTUFHRToKKyAgICAgICAgZ3Rr
X3NlbGVjdGlvbl9kYXRhX3NldF9waXhidWYoc2VsZWN0aW9uX2RhdGEsIGNsaXBib2FyZC0+aW1h
Z2UoKSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFdFQktJVF9XRUJfVklFV19UQVJHRVRf
SU5GT19VUklfTElTVDoKKyAgICAgICAgZGF0YSA9IGdfc3RyZHVwX3ByaW50ZigiJXNcclxuJXNc
clxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwYm9hcmQt
PnVybCgpLnV0ZjgoKS5kYXRhKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKGNsaXBib2FyZC0+dXJsTGFiZWwoKS5pc0VtcHR5KCkgfHwgY2xpcGJvYXJkLT51cmxM
YWJlbCgpLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICA/IGNsaXBib2FyZC0+dXJsKCkudXRmOCgpLmRhdGEoKSA6IGNsaXBib2FyZC0+dXJsTGFi
ZWwoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3NldChzZWxl
Y3Rpb25fZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0aW9uX2Rh
dGEtPnRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxndWNoYXIqPihkYXRhKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuKGRhdGEpKTsKKworICAgICAg
ICBnX2ZyZWUoZGF0YSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFdFQktJVF9XRUJfVklF
V19UQVJHRVRfSU5GT19ORVRTQ0FQRV9VUkw6CisgICAgICAgIGRhdGEgPSBnX3N0cmR1cF9wcmlu
dGYoIiVzXG4lcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xp
cGJvYXJkLT51cmwoKS51dGY4KCkuZGF0YSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChjbGlwYm9hcmQtPnVybExhYmVsKCkuaXNFbXB0eSgpIHx8IGNsaXBib2Fy
ZC0+dXJsTGFiZWwoKS5pc051bGwoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgPyBjbGlwYm9hcmQtPnVybCgpLnV0ZjgoKS5kYXRhKCkgOiBjbGlwYm9hcmQt
PnVybExhYmVsKCkudXRmOCgpLmRhdGEoKSk7CisKKyAgICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRh
X3NldChzZWxlY3Rpb25fZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
ZWN0aW9uX2RhdGEtPnRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxndWNoYXIq
PihkYXRhKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuKGRhdGEpKTsK
KworICAgICAgICBnX2ZyZWUoZGF0YSk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKIHN0
YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyog
d2ViVmlld0NsYXNzKQogewogICAgIEd0a0JpbmRpbmdTZXQqIGJpbmRpbmdfc2V0OwpAQCAtMTY0
Miw2ICsxNzA3LDggQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2Vi
S2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgd2lkZ2V0Q2xhc3MtPmZvY3VzX291
dF9ldmVudCA9IHdlYmtpdF93ZWJfdmlld19mb2N1c19vdXRfZXZlbnQ7CiAgICAgd2lkZ2V0Q2xh
c3MtPmdldF9hY2Nlc3NpYmxlID0gd2Via2l0X3dlYl92aWV3X2dldF9hY2Nlc3NpYmxlOwogICAg
IHdpZGdldENsYXNzLT5zY3JlZW5fY2hhbmdlZCA9IHdlYmtpdF93ZWJfdmlld19zY3JlZW5fY2hh
bmdlZDsKKyAgICB3aWRnZXRDbGFzcy0+ZHJhZ19lbmQgPSB3ZWJraXRfd2ViX3ZpZXdfZHJhZ19l
bmQ7CisgICAgd2lkZ2V0Q2xhc3MtPmRyYWdfZGF0YV9nZXQgPSB3ZWJraXRfd2ViX3ZpZXdfZHJh
Z19kYXRhX2dldDsKIAogICAgIEd0a0NvbnRhaW5lckNsYXNzKiBjb250YWluZXJDbGFzcyA9IEdU
S19DT05UQUlORVJfQ0xBU1Mod2ViVmlld0NsYXNzKTsKICAgICBjb250YWluZXJDbGFzcy0+YWRk
ID0gd2Via2l0X3dlYl92aWV3X2NvbnRhaW5lcl9hZGQ7CkBAIC0yMDI4LDcgKzIwOTUsNyBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfaW5pdChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQog
ICAgIHByaXYtPmltQ29udGV4dCA9IGd0a19pbV9tdWx0aWNvbnRleHRfbmV3KCk7CiAKICAgICBX
ZWJLaXQ6Okluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQ2xpZW50ID0gbmV3IFdlYktpdDo6SW5z
cGVjdG9yQ2xpZW50KHdlYlZpZXcpOwotICAgIHByaXYtPmNvcmVQYWdlID0gbmV3IFBhZ2UobmV3
IFdlYktpdDo6Q2hyb21lQ2xpZW50KHdlYlZpZXcpLCBuZXcgV2ViS2l0OjpDb250ZXh0TWVudUNs
aWVudCh3ZWJWaWV3KSwgbmV3IFdlYktpdDo6RWRpdG9yQ2xpZW50KHdlYlZpZXcpLCBuZXcgV2Vi
S2l0OjpEcmFnQ2xpZW50LCBpbnNwZWN0b3JDbGllbnQpOworICAgIHByaXYtPmNvcmVQYWdlID0g
bmV3IFBhZ2UobmV3IFdlYktpdDo6Q2hyb21lQ2xpZW50KHdlYlZpZXcpLCBuZXcgV2ViS2l0OjpD
b250ZXh0TWVudUNsaWVudCh3ZWJWaWV3KSwgbmV3IFdlYktpdDo6RWRpdG9yQ2xpZW50KHdlYlZp
ZXcpLCBuZXcgV2ViS2l0OjpEcmFnQ2xpZW50KHdlYlZpZXcpLCBpbnNwZWN0b3JDbGllbnQpOwog
CiAgICAgLy8gV2UgYWxzbyBhZGQgYSBzaW1wbGUgd3JhcHBlciBjbGFzcyB0byBwcm92aWRlIHRo
ZSBwdWJsaWMKICAgICAvLyBpbnRlcmZhY2UgZm9yIHRoZSBXZWIgSW5zcGVjdG9yLgpkaWZmIC0t
Z2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oIGIvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlldy5oCmluZGV4IDYxMTU0NGQuLmQ5YTRmMjUgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ2aWV3LmgKQEAgLTUxLDcgKzUxLDEwIEBAIHR5cGVkZWYgZW51bSB7CiB0eXBlZGVm
IGVudW0KIHsKICAgICBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fSFRNTCwKLSAgICBXRUJL
SVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fVEVYVAorICAgIFdFQktJVF9XRUJfVklFV19UQVJHRVRf
SU5GT19URVhULAorICAgIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19JTUFHRSwKKyAgICBX
RUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fVVJJX0xJU1QsCisgICAgV0VCS0lUX1dFQl9WSUVX
X1RBUkdFVF9JTkZPX05FVFNDQVBFX1VSTAogfSBXZWJLaXRXZWJWaWV3VGFyZ2V0SW5mbzsKIAog
c3RydWN0IF9XZWJLaXRXZWJWaWV3IHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>29786</attachid>
            <date>2009-04-25 03:23:53 -0700</date>
            <delta_ts>2009-06-30 08:18:39 -0700</delta_ts>
            <desc>The clipboard, drag image and other implementations, improved</desc>
            <filename>dnd-3.diff</filename>
            <type>text/plain</type>
            <size>17657</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YjI5MWE2ZC4uZmM5ZjAwYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAwOS0wNC0yNSAgWmFuIERvYmVyc2Vr
ICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzY0MgorICAgICAgICBBZGQgaW1wbGVtZW50YXRpb25zIHRoYXQgZnVuY3Rpb25hbGl6ZSBk
cmFnIHN1cHBvcnQKKworICAgICAgICAqIHBsYXRmb3JtL0RyYWdJbWFnZS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJv
YXJkR3RrOjpDbGlwYm9hcmRHdGspOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkR3RrOjp+
Q2xpcGJvYXJkR3RrKToKKyAgICAgICAgKFdlYkNvcmU6OmdldENhY2hlZEltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNsaXBib2FyZEd0azo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0ltYWdlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkNsaXBib2FyZEd0azo6d3JpdGVVUkwpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2xpcGJvYXJkR3RrOjp3cml0ZVJhbmdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvQ2xp
cGJvYXJkR3RrLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpkcmFnSW1hZ2VTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OmRlbGV0
ZURyYWdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpzY2FsZURyYWdJbWFnZSk6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorCiAyMDA5LTA0LTI0ICBOYXRl
IENoYXBpbiAgPGphcGhldEBnb29nbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0
cmkgR2xhemtvdi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmggYi9X
ZWJDb3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCmluZGV4IDc0NGU0NTAuLmE5MDM5ZGIgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9y
bS9EcmFnSW1hZ2UuaApAQCAtNDYsNiArNDYsOCBAQCB0eXBlZGVmIHN0cnVjdCBIQklUTUFQX18q
IEhCSVRNQVA7CiBjbGFzcyB3eERyYWdJbWFnZTsKICNlbGlmIFBMQVRGT1JNKENIUk9NSVVNKQog
I2luY2x1ZGUgIkRyYWdJbWFnZVJlZi5oIgorI2VsaWYgUExBVEZPUk0oR1RLKQordHlwZWRlZiBz
dHJ1Y3QgX0dka1BpeGJ1ZiBHZGtQaXhidWY7CiAjZW5kaWYKIAogLy9XZSBuZWVkIHRvICNkZWZp
bmUgWU9mZnNldCBhcyBpdCBuZWVkcyB0byBiZSBzaGFyZWQgd2l0aCBXZWJLaXQKQEAgLTY5LDcg
KzcxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogI2VsaWYgUExBVEZPUk0oV1gpCiAgICAgdHlw
ZWRlZiB3eERyYWdJbWFnZSogRHJhZ0ltYWdlUmVmOwogI2VsaWYgUExBVEZPUk0oR1RLKQotICAg
IHR5cGVkZWYgdm9pZCogRHJhZ0ltYWdlUmVmOworICAgIHR5cGVkZWYgR2RrUGl4YnVmKiBEcmFn
SW1hZ2VSZWY7CiAjZW5kaWYKICAgICAKICAgICBJbnRTaXplIGRyYWdJbWFnZVNpemUoRHJhZ0lt
YWdlUmVmKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5j
cHAgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuY3BwCmluZGV4IDQ0YWE3Zjcu
LmNhZjFkMzMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5j
cHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcApAQCAtMSw0ICsx
LDYgQEAKIC8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgWmFuIERvYmVyc2VrIDx6YW5kb2JlcnNl
a0BnbWFpbC5jb20+CisgKgogICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAgKiAgTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCkBAIC0xNywxMSArMTks
MTYgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDbGlwYm9hcmRHdGsuaCIKIAor
I2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCisjaW5jbHVkZSAiRHJhZ0NsaXBib2FyZC5oIgorI2lu
Y2x1ZGUgIkVkaXRvci5oIgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5o
IgorI2luY2x1ZGUgIm1hcmt1cC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5j
bHVkZSAiUmVuZGVySW1hZ2UuaCIKICNpbmNsdWRlICJTdHJpbmdIYXNoLmgiCiAKLSNpbmNsdWRl
ICJFZGl0b3IuaCIKLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVmUHRyPENsaXBib2Fy
ZD4gRWRpdG9yOjpuZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xp
Y3kpCkBAIC0zMSwxMyArMzgsMTIgQEAgUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVkaXRvcjo6bmV3
R2VuZXJhbENsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KQogCiBDbGlwYm9h
cmRHdGs6OkNsaXBib2FyZEd0ayhDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBib29sIGZv
ckRyYWdnaW5nKQogICAgIDogQ2xpcGJvYXJkKHBvbGljeSwgZm9yRHJhZ2dpbmcpCisgICAgLCBt
X2RyYWdDbGlwYm9hcmQoZm9yRHJhZ2dpbmcgPyBEcmFnQ2xpcGJvYXJkOjpjbGlwYm9hcmQoKSA6
IDApCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAogQ2xpcGJvYXJkR3RrOjp+Q2xpcGJv
YXJkR3RrKCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCiB2b2lkIENsaXBib2FyZEd0
azo6Y2xlYXJEYXRhKGNvbnN0IFN0cmluZyYpCkBAIC0xMDMsMTkgKzEwOSw1MyBAQCBEcmFnSW1h
Z2VSZWYgQ2xpcGJvYXJkR3RrOjpjcmVhdGVEcmFnSW1hZ2UoSW50UG9pbnQmKSBjb25zdAogICAg
IHJldHVybiAwOwogfQogCi12b2lkIENsaXBib2FyZEd0azo6ZGVjbGFyZUFuZFdyaXRlRHJhZ0lt
YWdlKEVsZW1lbnQqLCBjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiwgRnJhbWUqKQorc3RhdGlj
IENhY2hlZEltYWdlKiBnZXRDYWNoZWRJbWFnZShFbGVtZW50KiBlbGVtZW50KQogewotICAgIG5v
dEltcGxlbWVudGVkKCk7CisgICAgLy8gQXR0ZW1wdCB0byBwdWxsIENhY2hlZEltYWdlIGZyb20g
ZWxlbWVudAorICAgIEFTU0VSVChlbGVtZW50KTsKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
ID0gZWxlbWVudC0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyIHx8ICFyZW5kZXJlci0+
aXNJbWFnZSgpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIFJlbmRlckltYWdlKiBpbWFnZSA9
IHN0YXRpY19jYXN0PFJlbmRlckltYWdlKj4ocmVuZGVyZXIpOworICAgIGlmIChpbWFnZS0+Y2Fj
aGVkSW1hZ2UoKSAmJiAhaW1hZ2UtPmNhY2hlZEltYWdlKCktPmVycm9yT2NjdXJyZWQoKSkKKyAg
ICAgICAgcmV0dXJuIGltYWdlLT5jYWNoZWRJbWFnZSgpOworCisgICAgcmV0dXJuIDA7CiB9CiAK
LXZvaWQgQ2xpcGJvYXJkR3RrOjp3cml0ZVVSTChjb25zdCBLVVJMJiwgY29uc3QgU3RyaW5nJiwg
RnJhbWUqKQordm9pZCBDbGlwYm9hcmRHdGs6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShFbGVt
ZW50KiBlbGVtZW50LCBjb25zdCBLVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbGFiZWwsIEZyYW1l
KikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIGlmICghbV9kcmFnQ2xpcGJvYXJkKQor
ICAgICAgICByZXR1cm47CisKKyAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBnZXRDYWNo
ZWRJbWFnZShlbGVtZW50KTsKKyAgICBpZiAoIWNhY2hlZEltYWdlIHx8ICFjYWNoZWRJbWFnZS0+
aXNMb2FkZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIEdka1BpeGJ1ZiogcGl4YnVmID0gY2Fj
aGVkSW1hZ2UtPmltYWdlKCktPmdldEdka1BpeGJ1ZigpOworICAgIGlmIChwaXhidWYpCisgICAg
ICAgIG1fZHJhZ0NsaXBib2FyZC0+c2V0SW1hZ2UocGl4YnVmKTs7CisKKyAgICB3cml0ZVVSTCh1
cmwsIGxhYmVsLCAwKTsKIH0KIAotdm9pZCBDbGlwYm9hcmRHdGs6OndyaXRlUmFuZ2UoUmFuZ2Uq
LCBGcmFtZSopCit2b2lkIENsaXBib2FyZEd0azo6d3JpdGVVUkwoY29uc3QgS1VSTCYgdXJsLCBj
b25zdCBTdHJpbmcmIGxhYmVsLCBGcmFtZSopCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAg
ICBpZiAoIW1fZHJhZ0NsaXBib2FyZCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9kcmFnQ2xp
cGJvYXJkLT5zZXRUZXh0KHVybC5zdHJpbmcoKSk7CisgICAgbV9kcmFnQ2xpcGJvYXJkLT5zZXRV
cmwodXJsLnN0cmluZygpKTsKKyAgICBtX2RyYWdDbGlwYm9hcmQtPnNldFVybExhYmVsKGxhYmVs
KTsKK30KKwordm9pZCBDbGlwYm9hcmRHdGs6OndyaXRlUmFuZ2UoUmFuZ2UqIHJhbmdlLCBGcmFt
ZSogZnJhbWUpCit7CisgICAgaWYgKCFtX2RyYWdDbGlwYm9hcmQpCisgICAgICAgIHJldHVybjsK
KworICAgIG1fZHJhZ0NsaXBib2FyZC0+c2V0VGV4dChmcmFtZS0+c2VsZWN0ZWRUZXh0KCkpOwor
ICAgIG1fZHJhZ0NsaXBib2FyZC0+c2V0SHRtbChjcmVhdGVNYXJrdXAocmFuZ2UsIDAsIEFubm90
YXRlRm9ySW50ZXJjaGFuZ2UpKTsKIH0KIAogYm9vbCBDbGlwYm9hcmRHdGs6Omhhc0RhdGEoKQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmggYi9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuaAppbmRleCBiOGI0ZGRmLi40ZTdlZjM4IDEwMDY0
NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuaAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuaApAQCAtMjQsMTMgKzI0LDE0IEBACiAgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgogICovCiAKLSNpZm5kZWYgQ2xpcGJvYXJkR2RrX2gKLSNkZWZpbmUgQ2xpcGJvYXJk
R2RrX2gKKyNpZm5kZWYgQ2xpcGJvYXJkR3RrX2gKKyNkZWZpbmUgQ2xpcGJvYXJkR3RrX2gKIAog
I2luY2x1ZGUgIkNsaXBib2FyZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3Mg
Q2FjaGVkSW1hZ2U7CisgICAgY2xhc3MgRHJhZ0NsaXBib2FyZDsKIAogICAgIC8vIFN0YXRlIGF2
YWlsYWJsZSBkdXJpbmcgSUUncyBldmVudHMgZm9yIGRyYWcgYW5kIGRyb3AgYW5kIGNvcHkvcGFz
dGUKICAgICAvLyBDcmVhdGVkIGZyb20gdGhlIEV2ZW50SGFuZGxlckd0ayB0byBiZSB1c2VkIGJ5
IHRoZSBkb20KQEAgLTYzLDYgKzY0LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgcHJp
dmF0ZToKICAgICAgICAgQ2xpcGJvYXJkR3RrKENsaXBib2FyZEFjY2Vzc1BvbGljeSwgYm9vbCk7
CisKKyAgICAgICAgRHJhZ0NsaXBib2FyZCogbV9kcmFnQ2xpcGJvYXJkOwogICAgIH07CiB9CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAgYi9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9EcmFnSW1hZ2VHdGsuY3BwCmluZGV4IDRkZGFlM2EuLmE4YmM3ZDMg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAKKysrIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdlR3RrLmNwcApAQCAtMTksMjEgKzE5LDMzIEBA
CiAKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIkltYWdlLmgiCisjaW5jbHVk
ZSA8Z3RrL2d0ay5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUludFNpemUgZHJhZ0ltYWdl
U2l6ZShEcmFnSW1hZ2VSZWYpCitJbnRTaXplIGRyYWdJbWFnZVNpemUoRHJhZ0ltYWdlUmVmIGlt
YWdlKQogeworICAgIGlmIChpbWFnZSkKKyAgICAgICAgcmV0dXJuIEludFNpemUoZ2RrX3BpeGJ1
Zl9nZXRfd2lkdGgoaW1hZ2UpLCBnZGtfcGl4YnVmX2dldF9oZWlnaHQoaW1hZ2UpKTsKKwogICAg
IHJldHVybiBJbnRTaXplKDAsIDApOwogfQogCi12b2lkIGRlbGV0ZURyYWdJbWFnZShEcmFnSW1h
Z2VSZWYpCit2b2lkIGRlbGV0ZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYgaW1hZ2UpCiB7CisgICAg
Z19vYmplY3RfdW5yZWYoaW1hZ2UpOwogfQogCi1EcmFnSW1hZ2VSZWYgc2NhbGVEcmFnSW1hZ2Uo
RHJhZ0ltYWdlUmVmIGltYWdlLCBGbG9hdFNpemUpCitEcmFnSW1hZ2VSZWYgc2NhbGVEcmFnSW1h
Z2UoRHJhZ0ltYWdlUmVmIGltYWdlLCBGbG9hdFNpemUgc2NhbGUpCiB7Ci0gICAgcmV0dXJuIGlt
YWdlOworICAgIGlmIChpbWFnZSkgeworICAgICAgICBJbnRTaXplIGltYWdlU2l6ZSA9IGRyYWdJ
bWFnZVNpemUoaW1hZ2UpOworICAgICAgICBHZGtQaXhidWYqIHNjYWxlZEltYWdlID0gZ2RrX3Bp
eGJ1Zl9zY2FsZV9zaW1wbGUoaW1hZ2UsIGltYWdlU2l6ZS53aWR0aCgpICogc2NhbGUud2lkdGgo
KSwgaW1hZ2VTaXplLmhlaWdodCgpICogc2NhbGUuaGVpZ2h0KCksIEdES19JTlRFUlBfQklMSU5F
QVIpOworICAgICAgICBkZWxldGVEcmFnSW1hZ2UoaW1hZ2UpOworICAgICAgICByZXR1cm4gc2Nh
bGVkSW1hZ2U7CisgICAgfQorCisgICAgcmV0dXJuIDA7CiB9CiAKIERyYWdJbWFnZVJlZiBkaXNz
b2x2ZURyYWdJbWFnZVRvRnJhY3Rpb24oRHJhZ0ltYWdlUmVmIGltYWdlLCBmbG9hdCkKQEAgLTQx
LDkgKzUzLDkgQEAgRHJhZ0ltYWdlUmVmIGRpc3NvbHZlRHJhZ0ltYWdlVG9GcmFjdGlvbihEcmFn
SW1hZ2VSZWYgaW1hZ2UsIGZsb2F0KQogICAgIHJldHVybiBpbWFnZTsKIH0KIAotRHJhZ0ltYWdl
UmVmIGNyZWF0ZURyYWdJbWFnZUZyb21JbWFnZShJbWFnZSopCitEcmFnSW1hZ2VSZWYgY3JlYXRl
RHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKiBpbWFnZSkKIHsKLSAgICByZXR1cm4gMDsKKyAgICBy
ZXR1cm4gaW1hZ2UtPmdldEdka1BpeGJ1ZigpOwogfQogCiBEcmFnSW1hZ2VSZWYgY3JlYXRlRHJh
Z0ltYWdlSWNvbkZvckNhY2hlZEltYWdlKENhY2hlZEltYWdlKikKZGlmZiAtLWdpdCBhL1dlYktp
dC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggODk2NDUxNC4uNmFi
N2UyOCAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2d0ay9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAwOS0wNC0yNSAgWmFuIERvYmVyc2VrICA8emFu
ZG9iZXJzZWtAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY0
MgorICAgICAgICBBZGQgc3VwcG9ydCBmb3IgZHJhZyBhY3Rpb25zLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRHJhZ0NsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkRyYWdDbGll
bnQ6OkRyYWdDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpEcmFnQ2xpZW50Ojp3aWxsUGVyZm9y
bURyYWdTb3VyY2VBY3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpEcmFnQ2xpZW50OjpzdGFydERy
YWcpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRHdGsuaDoKKyAgICAgICAg
KiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZp
ZXcuaDoKKwogMjAwOS0wNC0yNCAgQ2hyaXN0aWFuIER5d2FuICA8Y2hyaXN0aWFuQHR3b3RvYXN0
cy5kZT4KIAogICAgICAgICBSdWJiZXItc3RhbXBlZCBieSBHdXN0YXZvIE5vcm9uaGEuCmRpZmYg
LS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRHdGsuY3BwIGIvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3RrLmNwcAppbmRleCBmNTViNmVhLi40
MzJhMjMyIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRH
dGsuY3BwCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudEd0ay5jcHAK
QEAgLTE3LDIwICsxNywzMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkRyYWdD
bGllbnRHdGsuaCIKIAorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRWxlbWVudC5o
IgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0Lmgi
CisjaW5jbHVkZSAid2Via2l0cHJpdmF0ZS5oIgorCisjaW5jbHVkZSA8Z3RrL2d0ay5oPgogCiB1
c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK0RyYWdDbGll
bnQ6OkRyYWdDbGllbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKKyAgICA6IG1fd2ViVmlldyh3
ZWJWaWV3KQorICAgICwgbV9zdGFydFBvcygwLCAwKQoreworfQorCiB2b2lkIERyYWdDbGllbnQ6
OndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKERyYWdEZXN0aW5hdGlvbkFjdGlvbiwg
RHJhZ0RhdGEqKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRHJhZ0NsaWVu
dDo6d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb24sIGNvbnN0IElu
dFBvaW50JiwgQ2xpcGJvYXJkKikKK3ZvaWQgRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1EcmFnU291
cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb24sIGNvbnN0IEludFBvaW50JiBzdGFydFBvcywgQ2xp
cGJvYXJkKikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fc3RhcnRQb3MgPSBzdGFy
dFBvczsKIH0KIAogRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIERyYWdDbGllbnQ6OmFjdGlvbk1hc2tG
b3JEcmFnKERyYWdEYXRhKikKQEAgLTQ1LDkgKzU3LDYwIEBAIERyYWdTb3VyY2VBY3Rpb24gRHJh
Z0NsaWVudDo6ZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBJbnRQb2ludCYpCiAg
ICAgcmV0dXJuIERyYWdTb3VyY2VBY3Rpb25Bbnk7CiB9CiAKLXZvaWQgRHJhZ0NsaWVudDo6c3Rh
cnREcmFnKERyYWdJbWFnZVJlZiwgY29uc3QgSW50UG9pbnQmLCBjb25zdCBJbnRQb2ludCYsIENs
aXBib2FyZCosIEZyYW1lKiwgYm9vbCkKK3ZvaWQgRHJhZ0NsaWVudDo6c3RhcnREcmFnKERyYWdJ
bWFnZVJlZiBpbWFnZSwgY29uc3QgSW50UG9pbnQmIGRyYWdJbWFnZU9yaWdpbiwgY29uc3QgSW50
UG9pbnQmIGV2ZW50UG9zLCBDbGlwYm9hcmQqLCBGcmFtZSosIGJvb2wpCiB7Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKKyAgICBGcmFtZSogZm9jdXNlZEZyYW1lID0gY29yZSh3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X2ZvY3VzZWRfZnJhbWUobV93ZWJWaWV3KSk7CisgICAgRWxlbWVudCogdGFyZ2V0RWxl
bWVudCA9IGZvY3VzZWRGcmFtZS0+ZG9jdW1lbnQoKS0+ZWxlbWVudEZyb21Qb2ludChtX3N0YXJ0
UG9zLngoKSwgbV9zdGFydFBvcy55KCkpOworICAgIGJvb2wgaXNFbGVtZW50TGluayA9IGZhbHNl
OworICAgIGJvb2wgaXNFbGVtZW50SW1hZ2UgPSBmYWxzZTsKKworICAgIGlmICh0YXJnZXRFbGVt
ZW50KSB7CisgICAgICAgIGlzRWxlbWVudEltYWdlID0gdGFyZ2V0RWxlbWVudC0+cmVuZGVyZXIo
KS0+aXNJbWFnZSgpOworCisgICAgICAgIE5vZGUqIHRhcmdldE5vZGUgPSBzdGF0aWNfY2FzdDxO
b2RlKj4odGFyZ2V0RWxlbWVudCk7CisgICAgICAgIGZvciAoTm9kZSogcCA9IHRhcmdldE5vZGU7
IHA7IHAgPSBwLT5wYXJlbnROb2RlKCkpIHsKKyAgICAgICAgICAgIGlmIChwLT5pc0xpbmsoKSkg
eworICAgICAgICAgICAgICAgIGlzRWxlbWVudExpbmsgPSB0cnVlOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgR2RrQXRvbSB0
ZXh0SHRtbCA9IGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJ0ZXh0L2h0bWwiKTsKKyAg
ICBHZGtBdG9tIG5ldHNjYXBlVXJsID0gZ2RrX2F0b21faW50ZXJuX3N0YXRpY19zdHJpbmcoIl9O
RVRTQ0FQRV9VUkwiKTsKKworICAgIEd0a1RhcmdldExpc3QqIHRhcmdldExpc3QgPSBndGtfdGFy
Z2V0X2xpc3RfbmV3KE5VTEwsIDApOworICAgIGd0a190YXJnZXRfbGlzdF9hZGQodGFyZ2V0TGlz
dCwgdGV4dEh0bWwsIDAsIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19IVE1MKTsKKyAgICBn
dGtfdGFyZ2V0X2xpc3RfYWRkX3RleHRfdGFyZ2V0cyh0YXJnZXRMaXN0LCBXRUJLSVRfV0VCX1ZJ
RVdfVEFSR0VUX0lORk9fVEVYVCk7CisKKyAgICBpZiAoaXNFbGVtZW50TGluayB8fCBpc0VsZW1l
bnRJbWFnZSkgeworICAgICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKHRhcmdldExpc3QsIG5ldHNj
YXBlVXJsLCAwLCBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fTkVUU0NBUEVfVVJMKTsKKyAg
ICAgICAgZ3RrX3RhcmdldF9saXN0X2FkZF91cmlfdGFyZ2V0cyh0YXJnZXRMaXN0LCBXRUJLSVRf
V0VCX1ZJRVdfVEFSR0VUX0lORk9fVVJJX0xJU1QpOworICAgIH0KKworICAgIGlmIChpc0VsZW1l
bnRJbWFnZSkKKyAgICAgICAgZ3RrX3RhcmdldF9saXN0X2FkZF9pbWFnZV90YXJnZXRzKHRhcmdl
dExpc3QsIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19JTUFHRSwgZmFsc2UpOworCisgICAg
R2RrRHJhZ0FjdGlvbiBkcmFnQWN0aW9uID0gR0RLX0FDVElPTl9DT1BZOworICAgIGlmIChpc0Vs
ZW1lbnRMaW5rKSB7CisgICAgICAgIGRyYWdBY3Rpb24gPSBHREtfQUNUSU9OX0xJTks7CisgICAg
ICAgIGlmIChpc0VsZW1lbnRJbWFnZSkKKyAgICAgICAgICAgIGRyYWdBY3Rpb24gPSAoR2RrRHJh
Z0FjdGlvbikoZHJhZ0FjdGlvbiB8IEdES19BQ1RJT05fQ09QWSk7CisgICAgfQorCisgICAgR2Rr
RXZlbnQqIGV2ZW50ID0gZ2RrX2V2ZW50X25ldyhHREtfQlVUVE9OX1BSRVNTKTsKKyAgICByZWlu
dGVycHJldF9jYXN0PEdka0V2ZW50QnV0dG9uKj4oZXZlbnQpLT53aW5kb3cgPSBndGtfd2lkZ2V0
X2dldF93aW5kb3coR1RLX1dJREdFVChtX3dlYlZpZXcpKTsKKyAgICByZWludGVycHJldF9jYXN0
PEdka0V2ZW50QnV0dG9uKj4oZXZlbnQpLT50aW1lID0gR0RLX0NVUlJFTlRfVElNRTsKKworICAg
IEdka0RyYWdDb250ZXh0KiBjb250ZXh0ID0gZ3RrX2RyYWdfYmVnaW4oR1RLX1dJREdFVChtX3dl
YlZpZXcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFy
Z2V0TGlzdCwgZHJhZ0FjdGlvbiwgMSwgZXZlbnQpOworCisgICAgaWYgKGltYWdlKQorICAgICAg
ICBndGtfZHJhZ19zZXRfaWNvbl9waXhidWYoY29udGV4dCwgaW1hZ2UsIGV2ZW50UG9zLngoKSAt
IGRyYWdJbWFnZU9yaWdpbi54KCksIGV2ZW50UG9zLnkoKSAtIGRyYWdJbWFnZU9yaWdpbi55KCkp
OworICAgIGVsc2UKKyAgICAgICAgZ3RrX2RyYWdfc2V0X2ljb25fZGVmYXVsdChjb250ZXh0KTsK
KworICAgIGd0a190YXJnZXRfbGlzdF91bnJlZih0YXJnZXRMaXN0KTsKIH0KIAogRHJhZ0ltYWdl
UmVmIERyYWdDbGllbnQ6OmNyZWF0ZURyYWdJbWFnZUZvckxpbmsoS1VSTCYsIGNvbnN0IFN0cmlu
ZyYgbGFiZWwsIEZyYW1lKikKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RHJhZ0NsaWVudEd0ay5oIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3Rr
LmgKaW5kZXggNDM2N2M2OC4uMDFmMzQ4ZCAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9EcmFnQ2xpZW50R3RrLmgKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9E
cmFnQ2xpZW50R3RrLmgKQEAgLTMyLDkgKzMyLDE4IEBACiAKICNpbmNsdWRlICJEcmFnQ2xpZW50
LmgiCiAKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3IFdlYktpdFdlYlZpZXc7CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKyAgICBjbGFzcyBJbnRQb2ludDsKK30KKwogbmFtZXNwYWNlIFdl
YktpdCB7CisKICAgICBjbGFzcyBEcmFnQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkRyYWdDbGll
bnQgewogICAgIHB1YmxpYzoKKyAgICAgICAgRHJhZ0NsaWVudChXZWJLaXRXZWJWaWV3Kik7CisK
ICAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKFdl
YkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiwgV2ViQ29yZTo6RHJhZ0RhdGEqKTsKICAgICAg
ICAgdmlydHVhbCB2b2lkIHdpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihXZWJDb3JlOjpEcmFn
U291cmNlQWN0aW9uLCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIFdlYkNvcmU6OkNsaXBib2Fy
ZCopOwogICAgICAgICB2aXJ0dWFsIFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBhY3Rp
b25NYXNrRm9yRHJhZyhXZWJDb3JlOjpEcmFnRGF0YSopOwpAQCAtNDUsNiArNTQsMTEgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgV2ViQ29yZTo6RHJhZ0ltYWdlUmVmIGNy
ZWF0ZURyYWdJbWFnZUZvckxpbmsoV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFdlYkNvcmU6OlN0cmlu
ZyYgbGFiZWwsIFdlYkNvcmU6OkZyYW1lKik7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRyYWdD
b250cm9sbGVyRGVzdHJveWVkKCk7CisKKyAgICBwcml2YXRlOgorICAgICAgICBXZWJLaXRXZWJW
aWV3KiBtX3dlYlZpZXc7CisKKyAgICAgICAgV2ViQ29yZTo6SW50UG9pbnQgbV9zdGFydFBvczsK
ICAgICB9OwogfQogCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3
LmNwcCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCmluZGV4IDE1MjRlYmIu
LjBjMDVlN2QgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3Bw
CisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCkBAIC00Nyw2ICs0Nyw3
IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudExvYWRlci5oIgog
I2luY2x1ZGUgIkRyYWdDbGllbnRHdGsuaCIKKyNpbmNsdWRlICJEcmFnQ2xpcGJvYXJkLmgiCiAj
aW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVkZSAiRWRpdG9yQ2xpZW50R3RrLmgiCiAjaW5jbHVk
ZSAiRXZlbnRIYW5kbGVyLmgiCkBAIC0xMDEzLDYgKzEwMTQsNTQgQEAgc3RhdGljIHZvaWQgd2Vi
a2l0X3dlYl92aWV3X3NjcmVlbl9jaGFuZ2VkKEd0a1dpZGdldCogd2lkZ2V0LCBHZGtTY3JlZW4q
IHByZXZpb3UKICAgICBzZXR0aW5ncy0+c2V0TWluaW11bUxvZ2ljYWxGb250U2l6ZShtaW5pbXVt
TG9naWNhbEZvbnRTaXplIC8gNzIuMCAqIERQSSk7CiB9CiAKK3N0YXRpYyB2b2lkIHdlYmtpdF93
ZWJfdmlld19kcmFnX2VuZChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRHJhZ0NvbnRleHQqIGNvbnRl
eHQpCit7CisgICAgRHJhZ0NsaXBib2FyZDo6Y2xpcGJvYXJkKCktPnJlc2V0Q2xpcGJvYXJkKCk7
Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19kcmFnX2RhdGFfZ2V0KEd0a1dpZGdl
dCogd2lkZ2V0LCBHZGtEcmFnQ29udGV4dCogY29udGV4dCwgR3RrU2VsZWN0aW9uRGF0YSogc2Vs
ZWN0aW9uX2RhdGEsIGd1aW50IGluZm8sIGd1aW50IHRpbWVfKQoreworICAgIERyYWdDbGlwYm9h
cmQqIGNsaXBib2FyZCA9IERyYWdDbGlwYm9hcmQ6OmNsaXBib2FyZCgpOworICAgIGNoYXIqIGRh
dGE7CisKKyAgICBzd2l0Y2ggKGluZm8pIHsKKyAgICBjYXNlIFdFQktJVF9XRUJfVklFV19UQVJH
RVRfSU5GT19IVE1MOgorICAgICAgICBkYXRhID0gZ19zdHJkdXAoKGNsaXBib2FyZC0+aHRtbCgp
LmlzRW1wdHkoKSB8fCBjbGlwYm9hcmQtPmh0bWwoKS5pc051bGwoKSkKKyAgICAgICAgICAgICAg
ICAgICAgICAgID8gY2xpcGJvYXJkLT50ZXh0KCkudXRmOCgpLmRhdGEoKSA6IGNsaXBib2FyZC0+
aHRtbCgpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0KHNl
bGVjdGlvbl9kYXRhLCBzZWxlY3Rpb25fZGF0YS0+dGFyZ2V0LCA4LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Z3VjaGFyKj4oZGF0YSksIHN0cmxlbihk
YXRhKSk7CisgICAgICAgIGdfZnJlZShkYXRhKTsKKyAgICAgICAgcmV0dXJuOworICAgIGNhc2Ug
V0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX1RFWFQ6CisgICAgICAgIGRhdGEgPSBnX3N0cmR1
cChjbGlwYm9hcmQtPnRleHQoKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgZ3RrX3NlbGVjdGlv
bl9kYXRhX3NldChzZWxlY3Rpb25fZGF0YSwgc2VsZWN0aW9uX2RhdGEtPnRhcmdldCwgOCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGd1Y2hhcio+KGRh
dGEpLCBzdHJsZW4oZGF0YSkpOworICAgICAgICBnX2ZyZWUoZGF0YSk7CisgICAgICAgIHJldHVy
bjsKKyAgICBjYXNlIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19JTUFHRToKKyAgICAgICAg
Z3RrX3NlbGVjdGlvbl9kYXRhX3NldF9waXhidWYoc2VsZWN0aW9uX2RhdGEsIGNsaXBib2FyZC0+
aW1hZ2UoKSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFdFQktJVF9XRUJfVklFV19UQVJH
RVRfSU5GT19VUklfTElTVDoKKyAgICAgICAgZGF0YSA9IGdfc3RyZHVwX3ByaW50ZigiJXNcclxu
JXNcclxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwYm9hcmQtPnVybCgp
LnV0ZjgoKS5kYXRhKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaXBib2Fy
ZC0+dXJsTGFiZWwoKS5pc0VtcHR5KCkgfHwgY2xpcGJvYXJkLT51cmxMYWJlbCgpLmlzTnVsbCgp
KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gY2xpcGJvYXJkLT51cmwoKS51dGY4
KCkuZGF0YSgpIDogY2xpcGJvYXJkLT51cmxMYWJlbCgpLnV0ZjgoKS5kYXRhKCkpOworICAgICAg
ICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0KHNlbGVjdGlvbl9kYXRhLCBzZWxlY3Rpb25fZGF0YS0+
dGFyZ2V0LCA4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nh
c3Q8Z3VjaGFyKj4oZGF0YSksIHN0cmxlbihkYXRhKSk7CisgICAgICAgIGdfZnJlZShkYXRhKTsK
KyAgICAgICAgcmV0dXJuOworICAgIGNhc2UgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX05F
VFNDQVBFX1VSTDoKKyAgICAgICAgZGF0YSA9IGdfc3RyZHVwX3ByaW50ZigiJXNcbiVzIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwYm9hcmQtPnVybCgpLnV0ZjgoKS5kYXRh
KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaXBib2FyZC0+dXJsTGFiZWwo
KS5pc0VtcHR5KCkgfHwgY2xpcGJvYXJkLT51cmxMYWJlbCgpLmlzTnVsbCgpKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID8gY2xpcGJvYXJkLT51cmwoKS51dGY4KCkuZGF0YSgpIDog
Y2xpcGJvYXJkLT51cmxMYWJlbCgpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBndGtfc2VsZWN0
aW9uX2RhdGFfc2V0KHNlbGVjdGlvbl9kYXRhLCBzZWxlY3Rpb25fZGF0YS0+dGFyZ2V0LCA4LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Z3VjaGFyKj4o
ZGF0YSksIHN0cmxlbihkYXRhKSk7CisgICAgICAgIGdfZnJlZShkYXRhKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KK30KKwogc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQo
V2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiB7CiAgICAgR3RrQmluZGluZ1NldCog
YmluZGluZ19zZXQ7CkBAIC0xNjQyLDYgKzE2OTEsOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2Vi
X3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKICAgICB3
aWRnZXRDbGFzcy0+Zm9jdXNfb3V0X2V2ZW50ID0gd2Via2l0X3dlYl92aWV3X2ZvY3VzX291dF9l
dmVudDsKICAgICB3aWRnZXRDbGFzcy0+Z2V0X2FjY2Vzc2libGUgPSB3ZWJraXRfd2ViX3ZpZXdf
Z2V0X2FjY2Vzc2libGU7CiAgICAgd2lkZ2V0Q2xhc3MtPnNjcmVlbl9jaGFuZ2VkID0gd2Via2l0
X3dlYl92aWV3X3NjcmVlbl9jaGFuZ2VkOworICAgIHdpZGdldENsYXNzLT5kcmFnX2VuZCA9IHdl
YmtpdF93ZWJfdmlld19kcmFnX2VuZDsKKyAgICB3aWRnZXRDbGFzcy0+ZHJhZ19kYXRhX2dldCA9
IHdlYmtpdF93ZWJfdmlld19kcmFnX2RhdGFfZ2V0OwogCiAgICAgR3RrQ29udGFpbmVyQ2xhc3Mq
IGNvbnRhaW5lckNsYXNzID0gR1RLX0NPTlRBSU5FUl9DTEFTUyh3ZWJWaWV3Q2xhc3MpOwogICAg
IGNvbnRhaW5lckNsYXNzLT5hZGQgPSB3ZWJraXRfd2ViX3ZpZXdfY29udGFpbmVyX2FkZDsKQEAg
LTIwMjgsNyArMjA3OSw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19pbml0KFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgcHJpdi0+aW1Db250ZXh0ID0gZ3RrX2ltX211bHRpY29u
dGV4dF9uZXcoKTsKIAogICAgIFdlYktpdDo6SW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDbGll
bnQgPSBuZXcgV2ViS2l0OjpJbnNwZWN0b3JDbGllbnQod2ViVmlldyk7Ci0gICAgcHJpdi0+Y29y
ZVBhZ2UgPSBuZXcgUGFnZShuZXcgV2ViS2l0OjpDaHJvbWVDbGllbnQod2ViVmlldyksIG5ldyBX
ZWJLaXQ6OkNvbnRleHRNZW51Q2xpZW50KHdlYlZpZXcpLCBuZXcgV2ViS2l0OjpFZGl0b3JDbGll
bnQod2ViVmlldyksIG5ldyBXZWJLaXQ6OkRyYWdDbGllbnQsIGluc3BlY3RvckNsaWVudCk7Cisg
ICAgcHJpdi0+Y29yZVBhZ2UgPSBuZXcgUGFnZShuZXcgV2ViS2l0OjpDaHJvbWVDbGllbnQod2Vi
VmlldyksIG5ldyBXZWJLaXQ6OkNvbnRleHRNZW51Q2xpZW50KHdlYlZpZXcpLCBuZXcgV2ViS2l0
OjpFZGl0b3JDbGllbnQod2ViVmlldyksIG5ldyBXZWJLaXQ6OkRyYWdDbGllbnQod2ViVmlldyks
IGluc3BlY3RvckNsaWVudCk7CiAKICAgICAvLyBXZSBhbHNvIGFkZCBhIHNpbXBsZSB3cmFwcGVy
IGNsYXNzIHRvIHByb3ZpZGUgdGhlIHB1YmxpYwogICAgIC8vIGludGVyZmFjZSBmb3IgdGhlIFdl
YiBJbnNwZWN0b3IuCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3
LmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgKaW5kZXggNjExNTQ0ZC4uZDlh
NGYyNSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCisrKyBi
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaApAQCAtNTEsNyArNTEsMTAgQEAgdHlw
ZWRlZiBlbnVtIHsKIHR5cGVkZWYgZW51bQogewogICAgIFdFQktJVF9XRUJfVklFV19UQVJHRVRf
SU5GT19IVE1MLAotICAgIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19URVhUCisgICAgV0VC
S0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX1RFWFQsCisgICAgV0VCS0lUX1dFQl9WSUVXX1RBUkdF
VF9JTkZPX0lNQUdFLAorICAgIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19VUklfTElTVCwK
KyAgICBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fTkVUU0NBUEVfVVJMCiB9IFdlYktpdFdl
YlZpZXdUYXJnZXRJbmZvOwogCiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXcgewo=
</data>
<flag name="review"
          id="14911"
          type_id="1"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32067</attachid>
            <date>2009-06-30 08:18:39 -0700</date>
            <delta_ts>2009-06-30 19:19:26 -0700</delta_ts>
            <desc>First patch</desc>
            <filename>dnd-r.1.diff</filename>
            <type>text/plain</type>
            <size>3137</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZjczYjQ4Yy4uYWIzMzA1NyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAwOS0wNi0zMCAgWmFuIERvYmVyc2Vr
ICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE5vIHRlc3QgY2FzZXMgcmVxdWlyZWQuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjQyCisgICAgICAgIERlZmlu
ZSBEcmFnSW1hZ2VSZWYgYXMgR2RrUGl4YnVmIGFuZCBpbXBsZW1lbnQgZXNzZW50aWFsCisgICAg
ICAgIGZ1bmN0aW9ucyB3aGljaCBtYW5pcHVsYXRlIGRyYWcgaW1hZ2VzLgorCisgICAgICAgICog
cGxhdGZvcm0vRHJhZ0ltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkcmFnSW1hZ2VTaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OmRlbGV0ZURyYWdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpzY2FsZURyYWdJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorCiAyMDA5LTA2
LTMwICBBZHJpZW4gTmFkZXIgIDxjYW1hcmFkZXR1eEBnbWFpbC5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgWGFuIExvcGV6LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1h
Z2UuaCBiL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmgKaW5kZXggNzQ0ZTQ1MC4uYTkwMzlk
YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaAorKysgYi9XZWJDb3Jl
L3BsYXRmb3JtL0RyYWdJbWFnZS5oCkBAIC00Niw2ICs0Niw4IEBAIHR5cGVkZWYgc3RydWN0IEhC
SVRNQVBfXyogSEJJVE1BUDsKIGNsYXNzIHd4RHJhZ0ltYWdlOwogI2VsaWYgUExBVEZPUk0oQ0hS
T01JVU0pCiAjaW5jbHVkZSAiRHJhZ0ltYWdlUmVmLmgiCisjZWxpZiBQTEFURk9STShHVEspCit0
eXBlZGVmIHN0cnVjdCBfR2RrUGl4YnVmIEdka1BpeGJ1ZjsKICNlbmRpZgogCiAvL1dlIG5lZWQg
dG8gI2RlZmluZSBZT2Zmc2V0IGFzIGl0IG5lZWRzIHRvIGJlIHNoYXJlZCB3aXRoIFdlYktpdApA
QCAtNjksNyArNzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZWxpZiBQTEFURk9STShXWCkK
ICAgICB0eXBlZGVmIHd4RHJhZ0ltYWdlKiBEcmFnSW1hZ2VSZWY7CiAjZWxpZiBQTEFURk9STShH
VEspCi0gICAgdHlwZWRlZiB2b2lkKiBEcmFnSW1hZ2VSZWY7CisgICAgdHlwZWRlZiBHZGtQaXhi
dWYqIERyYWdJbWFnZVJlZjsKICNlbmRpZgogICAgIAogICAgIEludFNpemUgZHJhZ0ltYWdlU2l6
ZShEcmFnSW1hZ2VSZWYpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0lt
YWdlR3RrLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAKaW5kZXgg
NGRkYWUzYS4uOWM1NWI4NiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0lt
YWdlR3RrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnSW1hZ2VHdGsuY3BwCkBA
IC0yMCwyMCArMjAsMzYgQEAKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIklt
YWdlLmgiCiAKKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
SW50U2l6ZSBkcmFnSW1hZ2VTaXplKERyYWdJbWFnZVJlZikKK0ludFNpemUgZHJhZ0ltYWdlU2l6
ZShEcmFnSW1hZ2VSZWYgaW1hZ2UpCiB7CisgICAgaWYgKGltYWdlKQorICAgICAgICByZXR1cm4g
SW50U2l6ZShnZGtfcGl4YnVmX2dldF93aWR0aChpbWFnZSksIGdka19waXhidWZfZ2V0X2hlaWdo
dChpbWFnZSkpOworCiAgICAgcmV0dXJuIEludFNpemUoMCwgMCk7CiB9CiAKLXZvaWQgZGVsZXRl
RHJhZ0ltYWdlKERyYWdJbWFnZVJlZikKK3ZvaWQgZGVsZXRlRHJhZ0ltYWdlKERyYWdJbWFnZVJl
ZiBpbWFnZSkKIHsKKyAgICBnX29iamVjdF91bnJlZihpbWFnZSk7CiB9CiAKLURyYWdJbWFnZVJl
ZiBzY2FsZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYgaW1hZ2UsIEZsb2F0U2l6ZSkKK0RyYWdJbWFn
ZVJlZiBzY2FsZURyYWdJbWFnZShEcmFnSW1hZ2VSZWYgaW1hZ2UsIEZsb2F0U2l6ZSBzY2FsZSkK
IHsKLSAgICByZXR1cm4gaW1hZ2U7CisgICAgaWYgKGltYWdlKSB7CisgICAgICAgIEludFNpemUg
aW1hZ2VTaXplID0gZHJhZ0ltYWdlU2l6ZShpbWFnZSk7CisgICAgICAgIEdka1BpeGJ1Ziogc2Nh
bGVkSW1hZ2UgPSBnZGtfcGl4YnVmX3NjYWxlX3NpbXBsZShpbWFnZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlU2l6ZS53aWR0
aCgpICogc2NhbGUud2lkdGgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGltYWdlU2l6ZS5oZWlnaHQoKSAqIHNjYWxlLmhlaWdodCgp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR0RLX0lOVEVSUF9CSUxJTkVBUik7CisgICAgICAgIGRlbGV0ZURyYWdJbWFnZShpbWFnZSk7
CisgICAgICAgIHJldHVybiBzY2FsZWRJbWFnZTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKIH0K
IAogRHJhZ0ltYWdlUmVmIGRpc3NvbHZlRHJhZ0ltYWdlVG9GcmFjdGlvbihEcmFnSW1hZ2VSZWYg
aW1hZ2UsIGZsb2F0KQpAQCAtNDEsOSArNTcsOSBAQCBEcmFnSW1hZ2VSZWYgZGlzc29sdmVEcmFn
SW1hZ2VUb0ZyYWN0aW9uKERyYWdJbWFnZVJlZiBpbWFnZSwgZmxvYXQpCiAgICAgcmV0dXJuIGlt
YWdlOwogfQogCi1EcmFnSW1hZ2VSZWYgY3JlYXRlRHJhZ0ltYWdlRnJvbUltYWdlKEltYWdlKikK
K0RyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqIGltYWdlKQogewot
ICAgIHJldHVybiAwOworICAgIHJldHVybiBpbWFnZS0+Z2V0R2RrUGl4YnVmKCk7CiB9CiAKIERy
YWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VJY29uRm9yQ2FjaGVkSW1hZ2UoQ2FjaGVkSW1hZ2Uq
KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32089</attachid>
            <date>2009-06-30 13:42:09 -0700</date>
            <delta_ts>2009-06-30 19:17:22 -0700</delta_ts>
            <desc>First patch, updated</desc>
            <filename>dnd-r.1.diff</filename>
            <type>text/plain</type>
            <size>3160</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZmFhNmY3Zi4uNDUxN2FhMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAwOS0wNi0zMCAgWmFuIERvYmVyc2Vr
ICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE5vIHRlc3QgY2FzZXMgcmVxdWlyZWQuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjQyCisgICAgICAgIERlZmlu
ZSBEcmFnSW1hZ2VSZWYgYXMgR2RrUGl4YnVmIGFuZCBpbXBsZW1lbnQgZXNzZW50aWFsCisgICAg
ICAgIGZ1bmN0aW9ucyB3aGljaCBtYW5pcHVsYXRlIGRyYWcgaW1hZ2VzLgorCisgICAgICAgICog
cGxhdGZvcm0vRHJhZ0ltYWdlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0
ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkcmFnSW1hZ2VTaXplKToKKyAgICAgICAgKFdlYkNv
cmU6OmRlbGV0ZURyYWdJbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpzY2FsZURyYWdJbWFnZSk6
CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVEcmFnSW1hZ2VGcm9tSW1hZ2UpOgorCiAyMDA5LTA2
LTMwICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZp
ZXdlZCBieSBEYW4gQmVybnN0ZWluLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9EcmFn
SW1hZ2UuaCBiL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdlLmgKaW5kZXggNzQ0ZTQ1MC4uYTkw
MzlkYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuaAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL0RyYWdJbWFnZS5oCkBAIC00Niw2ICs0Niw4IEBAIHR5cGVkZWYgc3RydWN0
IEhCSVRNQVBfXyogSEJJVE1BUDsKIGNsYXNzIHd4RHJhZ0ltYWdlOwogI2VsaWYgUExBVEZPUk0o
Q0hST01JVU0pCiAjaW5jbHVkZSAiRHJhZ0ltYWdlUmVmLmgiCisjZWxpZiBQTEFURk9STShHVEsp
Cit0eXBlZGVmIHN0cnVjdCBfR2RrUGl4YnVmIEdka1BpeGJ1ZjsKICNlbmRpZgogCiAvL1dlIG5l
ZWQgdG8gI2RlZmluZSBZT2Zmc2V0IGFzIGl0IG5lZWRzIHRvIGJlIHNoYXJlZCB3aXRoIFdlYktp
dApAQCAtNjksNyArNzEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAjZWxpZiBQTEFURk9STShX
WCkKICAgICB0eXBlZGVmIHd4RHJhZ0ltYWdlKiBEcmFnSW1hZ2VSZWY7CiAjZWxpZiBQTEFURk9S
TShHVEspCi0gICAgdHlwZWRlZiB2b2lkKiBEcmFnSW1hZ2VSZWY7CisgICAgdHlwZWRlZiBHZGtQ
aXhidWYqIERyYWdJbWFnZVJlZjsKICNlbmRpZgogICAgIAogICAgIEludFNpemUgZHJhZ0ltYWdl
U2l6ZShEcmFnSW1hZ2VSZWYpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJh
Z0ltYWdlR3RrLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdJbWFnZUd0ay5jcHAKaW5k
ZXggNGRkYWUzYS4uNGM3NzgzMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJh
Z0ltYWdlR3RrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnSW1hZ2VHdGsuY3Bw
CkBAIC0yMCwyMCArMjAsMzcgQEAKICNpbmNsdWRlICJDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUg
IkltYWdlLmgiCiAKKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotSW50U2l6ZSBkcmFnSW1hZ2VTaXplKERyYWdJbWFnZVJlZikKK0ludFNpemUgZHJhZ0ltYWdl
U2l6ZShEcmFnSW1hZ2VSZWYgaW1hZ2UpCiB7CisgICAgaWYgKGltYWdlKQorICAgICAgICByZXR1
cm4gSW50U2l6ZShnZGtfcGl4YnVmX2dldF93aWR0aChpbWFnZSksIGdka19waXhidWZfZ2V0X2hl
aWdodChpbWFnZSkpOworCiAgICAgcmV0dXJuIEludFNpemUoMCwgMCk7CiB9CiAKLXZvaWQgZGVs
ZXRlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZikKK3ZvaWQgZGVsZXRlRHJhZ0ltYWdlKERyYWdJbWFn
ZVJlZiBpbWFnZSkKIHsKKyAgICBpZiAoaW1hZ2UpCisgICAgICAgIGdfb2JqZWN0X3VucmVmKGlt
YWdlKTsKIH0KIAotRHJhZ0ltYWdlUmVmIHNjYWxlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZiBpbWFn
ZSwgRmxvYXRTaXplKQorRHJhZ0ltYWdlUmVmIHNjYWxlRHJhZ0ltYWdlKERyYWdJbWFnZVJlZiBp
bWFnZSwgRmxvYXRTaXplIHNjYWxlKQogewotICAgIHJldHVybiBpbWFnZTsKKyAgICBpZiAoaW1h
Z2UpIHsKKyAgICAgICAgSW50U2l6ZSBpbWFnZVNpemUgPSBkcmFnSW1hZ2VTaXplKGltYWdlKTsK
KyAgICAgICAgR2RrUGl4YnVmKiBzY2FsZWRJbWFnZSA9IGdka19waXhidWZfc2NhbGVfc2ltcGxl
KGltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW1hZ2VTaXplLndpZHRoKCkgKiBzY2FsZS53aWR0aCgpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VTaXplLmhl
aWdodCgpICogc2NhbGUuaGVpZ2h0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBHREtfSU5URVJQX0JJTElORUFSKTsKKyAgICAgICAg
ZGVsZXRlRHJhZ0ltYWdlKGltYWdlKTsKKyAgICAgICAgcmV0dXJuIHNjYWxlZEltYWdlOworICAg
IH0KKworICAgIHJldHVybiAwOwogfQogCiBEcmFnSW1hZ2VSZWYgZGlzc29sdmVEcmFnSW1hZ2VU
b0ZyYWN0aW9uKERyYWdJbWFnZVJlZiBpbWFnZSwgZmxvYXQpCkBAIC00MSw5ICs1OCw5IEBAIERy
YWdJbWFnZVJlZiBkaXNzb2x2ZURyYWdJbWFnZVRvRnJhY3Rpb24oRHJhZ0ltYWdlUmVmIGltYWdl
LCBmbG9hdCkKICAgICByZXR1cm4gaW1hZ2U7CiB9CiAKLURyYWdJbWFnZVJlZiBjcmVhdGVEcmFn
SW1hZ2VGcm9tSW1hZ2UoSW1hZ2UqKQorRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZyb21J
bWFnZShJbWFnZSogaW1hZ2UpCiB7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGltYWdlLT5n
ZXRHZGtQaXhidWYoKTsKIH0KIAogRHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUljb25Gb3JD
YWNoZWRJbWFnZShDYWNoZWRJbWFnZSopCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32091</attachid>
            <date>2009-06-30 13:53:05 -0700</date>
            <delta_ts>2009-07-26 12:28:35 -0700</delta_ts>
            <desc>DragClipboard patch</desc>
            <filename>dnd-r.2.diff</filename>
            <type>text/plain</type>
            <size>5731</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NDUxN2FhMi4uYmQ1ZDMzOSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTUsNiArNSwzOCBAQAogICAgICAgICBObyB0ZXN0IGNhc2VzIHJl
cXVpcmVkLgogCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzY0MgorICAgICAgICBJbXBsZW1lbnQgYSBkYXRhIGhvbGRlciwgd2hpY2ggaXMgYWJsZSB0
byBob2xkCisgICAgICAgIGRpZmZlcmVudCB0eXBlcyBvZiBkYXRhIGF0IHRoZSBzYW1lIHRpbWUu
CisKKyAgICAgICAgR3RrIHRvb2xraXQgbGFja3Mgc3VjaCBzdHJ1Y3R1cmVzLCB3aGljaCBhcmUK
KyAgICAgICAgbmVjZXNzYXJ5IGZvciBjb21wbGV0ZSBkcmFnIGFuZCBkcm9wIHN1cHBvcnQsCisg
ICAgICAgIHdoZXJlIGRyb3AgdGFyZ2V0IGNhbiByZXF1ZXN0IGZvciBkYXRhIGluIGRpZmZlcmVu
dAorICAgICAgICB0eXBlcywgc3VjaCBhcyBpbWFnZSwgVVJMLCBsYWJlbCwgdGV4dCBldGMuCisK
KyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvRHJhZ0Ns
aXBib2FyZC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NsaXBib2FyZDo6RHJh
Z0NsaXBib2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ2xpcGJvYXJkOjpjbGlwYm9hcmQp
OgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NsaXBib2FyZDo6cmVzZXRDbGlwYm9hcmQpOgorICAg
ICAgICAqIHBsYXRmb3JtL2d0ay9EcmFnQ2xpcGJvYXJkLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RHJhZ0NsaXBib2FyZDo6c2V0VGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ2xp
cGJvYXJkOjpzZXRIdG1sKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDbGlwYm9hcmQ6OnNldFVy
bCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ2xpcGJvYXJkOjpzZXRVcmxMYWJlbCk6CisgICAg
ICAgIChXZWJDb3JlOjpEcmFnQ2xpcGJvYXJkOjpzZXRJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEcmFnQ2xpcGJvYXJkOjp0ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDbGlwYm9hcmQ6
Omh0bWwpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NsaXBib2FyZDo6dXJsKToKKyAgICAgICAg
KFdlYkNvcmU6OkRyYWdDbGlwYm9hcmQ6OnVybExhYmVsKToKKyAgICAgICAgKFdlYkNvcmU6OkRy
YWdDbGlwYm9hcmQ6OmltYWdlKToKKworMjAwOS0wNi0zMCAgWmFuIERvYmVyc2VrICA8emFuZG9i
ZXJzZWtAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIE5vIHRlc3QgY2FzZXMgcmVxdWlyZWQuCisKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjQyCiAgICAgICAgIERlZmluZSBEcmFnSW1h
Z2VSZWYgYXMgR2RrUGl4YnVmIGFuZCBpbXBsZW1lbnQgZXNzZW50aWFsCiAgICAgICAgIGZ1bmN0
aW9ucyB3aGljaCBtYW5pcHVsYXRlIGRyYWcgaW1hZ2VzLgogCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L0dOVW1ha2VmaWxlLmFtIGIvV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQppbmRleCBiYWJkNWVmLi4z
ZGM1NzYzIDEwMDY0NAotLS0gYS9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCisrKyBiL1dlYkNvcmUv
R05VbWFrZWZpbGUuYW0KQEAgLTE4NTIsNiArMTg1Miw4IEBAIHdlYmNvcmVndGtfc291cmNlcyAr
PSBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ29udGV4dE1lbnVJdGVtR3RrLmNwcCBcCiAJV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvQ3Vyc29yR3RrLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
Q3Vyc29yR3RrLmggXAorCVdlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdDbGlwYm9hcmQuY3BwIFwK
KwlXZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnQ2xpcGJvYXJkLmggXAogCVdlYkNvcmUvcGxhdGZv
cm0vZ3RrL0RyYWdEYXRhR3RrLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0ltYWdl
R3RrLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRXZlbnRMb29wR3RrLmNwcCBcCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnQ2xpcGJvYXJkLmNwcCBiL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL0RyYWdDbGlwYm9hcmQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLmM0OThmMzYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9EcmFnQ2xpcGJvYXJkLmNwcApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA5IFphbiBEb2JlcnNlayA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkRyYWdDbGlwYm9hcmQuaCIKKworI2luY2x1ZGUgIkRyYWdJ
bWFnZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0RyYWdDbGlwYm9hcmQ6OkRyYWdDbGlw
Ym9hcmQoKQorICAgIDogbV9pbWFnZSgwKQoreworfQorCitEcmFnQ2xpcGJvYXJkKiBEcmFnQ2xp
cGJvYXJkOjpjbGlwYm9hcmQoKQoreworICAgIHN0YXRpYyBEcmFnQ2xpcGJvYXJkKiBjbGlwYm9h
cmQgPSAwOworCisgICAgaWYgKCFjbGlwYm9hcmQpCisgICAgICAgIGNsaXBib2FyZCA9IG5ldyBE
cmFnQ2xpcGJvYXJkOworCisgICAgcmV0dXJuIGNsaXBib2FyZDsKK30KKwordm9pZCBEcmFnQ2xp
cGJvYXJkOjpyZXNldENsaXBib2FyZCgpCit7CisgICAgc2V0SHRtbChTdHJpbmcoKSk7CisgICAg
c2V0VGV4dChTdHJpbmcoKSk7CisgICAgc2V0VXJsKFN0cmluZygpKTsKKyAgICBzZXRVcmxMYWJl
bChTdHJpbmcoKSk7CisKKyAgICBkZWxldGVEcmFnSW1hZ2UoaW1hZ2UoKSk7CisgICAgc2V0SW1h
Z2UoMCk7Cit9CisKK30KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdDbGlw
Ym9hcmQuaCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdDbGlwYm9hcmQuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzdjZWM2Ci0tLSAvZGV2L251bGwKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0NsaXBib2FyZC5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDkgWmFuIERvYmVyc2VrIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+
CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNl
LCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy
cmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug
Zm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRo
IHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0
bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3Ry
ZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAq
LworCisjaWZuZGVmIERyYWdDbGlwYm9hcmRfaAorI2RlZmluZSBEcmFnQ2xpcGJvYXJkX2gKKwor
I2luY2x1ZGUgIkRyYWdJbWFnZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFN0cmluZzsKKworY2xhc3MgRHJhZ0NsaXBib2FyZCB7
CitwdWJsaWM6CisgICAgRHJhZ0NsaXBib2FyZCgpOworCisgICAgc3RhdGljIERyYWdDbGlwYm9h
cmQqIGNsaXBib2FyZCgpOworCisgICAgdm9pZCBzZXRUZXh0KGNvbnN0IFN0cmluZyYgdGV4dCkg
eyBtX3RleHQgPSB0ZXh0OyB9CisgICAgdm9pZCBzZXRIdG1sKGNvbnN0IFN0cmluZyYgaHRtbCkg
eyBtX2h0bWwgPSBodG1sOyB9CisgICAgdm9pZCBzZXRVcmwoY29uc3QgU3RyaW5nJiB1cmwpIHsg
bV91cmwgPSB1cmw7IH0KKyAgICB2b2lkIHNldFVybExhYmVsKGNvbnN0IFN0cmluZyYgdXJsTGFi
ZWwpIHsgbV91cmxMYWJlbCA9IHVybExhYmVsOyB9CisgICAgdm9pZCBzZXRJbWFnZShEcmFnSW1h
Z2VSZWYgaW1hZ2UpIHsgbV9pbWFnZSA9IGltYWdlOyB9CisKKyAgICBTdHJpbmcgdGV4dCgpIHsg
cmV0dXJuIG1fdGV4dDsgfQorICAgIFN0cmluZyBodG1sKCkgeyByZXR1cm4gbV9odG1sOyB9Cisg
ICAgU3RyaW5nIHVybCgpIHsgcmV0dXJuIG1fdXJsOyB9CisgICAgU3RyaW5nIHVybExhYmVsKCkg
eyByZXR1cm4gbV91cmxMYWJlbDsgfQorICAgIERyYWdJbWFnZVJlZiBpbWFnZSgpIHsgcmV0dXJu
IG1faW1hZ2U7IH0KKworICAgIHZvaWQgcmVzZXRDbGlwYm9hcmQoKTsKKworcHJpdmF0ZToKKyAg
ICBTdHJpbmcgbV90ZXh0OworICAgIFN0cmluZyBtX2h0bWw7CisgICAgU3RyaW5nIG1fdXJsOwor
ICAgIFN0cmluZyBtX3VybExhYmVsOworICAgIERyYWdJbWFnZVJlZiBtX2ltYWdlOworfTsKKwor
fQorCisjZW5kaWYgLy8gRHJhZ0NsaXBib2FyZF9oCg==
</data>
<flag name="review"
          id="16608"
          type_id="1"
          status="-"
          setter="jmalonzo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32135</attachid>
            <date>2009-07-01 13:01:37 -0700</date>
            <delta_ts>2009-08-12 06:05:01 -0700</delta_ts>
            <desc>Second patch</desc>
            <filename>dnd-r.3.diff</filename>
            <type>text/plain</type>
            <size>4549</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MWJhYzAwYy4uMTg2OTRiMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAwOS0wNy0wMSAgWmFuIERvYmVyc2Vr
ICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIE5vIHRlc3QgY2FzZXMgcmVxdWlyZWQuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjQyCisgICAgICAgIFVzZSBE
cmFnQ2xpcGJvYXJkIGFzIHRoZSBkYXRhIGhvbGRlciBmb3IKKyAgICAgICAgaW1hZ2VzLCBVUkxz
LCB0ZXh0IGFuZCBIVE1MLgorCisgICAgICAgICogcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRHdGs6OkNsaXBib2FyZEd0ayk6CisgICAg
ICAgIChXZWJDb3JlOjpDbGlwYm9hcmRHdGs6On5DbGlwYm9hcmRHdGspOgorICAgICAgICAoV2Vi
Q29yZTo6Z2V0Q2FjaGVkSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkR3RrOjpk
ZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkR3Rr
Ojp3cml0ZVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRHdGs6OndyaXRlUmFuZ2Up
OgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9DbGlwYm9hcmRHdGsuaDoKKwogMjAwOS0wNi0zMCAg
TWFyayBSb3dlICA8bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAgIExhbmQgc29tZSBjb2RlIHRo
YXQgaGFzIGEgaG9wZSBvZiBjb21waWxpbmcuCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9DbGlwYm9hcmRHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3Rr
LmNwcAppbmRleCA4Y2JmNTkwLi40N2ZjODcyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9DbGlwYm9hcmRHdGsuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2Fy
ZEd0ay5jcHAKQEAgLTE3LDEyICsxNywxNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkNsaXBib2FyZEd0ay5oIgogCisjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKKyNpbmNsdWRl
ICJEcmFnQ2xpcGJvYXJkLmgiCisjaW5jbHVkZSAiRWRpdG9yLmgiCisjaW5jbHVkZSAiRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkZpbGVMaXN0LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRl
ICJtYXJrdXAuaCIKICNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlJlbmRl
ckltYWdlLmgiCiAjaW5jbHVkZSAiU3RyaW5nSGFzaC5oIgogCi0jaW5jbHVkZSAiRWRpdG9yLmgi
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVkaXRvcjo6
bmV3R2VuZXJhbENsaXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KQpAQCAtMzIs
MTMgKzM3LDEyIEBAIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBFZGl0b3I6Om5ld0dlbmVyYWxDbGlw
Ym9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSkKIAogQ2xpcGJvYXJkR3RrOjpDbGlw
Ym9hcmRHdGsoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgYm9vbCBmb3JEcmFnZ2luZykK
ICAgICA6IENsaXBib2FyZChwb2xpY3ksIGZvckRyYWdnaW5nKQorICAgICwgbV9kcmFnQ2xpcGJv
YXJkKGZvckRyYWdnaW5nID8gRHJhZ0NsaXBib2FyZDo6Y2xpcGJvYXJkKCkgOiAwKQogewotICAg
IG5vdEltcGxlbWVudGVkKCk7CiB9CiAKIENsaXBib2FyZEd0azo6fkNsaXBib2FyZEd0aygpCiB7
Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAogdm9pZCBDbGlwYm9hcmRHdGs6OmNsZWFyRGF0
YShjb25zdCBTdHJpbmcmKQpAQCAtMTEwLDE5ICsxMTQsNTMgQEAgRHJhZ0ltYWdlUmVmIENsaXBi
b2FyZEd0azo6Y3JlYXRlRHJhZ0ltYWdlKEludFBvaW50JikgY29uc3QKICAgICByZXR1cm4gMDsK
IH0KIAotdm9pZCBDbGlwYm9hcmRHdGs6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShFbGVtZW50
KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYsIEZyYW1lKikKK3N0YXRpYyBDYWNoZWRJbWFn
ZSogZ2V0Q2FjaGVkSW1hZ2UoRWxlbWVudCogZWxlbWVudCkKIHsKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOworICAgIC8vIEF0dGVtcHQgdG8gcHVsbCBDYWNoZWRJbWFnZSBmcm9tIGVsZW1lbnQKKyAg
ICBBU1NFUlQoZWxlbWVudCk7CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGVsZW1lbnQt
PnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzSW1hZ2UoKSkK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZW5kZXJJbWFnZSogaW1hZ2UgPSBzdGF0aWNfY2Fz
dDxSZW5kZXJJbWFnZSo+KHJlbmRlcmVyKTsKKyAgICBpZiAoaW1hZ2UtPmNhY2hlZEltYWdlKCkg
JiYgIWltYWdlLT5jYWNoZWRJbWFnZSgpLT5lcnJvck9jY3VycmVkKCkpCisgICAgICAgIHJldHVy
biBpbWFnZS0+Y2FjaGVkSW1hZ2UoKTsKKworICAgIHJldHVybiAwOwogfQogCi12b2lkIENsaXBi
b2FyZEd0azo6d3JpdGVVUkwoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYsIEZyYW1lKikKK3Zv
aWQgQ2xpcGJvYXJkR3RrOjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoRWxlbWVudCogZWxlbWVu
dCwgY29uc3QgS1VSTCYgdXJsLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBGcmFtZSopCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICBpZiAoIW1fZHJhZ0NsaXBib2FyZCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgQ2FjaGVkSW1hZ2UqIGNhY2hlZEltYWdlID0gZ2V0Q2FjaGVkSW1hZ2UoZWxl
bWVudCk7CisgICAgaWYgKCFjYWNoZWRJbWFnZSB8fCAhY2FjaGVkSW1hZ2UtPmlzTG9hZGVkKCkp
CisgICAgICAgIHJldHVybjsKKyAgICBHZGtQaXhidWYqIHBpeGJ1ZiA9IGNhY2hlZEltYWdlLT5p
bWFnZSgpLT5nZXRHZGtQaXhidWYoKTsKKyAgICBpZiAocGl4YnVmKQorICAgICAgICBtX2RyYWdD
bGlwYm9hcmQtPnNldEltYWdlKHBpeGJ1Zik7OworCisgICAgd3JpdGVVUkwodXJsLCBsYWJlbCwg
MCk7CiB9CiAKLXZvaWQgQ2xpcGJvYXJkR3RrOjp3cml0ZVJhbmdlKFJhbmdlKiwgRnJhbWUqKQor
dm9pZCBDbGlwYm9hcmRHdGs6OndyaXRlVVJMKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5n
JiBsYWJlbCwgRnJhbWUqKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgaWYgKCFtX2Ry
YWdDbGlwYm9hcmQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZHJhZ0NsaXBib2FyZC0+c2V0
VGV4dCh1cmwuc3RyaW5nKCkpOworICAgIG1fZHJhZ0NsaXBib2FyZC0+c2V0VXJsKHVybC5zdHJp
bmcoKSk7CisgICAgbV9kcmFnQ2xpcGJvYXJkLT5zZXRVcmxMYWJlbChsYWJlbCk7Cit9CisKK3Zv
aWQgQ2xpcGJvYXJkR3RrOjp3cml0ZVJhbmdlKFJhbmdlKiByYW5nZSwgRnJhbWUqIGZyYW1lKQor
eworICAgIGlmICghbV9kcmFnQ2xpcGJvYXJkKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2Ry
YWdDbGlwYm9hcmQtPnNldFRleHQoZnJhbWUtPnNlbGVjdGVkVGV4dCgpKTsKKyAgICBtX2RyYWdD
bGlwYm9hcmQtPnNldEh0bWwoY3JlYXRlTWFya3VwKHJhbmdlLCAwLCBBbm5vdGF0ZUZvckludGVy
Y2hhbmdlKSk7CiB9CiAKIGJvb2wgQ2xpcGJvYXJkR3RrOjpoYXNEYXRhKCkKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvQ2xpcGJvYXJkR3RrLmgKaW5kZXggNzMxNGFlNC4uZDgwYjZhNyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvQ2xpcGJvYXJkR3RrLmgKQEAgLTI0LDEzICsyNCwxNCBAQAogICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi0jaWZuZGVmIENsaXBib2FyZEdka19oCi0jZGVmaW5lIENsaXBib2FyZEdka19oCisjaWZu
ZGVmIENsaXBib2FyZEd0a19oCisjZGVmaW5lIENsaXBib2FyZEd0a19oCiAKICNpbmNsdWRlICJD
bGlwYm9hcmQuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIGNsYXNzIENhY2hlZEltYWdl
OworICAgIGNsYXNzIERyYWdDbGlwYm9hcmQ7CiAKICAgICAvLyBTdGF0ZSBhdmFpbGFibGUgZHVy
aW5nIElFJ3MgZXZlbnRzIGZvciBkcmFnIGFuZCBkcm9wIGFuZCBjb3B5L3Bhc3RlCiAgICAgLy8g
Q3JlYXRlZCBmcm9tIHRoZSBFdmVudEhhbmRsZXJHdGsgdG8gYmUgdXNlZCBieSB0aGUgZG9tCkBA
IC02NSw2ICs2Niw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHByaXZhdGU6CiAgICAg
ICAgIENsaXBib2FyZEd0ayhDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIGJvb2wpOworCisgICAgICAg
IERyYWdDbGlwYm9hcmQqIG1fZHJhZ0NsaXBib2FyZDsKICAgICB9OwogfQogCg==
</data>
<flag name="review"
          id="16639"
          type_id="1"
          status="+"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32305</attachid>
            <date>2009-07-06 07:44:47 -0700</date>
            <delta_ts>2009-07-07 06:28:52 -0700</delta_ts>
            <desc>Third patch</desc>
            <filename>dnd-r.4.diff</filename>
            <type>text/plain</type>
            <size>10949</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
aW5kZXggNDIxMmFhNi4uMWMwMGNkZiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAwOS0wNy0wNiAg
WmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIERyYWcgYW5kIGRyb3Agc3VwcG9y
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NDIK
KworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgZHJhZyBhY3Rpb25zIGluIFdlYktpdFdlYlZpZXcg
YW5kIERyYWdDbGllbnQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3Rr
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhZ0NsaWVudDo6RHJhZ0NsaWVudCk6CisgICAgICAg
IChXZWJLaXQ6OkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRHJhZ0NsaWVudEd0ay5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNw
cDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19kcmFnX2VuZCk6CisgICAgICAgICh3ZWJraXRf
d2ViX3ZpZXdfZHJhZ19kYXRhX2dldCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2xhc3Nf
aW5pdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfaW5pdCk6CisgICAgICAgICogd2Via2l0
L3dlYmtpdHdlYnZpZXcuaDoKKwogMjAwOS0wNy0wNSAgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRo
ZXIgIDx6ZWNrZUBzZWxmaXNoLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBYYW4gTG9wZXou
CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRHdGsuY3Bw
IGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3RrLmNwcAppbmRleCBmNTVi
NmVhLi4yNmFmMDA0IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0RyYWdD
bGllbnRHdGsuY3BwCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudEd0
ay5jcHAKQEAgLTE3LDIwICsxNywzMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkRyYWdDbGllbnRHdGsuaCIKIAorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRWxl
bWVudC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiUmVuZGVyT2Jq
ZWN0LmgiCisjaW5jbHVkZSAid2Via2l0cHJpdmF0ZS5oIgorCisjaW5jbHVkZSA8Z3RrL2d0ay5o
PgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK0Ry
YWdDbGllbnQ6OkRyYWdDbGllbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKKyAgICA6IG1fd2Vi
Vmlldyh3ZWJWaWV3KQorICAgICwgbV9zdGFydFBvcygwLCAwKQoreworfQorCiB2b2lkIERyYWdD
bGllbnQ6OndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKERyYWdEZXN0aW5hdGlvbkFj
dGlvbiwgRHJhZ0RhdGEqKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRHJh
Z0NsaWVudDo6d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb24sIGNv
bnN0IEludFBvaW50JiwgQ2xpcGJvYXJkKikKK3ZvaWQgRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1E
cmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb24sIGNvbnN0IEludFBvaW50JiBzdGFydFBv
cywgQ2xpcGJvYXJkKikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fc3RhcnRQb3Mg
PSBzdGFydFBvczsKIH0KIAogRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIERyYWdDbGllbnQ6OmFjdGlv
bk1hc2tGb3JEcmFnKERyYWdEYXRhKikKQEAgLTQ1LDkgKzU3LDYwIEBAIERyYWdTb3VyY2VBY3Rp
b24gRHJhZ0NsaWVudDo6ZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBJbnRQb2lu
dCYpCiAgICAgcmV0dXJuIERyYWdTb3VyY2VBY3Rpb25Bbnk7CiB9CiAKLXZvaWQgRHJhZ0NsaWVu
dDo6c3RhcnREcmFnKERyYWdJbWFnZVJlZiwgY29uc3QgSW50UG9pbnQmLCBjb25zdCBJbnRQb2lu
dCYsIENsaXBib2FyZCosIEZyYW1lKiwgYm9vbCkKK3ZvaWQgRHJhZ0NsaWVudDo6c3RhcnREcmFn
KERyYWdJbWFnZVJlZiBpbWFnZSwgY29uc3QgSW50UG9pbnQmIGRyYWdJbWFnZU9yaWdpbiwgY29u
c3QgSW50UG9pbnQmIGV2ZW50UG9zLCBDbGlwYm9hcmQqLCBGcmFtZSosIGJvb2wpCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICBGcmFtZSogZm9jdXNlZEZyYW1lID0gY29yZSh3ZWJraXRf
d2ViX3ZpZXdfZ2V0X2ZvY3VzZWRfZnJhbWUobV93ZWJWaWV3KSk7CisgICAgRWxlbWVudCogdGFy
Z2V0RWxlbWVudCA9IGZvY3VzZWRGcmFtZS0+ZG9jdW1lbnQoKS0+ZWxlbWVudEZyb21Qb2ludCht
X3N0YXJ0UG9zLngoKSwgbV9zdGFydFBvcy55KCkpOworICAgIGJvb2wgaXNFbGVtZW50TGluayA9
IGZhbHNlOworICAgIGJvb2wgaXNFbGVtZW50SW1hZ2UgPSBmYWxzZTsKKworICAgIGlmICh0YXJn
ZXRFbGVtZW50KSB7CisgICAgICAgIGlzRWxlbWVudEltYWdlID0gdGFyZ2V0RWxlbWVudC0+cmVu
ZGVyZXIoKS0+aXNJbWFnZSgpOworCisgICAgICAgIE5vZGUqIHRhcmdldE5vZGUgPSBzdGF0aWNf
Y2FzdDxOb2RlKj4odGFyZ2V0RWxlbWVudCk7CisgICAgICAgIGZvciAoTm9kZSogcCA9IHRhcmdl
dE5vZGU7IHA7IHAgPSBwLT5wYXJlbnROb2RlKCkpIHsKKyAgICAgICAgICAgIGlmIChwLT5pc0xp
bmsoKSkgeworICAgICAgICAgICAgICAgIGlzRWxlbWVudExpbmsgPSB0cnVlOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgR2Rr
QXRvbSB0ZXh0SHRtbCA9IGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJ0ZXh0L2h0bWwi
KTsKKyAgICBHZGtBdG9tIG5ldHNjYXBlVXJsID0gZ2RrX2F0b21faW50ZXJuX3N0YXRpY19zdHJp
bmcoIl9ORVRTQ0FQRV9VUkwiKTsKKworICAgIEd0a1RhcmdldExpc3QqIHRhcmdldExpc3QgPSBn
dGtfdGFyZ2V0X2xpc3RfbmV3KE5VTEwsIDApOworICAgIGd0a190YXJnZXRfbGlzdF9hZGQodGFy
Z2V0TGlzdCwgdGV4dEh0bWwsIDAsIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19IVE1MKTsK
KyAgICBndGtfdGFyZ2V0X2xpc3RfYWRkX3RleHRfdGFyZ2V0cyh0YXJnZXRMaXN0LCBXRUJLSVRf
V0VCX1ZJRVdfVEFSR0VUX0lORk9fVEVYVCk7CisKKyAgICBpZiAoaXNFbGVtZW50TGluayB8fCBp
c0VsZW1lbnRJbWFnZSkgeworICAgICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKHRhcmdldExpc3Qs
IG5ldHNjYXBlVXJsLCAwLCBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fTkVUU0NBUEVfVVJM
KTsKKyAgICAgICAgZ3RrX3RhcmdldF9saXN0X2FkZF91cmlfdGFyZ2V0cyh0YXJnZXRMaXN0LCBX
RUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fVVJJX0xJU1QpOworICAgIH0KKworICAgIGlmIChp
c0VsZW1lbnRJbWFnZSkKKyAgICAgICAgZ3RrX3RhcmdldF9saXN0X2FkZF9pbWFnZV90YXJnZXRz
KHRhcmdldExpc3QsIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19JTUFHRSwgZmFsc2UpOwor
CisgICAgR2RrRHJhZ0FjdGlvbiBkcmFnQWN0aW9uID0gR0RLX0FDVElPTl9DT1BZOworICAgIGlm
IChpc0VsZW1lbnRMaW5rKSB7CisgICAgICAgIGRyYWdBY3Rpb24gPSBHREtfQUNUSU9OX0xJTks7
CisgICAgICAgIGlmIChpc0VsZW1lbnRJbWFnZSkKKyAgICAgICAgICAgIGRyYWdBY3Rpb24gPSAo
R2RrRHJhZ0FjdGlvbikoZHJhZ0FjdGlvbiB8IEdES19BQ1RJT05fQ09QWSk7CisgICAgfQorCisg
ICAgR2RrRXZlbnQqIGV2ZW50ID0gZ2RrX2V2ZW50X25ldyhHREtfQlVUVE9OX1BSRVNTKTsKKyAg
ICByZWludGVycHJldF9jYXN0PEdka0V2ZW50QnV0dG9uKj4oZXZlbnQpLT53aW5kb3cgPSBndGtf
d2lkZ2V0X2dldF93aW5kb3coR1RLX1dJREdFVChtX3dlYlZpZXcpKTsKKyAgICByZWludGVycHJl
dF9jYXN0PEdka0V2ZW50QnV0dG9uKj4oZXZlbnQpLT50aW1lID0gR0RLX0NVUlJFTlRfVElNRTsK
KworICAgIEdka0RyYWdDb250ZXh0KiBjb250ZXh0ID0gZ3RrX2RyYWdfYmVnaW4oR1RLX1dJREdF
VChtX3dlYlZpZXcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGFyZ2V0TGlzdCwgZHJhZ0FjdGlvbiwgMSwgZXZlbnQpOworCisgICAgaWYgKGltYWdlKQor
ICAgICAgICBndGtfZHJhZ19zZXRfaWNvbl9waXhidWYoY29udGV4dCwgaW1hZ2UsIGV2ZW50UG9z
LngoKSAtIGRyYWdJbWFnZU9yaWdpbi54KCksIGV2ZW50UG9zLnkoKSAtIGRyYWdJbWFnZU9yaWdp
bi55KCkpOworICAgIGVsc2UKKyAgICAgICAgZ3RrX2RyYWdfc2V0X2ljb25fZGVmYXVsdChjb250
ZXh0KTsKKworLy8gICAgZ3RrX3RhcmdldF9saXN0X3VucmVmKHRhcmdldExpc3QpOwogfQogCiBE
cmFnSW1hZ2VSZWYgRHJhZ0NsaWVudDo6Y3JlYXRlRHJhZ0ltYWdlRm9yTGluayhLVVJMJiwgY29u
c3QgU3RyaW5nJiBsYWJlbCwgRnJhbWUqKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9EcmFnQ2xpZW50R3RrLmggYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0RyYWdD
bGllbnRHdGsuaAppbmRleCA0MzY3YzY4Li5lM2ZmOTc3IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRHdGsuaAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0RyYWdDbGllbnRHdGsuaApAQCAtMzIsOSArMzIsMTggQEAKIAogI2luY2x1ZGUgIkRy
YWdDbGllbnQuaCIKIAordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXcgV2ViS2l0V2ViVmll
dzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIGNsYXNzIEludFBvaW50OworfQorCiBuYW1l
c3BhY2UgV2ViS2l0IHsKKwogICAgIGNsYXNzIERyYWdDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6
RHJhZ0NsaWVudCB7CiAgICAgcHVibGljOgorICAgICAgICBEcmFnQ2xpZW50KFdlYktpdFdlYlZp
ZXcqKTsKKwogICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25B
Y3Rpb24oV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLCBXZWJDb3JlOjpEcmFnRGF0YSop
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKFdlYkNv
cmU6OkRyYWdTb3VyY2VBY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgV2ViQ29yZTo6
Q2xpcGJvYXJkKik7CiAgICAgICAgIHZpcnR1YWwgV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uIGFjdGlvbk1hc2tGb3JEcmFnKFdlYkNvcmU6OkRyYWdEYXRhKik7CkBAIC00NSw2ICs1NCwx
MSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAgdmlydHVhbCBXZWJDb3JlOjpEcmFnSW1h
Z2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhXZWJDb3JlOjpLVVJMJiwgY29uc3QgV2ViQ29y
ZTo6U3RyaW5nJiBsYWJlbCwgV2ViQ29yZTo6RnJhbWUqKTsKIAogICAgICAgICB2aXJ0dWFsIHZv
aWQgZHJhZ0NvbnRyb2xsZXJEZXN0cm95ZWQoKTsKKworICAgICAgICBwcml2YXRlOgorICAgICAg
ICAgICAgV2ViS2l0V2ViVmlldyogbV93ZWJWaWV3OworCisgICAgICAgICAgICBXZWJDb3JlOjpJ
bnRQb2ludCBtX3N0YXJ0UG9zOwogICAgIH07CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmll
dy5jcHAKaW5kZXggYzUwNzU3Zi4uMmJiMjg3ZSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmll
dy5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRHJhZ0NsaWVudEd0ay5oIgorI2luY2x1ZGUg
IkRyYWdDbGlwYm9hcmQuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJFZGl0b3JD
bGllbnRHdGsuaCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKQEAgLTEwNDEsNiArMTA0Miw1
NCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2NyZWVuX2NoYW5nZWQoR3RrV2lkZ2V0
KiB3aWRnZXQsIEdka1NjcmVlbiogcHJldmlvdQogICAgIHNldHRpbmdzLT5zZXRNaW5pbXVtTG9n
aWNhbEZvbnRTaXplKG1pbmltdW1Mb2dpY2FsRm9udFNpemUgLyA3Mi4wICogRFBJKTsKIH0KIAor
c3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2RyYWdfZW5kKEd0a1dpZGdldCogd2lkZ2V0LCBH
ZGtEcmFnQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBEcmFnQ2xpcGJvYXJkOjpjbGlwYm9hcmQo
KS0+cmVzZXRDbGlwYm9hcmQoKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2Ry
YWdfZGF0YV9nZXQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0RyYWdDb250ZXh0KiBjb250ZXh0LCBH
dGtTZWxlY3Rpb25EYXRhKiBzZWxlY3Rpb25fZGF0YSwgZ3VpbnQgaW5mbywgZ3VpbnQgdGltZV8p
Cit7CisgICAgZnByaW50ZihzdGRlcnIsICJ3ZWJraXRfd2ViX3ZpZXdfZHJhZ19kYXRhX2dldCAl
ZFxuIiwgaW5mbyk7CisgICAgRHJhZ0NsaXBib2FyZCogY2xpcGJvYXJkID0gRHJhZ0NsaXBib2Fy
ZDo6Y2xpcGJvYXJkKCk7CisgICAgY2hhciogZGF0YTsKKworICAgIHN3aXRjaCAoaW5mbykgewor
ICAgIGNhc2UgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX0hUTUw6CisgICAgICAgIGd0a19z
ZWxlY3Rpb25fZGF0YV9zZXQoc2VsZWN0aW9uX2RhdGEsIHNlbGVjdGlvbl9kYXRhLT50YXJnZXQs
IDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBndWNoYXIqPigoY2xpcGJvYXJkLT5odG1sKCkuaXNFbXB0eSgpIHx8IGNsaXBib2FyZC0+aHRt
bCgpLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID8gY2xpcGJvYXJkLT50ZXh0KCkudXRmOCgpLmRhdGEoKSA6
IGNsaXBib2FyZC0+aHRtbCgpLnV0ZjgoKS5kYXRhKCkpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChjbGlwYm9hcmQtPmh0bWwoKS5pc0VtcHR5KCkgfHwgY2xpcGJvYXJkLT5odG1s
KCkuaXNOdWxsKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gY2xpcGJvYXJk
LT50ZXh0KCkubGVuZ3RoKCkgOiBjbGlwYm9hcmQtPmh0bWwoKS5sZW5ndGgoKSk7CisgICAgICAg
IHJldHVybjsKKyAgICBjYXNlIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19URVhUOgorICAg
ICAgICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0KHNlbGVjdGlvbl9kYXRhLCBzZWxlY3Rpb25fZGF0
YS0+dGFyZ2V0LCA4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgZ3VjaGFyKj4oY2xpcGJvYXJkLT50ZXh0KCkudXRmOCgpLmRhdGEoKSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpcGJvYXJkLT50ZXh0KCkubGVuZ3RoKCkp
OworICAgICAgICByZXR1cm47CisgICAgY2FzZSBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9f
SU1BR0U6CisgICAgICAgIGd0a19zZWxlY3Rpb25fZGF0YV9zZXRfcGl4YnVmKHNlbGVjdGlvbl9k
YXRhLCBjbGlwYm9hcmQtPmltYWdlKCkpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBXRUJL
SVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fVVJJX0xJU1Q6CisgICAgICAgIGRhdGEgPSBnX3N0cmR1
cF9wcmludGYoIiVzXHJcbiVzXHJcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2xpcGJvYXJkLT51cmwoKS51dGY4KCkuZGF0YSgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChjbGlwYm9hcmQtPnVybExhYmVsKCkuaXNFbXB0eSgpIHx8IGNsaXBib2FyZC0+dXJs
TGFiZWwoKS5pc051bGwoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBjbGlw
Ym9hcmQtPnVybCgpLnV0ZjgoKS5kYXRhKCkgOiBjbGlwYm9hcmQtPnVybExhYmVsKCkudXRmOCgp
LmRhdGEoKSk7CisgICAgICAgIGd0a19zZWxlY3Rpb25fZGF0YV9zZXQoc2VsZWN0aW9uX2RhdGEs
IHNlbGVjdGlvbl9kYXRhLT50YXJnZXQsIDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVpbnRlcnByZXRfY2FzdDxndWNoYXIqPihkYXRhKSwgc3RybGVuKGRhdGEpKTsKKyAgICAg
ICAgZ19mcmVlKGRhdGEpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBXRUJLSVRfV0VCX1ZJ
RVdfVEFSR0VUX0lORk9fTkVUU0NBUEVfVVJMOgorICAgICAgICBkYXRhID0gZ19zdHJkdXBfcHJp
bnRmKCIlc1xuJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaXBib2FyZC0+
dXJsKCkudXRmOCgpLmRhdGEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xp
cGJvYXJkLT51cmxMYWJlbCgpLmlzRW1wdHkoKSB8fCBjbGlwYm9hcmQtPnVybExhYmVsKCkuaXNO
dWxsKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gY2xpcGJvYXJkLT51cmwo
KS51dGY4KCkuZGF0YSgpIDogY2xpcGJvYXJkLT51cmxMYWJlbCgpLnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0KHNlbGVjdGlvbl9kYXRhLCBzZWxlY3Rpb25f
ZGF0YS0+dGFyZ2V0LCA4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJw
cmV0X2Nhc3Q8Z3VjaGFyKj4oZGF0YSksIHN0cmxlbihkYXRhKSk7CisgICAgICAgIGdfZnJlZShk
YXRhKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKwogc3RhdGljIHZvaWQgd2Via2l0X3dl
Yl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiB7CiAg
ICAgR3RrQmluZGluZ1NldCogYmluZGluZ19zZXQ7CkBAIC0xNzUzLDYgKzE4MDIsOCBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdl
YlZpZXdDbGFzcykKICAgICB3aWRnZXRDbGFzcy0+Zm9jdXNfb3V0X2V2ZW50ID0gd2Via2l0X3dl
Yl92aWV3X2ZvY3VzX291dF9ldmVudDsKICAgICB3aWRnZXRDbGFzcy0+Z2V0X2FjY2Vzc2libGUg
PSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2FjY2Vzc2libGU7CiAgICAgd2lkZ2V0Q2xhc3MtPnNjcmVl
bl9jaGFuZ2VkID0gd2Via2l0X3dlYl92aWV3X3NjcmVlbl9jaGFuZ2VkOworICAgIHdpZGdldENs
YXNzLT5kcmFnX2VuZCA9IHdlYmtpdF93ZWJfdmlld19kcmFnX2VuZDsKKyAgICB3aWRnZXRDbGFz
cy0+ZHJhZ19kYXRhX2dldCA9IHdlYmtpdF93ZWJfdmlld19kcmFnX2RhdGFfZ2V0OwogCiAgICAg
R3RrQ29udGFpbmVyQ2xhc3MqIGNvbnRhaW5lckNsYXNzID0gR1RLX0NPTlRBSU5FUl9DTEFTUyh3
ZWJWaWV3Q2xhc3MpOwogICAgIGNvbnRhaW5lckNsYXNzLT5hZGQgPSB3ZWJraXRfd2ViX3ZpZXdf
Y29udGFpbmVyX2FkZDsKQEAgLTIxODUsNyArMjIzNiw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93
ZWJfdmlld19pbml0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgcHJpdi0+aW1Db250ZXh0
ID0gZ3RrX2ltX211bHRpY29udGV4dF9uZXcoKTsKIAogICAgIFdlYktpdDo6SW5zcGVjdG9yQ2xp
ZW50KiBpbnNwZWN0b3JDbGllbnQgPSBuZXcgV2ViS2l0OjpJbnNwZWN0b3JDbGllbnQod2ViVmll
dyk7Ci0gICAgcHJpdi0+Y29yZVBhZ2UgPSBuZXcgUGFnZShuZXcgV2ViS2l0OjpDaHJvbWVDbGll
bnQod2ViVmlldyksIG5ldyBXZWJLaXQ6OkNvbnRleHRNZW51Q2xpZW50KHdlYlZpZXcpLCBuZXcg
V2ViS2l0OjpFZGl0b3JDbGllbnQod2ViVmlldyksIG5ldyBXZWJLaXQ6OkRyYWdDbGllbnQsIGlu
c3BlY3RvckNsaWVudCk7CisgICAgcHJpdi0+Y29yZVBhZ2UgPSBuZXcgUGFnZShuZXcgV2ViS2l0
OjpDaHJvbWVDbGllbnQod2ViVmlldyksIG5ldyBXZWJLaXQ6OkNvbnRleHRNZW51Q2xpZW50KHdl
YlZpZXcpLCBuZXcgV2ViS2l0OjpFZGl0b3JDbGllbnQod2ViVmlldyksIG5ldyBXZWJLaXQ6OkRy
YWdDbGllbnQod2ViVmlldyksIGluc3BlY3RvckNsaWVudCk7CiAKICAgICAvLyBXZSBhbHNvIGFk
ZCBhIHNpbXBsZSB3cmFwcGVyIGNsYXNzIHRvIHByb3ZpZGUgdGhlIHB1YmxpYwogICAgIC8vIGlu
dGVyZmFjZSBmb3IgdGhlIFdlYiBJbnNwZWN0b3IuCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJ2aWV3LmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgK
aW5kZXggNjBkMzMwZS4uZTZiMGM3OCAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vidmlldy5oCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaApAQCAt
NTIsNyArNTIsMTAgQEAgdHlwZWRlZiBlbnVtIHsKIHR5cGVkZWYgZW51bQogewogICAgIFdFQktJ
VF9XRUJfVklFV19UQVJHRVRfSU5GT19IVE1MLAotICAgIFdFQktJVF9XRUJfVklFV19UQVJHRVRf
SU5GT19URVhUCisgICAgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX1RFWFQsCisgICAgV0VC
S0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX0lNQUdFLAorICAgIFdFQktJVF9XRUJfVklFV19UQVJH
RVRfSU5GT19VUklfTElTVCwKKyAgICBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fTkVUU0NB
UEVfVVJMCiB9IFdlYktpdFdlYlZpZXdUYXJnZXRJbmZvOwogCiBzdHJ1Y3QgX1dlYktpdFdlYlZp
ZXcgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32375</attachid>
            <date>2009-07-07 06:28:52 -0700</date>
            <delta_ts>2009-07-26 12:26:47 -0700</delta_ts>
            <desc>Third patch</desc>
            <filename>dnd-r.4.diff</filename>
            <type>text/plain</type>
            <size>10949</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
aW5kZXggNDIxMmFhNi4uMWMwMGNkZiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNCBAQAorMjAwOS0wNy0wNiAg
WmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIERyYWcgYW5kIGRyb3Agc3VwcG9y
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NDIK
KworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgZHJhZyBhY3Rpb25zIGluIFdlYktpdFdlYlZpZXcg
YW5kIERyYWdDbGllbnQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3Rr
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhZ0NsaWVudDo6RHJhZ0NsaWVudCk6CisgICAgICAg
IChXZWJLaXQ6OkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyk6CisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRHJhZ0NsaWVudEd0ay5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNw
cDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19kcmFnX2VuZCk6CisgICAgICAgICh3ZWJraXRf
d2ViX3ZpZXdfZHJhZ19kYXRhX2dldCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfY2xhc3Nf
aW5pdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfaW5pdCk6CisgICAgICAgICogd2Via2l0
L3dlYmtpdHdlYnZpZXcuaDoKKwogMjAwOS0wNy0wNSAgSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRo
ZXIgIDx6ZWNrZUBzZWxmaXNoLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBYYW4gTG9wZXou
CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRHdGsuY3Bw
IGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3RrLmNwcAppbmRleCBmNTVi
NmVhLi4yNmFmMDA0IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0RyYWdD
bGllbnRHdGsuY3BwCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudEd0
ay5jcHAKQEAgLTE3LDIwICsxNywzMiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUg
IkRyYWdDbGllbnRHdGsuaCIKIAorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRWxl
bWVudC5oIgogI2luY2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiUmVuZGVyT2Jq
ZWN0LmgiCisjaW5jbHVkZSAid2Via2l0cHJpdmF0ZS5oIgorCisjaW5jbHVkZSA8Z3RrL2d0ay5o
PgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK0Ry
YWdDbGllbnQ6OkRyYWdDbGllbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKKyAgICA6IG1fd2Vi
Vmlldyh3ZWJWaWV3KQorICAgICwgbV9zdGFydFBvcygwLCAwKQoreworfQorCiB2b2lkIERyYWdD
bGllbnQ6OndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKERyYWdEZXN0aW5hdGlvbkFj
dGlvbiwgRHJhZ0RhdGEqKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRHJh
Z0NsaWVudDo6d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb24sIGNv
bnN0IEludFBvaW50JiwgQ2xpcGJvYXJkKikKK3ZvaWQgRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1E
cmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb24sIGNvbnN0IEludFBvaW50JiBzdGFydFBv
cywgQ2xpcGJvYXJkKikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fc3RhcnRQb3Mg
PSBzdGFydFBvczsKIH0KIAogRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIERyYWdDbGllbnQ6OmFjdGlv
bk1hc2tGb3JEcmFnKERyYWdEYXRhKikKQEAgLTQ1LDkgKzU3LDYwIEBAIERyYWdTb3VyY2VBY3Rp
b24gRHJhZ0NsaWVudDo6ZHJhZ1NvdXJjZUFjdGlvbk1hc2tGb3JQb2ludChjb25zdCBJbnRQb2lu
dCYpCiAgICAgcmV0dXJuIERyYWdTb3VyY2VBY3Rpb25Bbnk7CiB9CiAKLXZvaWQgRHJhZ0NsaWVu
dDo6c3RhcnREcmFnKERyYWdJbWFnZVJlZiwgY29uc3QgSW50UG9pbnQmLCBjb25zdCBJbnRQb2lu
dCYsIENsaXBib2FyZCosIEZyYW1lKiwgYm9vbCkKK3ZvaWQgRHJhZ0NsaWVudDo6c3RhcnREcmFn
KERyYWdJbWFnZVJlZiBpbWFnZSwgY29uc3QgSW50UG9pbnQmIGRyYWdJbWFnZU9yaWdpbiwgY29u
c3QgSW50UG9pbnQmIGV2ZW50UG9zLCBDbGlwYm9hcmQqLCBGcmFtZSosIGJvb2wpCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICBGcmFtZSogZm9jdXNlZEZyYW1lID0gY29yZSh3ZWJraXRf
d2ViX3ZpZXdfZ2V0X2ZvY3VzZWRfZnJhbWUobV93ZWJWaWV3KSk7CisgICAgRWxlbWVudCogdGFy
Z2V0RWxlbWVudCA9IGZvY3VzZWRGcmFtZS0+ZG9jdW1lbnQoKS0+ZWxlbWVudEZyb21Qb2ludCht
X3N0YXJ0UG9zLngoKSwgbV9zdGFydFBvcy55KCkpOworICAgIGJvb2wgaXNFbGVtZW50TGluayA9
IGZhbHNlOworICAgIGJvb2wgaXNFbGVtZW50SW1hZ2UgPSBmYWxzZTsKKworICAgIGlmICh0YXJn
ZXRFbGVtZW50KSB7CisgICAgICAgIGlzRWxlbWVudEltYWdlID0gdGFyZ2V0RWxlbWVudC0+cmVu
ZGVyZXIoKS0+aXNJbWFnZSgpOworCisgICAgICAgIE5vZGUqIHRhcmdldE5vZGUgPSBzdGF0aWNf
Y2FzdDxOb2RlKj4odGFyZ2V0RWxlbWVudCk7CisgICAgICAgIGZvciAoTm9kZSogcCA9IHRhcmdl
dE5vZGU7IHA7IHAgPSBwLT5wYXJlbnROb2RlKCkpIHsKKyAgICAgICAgICAgIGlmIChwLT5pc0xp
bmsoKSkgeworICAgICAgICAgICAgICAgIGlzRWxlbWVudExpbmsgPSB0cnVlOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgR2Rr
QXRvbSB0ZXh0SHRtbCA9IGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJ0ZXh0L2h0bWwi
KTsKKyAgICBHZGtBdG9tIG5ldHNjYXBlVXJsID0gZ2RrX2F0b21faW50ZXJuX3N0YXRpY19zdHJp
bmcoIl9ORVRTQ0FQRV9VUkwiKTsKKworICAgIEd0a1RhcmdldExpc3QqIHRhcmdldExpc3QgPSBn
dGtfdGFyZ2V0X2xpc3RfbmV3KE5VTEwsIDApOworICAgIGd0a190YXJnZXRfbGlzdF9hZGQodGFy
Z2V0TGlzdCwgdGV4dEh0bWwsIDAsIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19IVE1MKTsK
KyAgICBndGtfdGFyZ2V0X2xpc3RfYWRkX3RleHRfdGFyZ2V0cyh0YXJnZXRMaXN0LCBXRUJLSVRf
V0VCX1ZJRVdfVEFSR0VUX0lORk9fVEVYVCk7CisKKyAgICBpZiAoaXNFbGVtZW50TGluayB8fCBp
c0VsZW1lbnRJbWFnZSkgeworICAgICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkKHRhcmdldExpc3Qs
IG5ldHNjYXBlVXJsLCAwLCBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fTkVUU0NBUEVfVVJM
KTsKKyAgICAgICAgZ3RrX3RhcmdldF9saXN0X2FkZF91cmlfdGFyZ2V0cyh0YXJnZXRMaXN0LCBX
RUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fVVJJX0xJU1QpOworICAgIH0KKworICAgIGlmIChp
c0VsZW1lbnRJbWFnZSkKKyAgICAgICAgZ3RrX3RhcmdldF9saXN0X2FkZF9pbWFnZV90YXJnZXRz
KHRhcmdldExpc3QsIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19JTUFHRSwgZmFsc2UpOwor
CisgICAgR2RrRHJhZ0FjdGlvbiBkcmFnQWN0aW9uID0gR0RLX0FDVElPTl9DT1BZOworICAgIGlm
IChpc0VsZW1lbnRMaW5rKSB7CisgICAgICAgIGRyYWdBY3Rpb24gPSBHREtfQUNUSU9OX0xJTks7
CisgICAgICAgIGlmIChpc0VsZW1lbnRJbWFnZSkKKyAgICAgICAgICAgIGRyYWdBY3Rpb24gPSAo
R2RrRHJhZ0FjdGlvbikoZHJhZ0FjdGlvbiB8IEdES19BQ1RJT05fQ09QWSk7CisgICAgfQorCisg
ICAgR2RrRXZlbnQqIGV2ZW50ID0gZ2RrX2V2ZW50X25ldyhHREtfQlVUVE9OX1BSRVNTKTsKKyAg
ICByZWludGVycHJldF9jYXN0PEdka0V2ZW50QnV0dG9uKj4oZXZlbnQpLT53aW5kb3cgPSBndGtf
d2lkZ2V0X2dldF93aW5kb3coR1RLX1dJREdFVChtX3dlYlZpZXcpKTsKKyAgICByZWludGVycHJl
dF9jYXN0PEdka0V2ZW50QnV0dG9uKj4oZXZlbnQpLT50aW1lID0gR0RLX0NVUlJFTlRfVElNRTsK
KworICAgIEdka0RyYWdDb250ZXh0KiBjb250ZXh0ID0gZ3RrX2RyYWdfYmVnaW4oR1RLX1dJREdF
VChtX3dlYlZpZXcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdGFyZ2V0TGlzdCwgZHJhZ0FjdGlvbiwgMSwgZXZlbnQpOworCisgICAgaWYgKGltYWdlKQor
ICAgICAgICBndGtfZHJhZ19zZXRfaWNvbl9waXhidWYoY29udGV4dCwgaW1hZ2UsIGV2ZW50UG9z
LngoKSAtIGRyYWdJbWFnZU9yaWdpbi54KCksIGV2ZW50UG9zLnkoKSAtIGRyYWdJbWFnZU9yaWdp
bi55KCkpOworICAgIGVsc2UKKyAgICAgICAgZ3RrX2RyYWdfc2V0X2ljb25fZGVmYXVsdChjb250
ZXh0KTsKKworLy8gICAgZ3RrX3RhcmdldF9saXN0X3VucmVmKHRhcmdldExpc3QpOwogfQogCiBE
cmFnSW1hZ2VSZWYgRHJhZ0NsaWVudDo6Y3JlYXRlRHJhZ0ltYWdlRm9yTGluayhLVVJMJiwgY29u
c3QgU3RyaW5nJiBsYWJlbCwgRnJhbWUqKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9EcmFnQ2xpZW50R3RrLmggYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0RyYWdD
bGllbnRHdGsuaAppbmRleCA0MzY3YzY4Li5lM2ZmOTc3IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRHdGsuaAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0RyYWdDbGllbnRHdGsuaApAQCAtMzIsOSArMzIsMTggQEAKIAogI2luY2x1ZGUgIkRy
YWdDbGllbnQuaCIKIAordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdFdlYlZpZXcgV2ViS2l0V2ViVmll
dzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIGNsYXNzIEludFBvaW50OworfQorCiBuYW1l
c3BhY2UgV2ViS2l0IHsKKwogICAgIGNsYXNzIERyYWdDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6
RHJhZ0NsaWVudCB7CiAgICAgcHVibGljOgorICAgICAgICBEcmFnQ2xpZW50KFdlYktpdFdlYlZp
ZXcqKTsKKwogICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1EcmFnRGVzdGluYXRpb25B
Y3Rpb24oV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0aW9uLCBXZWJDb3JlOjpEcmFnRGF0YSop
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKFdlYkNv
cmU6OkRyYWdTb3VyY2VBY3Rpb24sIGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgV2ViQ29yZTo6
Q2xpcGJvYXJkKik7CiAgICAgICAgIHZpcnR1YWwgV2ViQ29yZTo6RHJhZ0Rlc3RpbmF0aW9uQWN0
aW9uIGFjdGlvbk1hc2tGb3JEcmFnKFdlYkNvcmU6OkRyYWdEYXRhKik7CkBAIC00NSw2ICs1NCwx
MSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAgdmlydHVhbCBXZWJDb3JlOjpEcmFnSW1h
Z2VSZWYgY3JlYXRlRHJhZ0ltYWdlRm9yTGluayhXZWJDb3JlOjpLVVJMJiwgY29uc3QgV2ViQ29y
ZTo6U3RyaW5nJiBsYWJlbCwgV2ViQ29yZTo6RnJhbWUqKTsKIAogICAgICAgICB2aXJ0dWFsIHZv
aWQgZHJhZ0NvbnRyb2xsZXJEZXN0cm95ZWQoKTsKKworICAgICAgICBwcml2YXRlOgorICAgICAg
ICAgICAgV2ViS2l0V2ViVmlldyogbV93ZWJWaWV3OworCisgICAgICAgICAgICBXZWJDb3JlOjpJ
bnRQb2ludCBtX3N0YXJ0UG9zOwogICAgIH07CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmll
dy5jcHAKaW5kZXggYzUwNzU3Zi4uMmJiMjg3ZSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmll
dy5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUg
IkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRHJhZ0NsaWVudEd0ay5oIgorI2luY2x1ZGUg
IkRyYWdDbGlwYm9hcmQuaCIKICNpbmNsdWRlICJFZGl0b3IuaCIKICNpbmNsdWRlICJFZGl0b3JD
bGllbnRHdGsuaCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIuaCIKQEAgLTEwNDEsNiArMTA0Miw1
NCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2NyZWVuX2NoYW5nZWQoR3RrV2lkZ2V0
KiB3aWRnZXQsIEdka1NjcmVlbiogcHJldmlvdQogICAgIHNldHRpbmdzLT5zZXRNaW5pbXVtTG9n
aWNhbEZvbnRTaXplKG1pbmltdW1Mb2dpY2FsRm9udFNpemUgLyA3Mi4wICogRFBJKTsKIH0KIAor
c3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2RyYWdfZW5kKEd0a1dpZGdldCogd2lkZ2V0LCBH
ZGtEcmFnQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBEcmFnQ2xpcGJvYXJkOjpjbGlwYm9hcmQo
KS0+cmVzZXRDbGlwYm9hcmQoKTsKK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2Ry
YWdfZGF0YV9nZXQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0RyYWdDb250ZXh0KiBjb250ZXh0LCBH
dGtTZWxlY3Rpb25EYXRhKiBzZWxlY3Rpb25fZGF0YSwgZ3VpbnQgaW5mbywgZ3VpbnQgdGltZV8p
Cit7CisgICAgZnByaW50ZihzdGRlcnIsICJ3ZWJraXRfd2ViX3ZpZXdfZHJhZ19kYXRhX2dldCAl
ZFxuIiwgaW5mbyk7CisgICAgRHJhZ0NsaXBib2FyZCogY2xpcGJvYXJkID0gRHJhZ0NsaXBib2Fy
ZDo6Y2xpcGJvYXJkKCk7CisgICAgY2hhciogZGF0YTsKKworICAgIHN3aXRjaCAoaW5mbykgewor
ICAgIGNhc2UgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX0hUTUw6CisgICAgICAgIGd0a19z
ZWxlY3Rpb25fZGF0YV9zZXQoc2VsZWN0aW9uX2RhdGEsIHNlbGVjdGlvbl9kYXRhLT50YXJnZXQs
IDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25z
dCBndWNoYXIqPigoY2xpcGJvYXJkLT5odG1sKCkuaXNFbXB0eSgpIHx8IGNsaXBib2FyZC0+aHRt
bCgpLmlzTnVsbCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgID8gY2xpcGJvYXJkLT50ZXh0KCkudXRmOCgpLmRhdGEoKSA6
IGNsaXBib2FyZC0+aHRtbCgpLnV0ZjgoKS5kYXRhKCkpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIChjbGlwYm9hcmQtPmh0bWwoKS5pc0VtcHR5KCkgfHwgY2xpcGJvYXJkLT5odG1s
KCkuaXNOdWxsKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gY2xpcGJvYXJk
LT50ZXh0KCkubGVuZ3RoKCkgOiBjbGlwYm9hcmQtPmh0bWwoKS5sZW5ndGgoKSk7CisgICAgICAg
IHJldHVybjsKKyAgICBjYXNlIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19URVhUOgorICAg
ICAgICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0KHNlbGVjdGlvbl9kYXRhLCBzZWxlY3Rpb25fZGF0
YS0+dGFyZ2V0LCA4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgZ3VjaGFyKj4oY2xpcGJvYXJkLT50ZXh0KCkudXRmOCgpLmRhdGEoKSksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpcGJvYXJkLT50ZXh0KCkubGVuZ3RoKCkp
OworICAgICAgICByZXR1cm47CisgICAgY2FzZSBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9f
SU1BR0U6CisgICAgICAgIGd0a19zZWxlY3Rpb25fZGF0YV9zZXRfcGl4YnVmKHNlbGVjdGlvbl9k
YXRhLCBjbGlwYm9hcmQtPmltYWdlKCkpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBXRUJL
SVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fVVJJX0xJU1Q6CisgICAgICAgIGRhdGEgPSBnX3N0cmR1
cF9wcmludGYoIiVzXHJcbiVzXHJcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y2xpcGJvYXJkLT51cmwoKS51dGY4KCkuZGF0YSgpLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChjbGlwYm9hcmQtPnVybExhYmVsKCkuaXNFbXB0eSgpIHx8IGNsaXBib2FyZC0+dXJs
TGFiZWwoKS5pc051bGwoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBjbGlw
Ym9hcmQtPnVybCgpLnV0ZjgoKS5kYXRhKCkgOiBjbGlwYm9hcmQtPnVybExhYmVsKCkudXRmOCgp
LmRhdGEoKSk7CisgICAgICAgIGd0a19zZWxlY3Rpb25fZGF0YV9zZXQoc2VsZWN0aW9uX2RhdGEs
IHNlbGVjdGlvbl9kYXRhLT50YXJnZXQsIDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVpbnRlcnByZXRfY2FzdDxndWNoYXIqPihkYXRhKSwgc3RybGVuKGRhdGEpKTsKKyAgICAg
ICAgZ19mcmVlKGRhdGEpOworICAgICAgICByZXR1cm47CisgICAgY2FzZSBXRUJLSVRfV0VCX1ZJ
RVdfVEFSR0VUX0lORk9fTkVUU0NBUEVfVVJMOgorICAgICAgICBkYXRhID0gZ19zdHJkdXBfcHJp
bnRmKCIlc1xuJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaXBib2FyZC0+
dXJsKCkudXRmOCgpLmRhdGEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xp
cGJvYXJkLT51cmxMYWJlbCgpLmlzRW1wdHkoKSB8fCBjbGlwYm9hcmQtPnVybExhYmVsKCkuaXNO
dWxsKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gY2xpcGJvYXJkLT51cmwo
KS51dGY4KCkuZGF0YSgpIDogY2xpcGJvYXJkLT51cmxMYWJlbCgpLnV0ZjgoKS5kYXRhKCkpOwor
ICAgICAgICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0KHNlbGVjdGlvbl9kYXRhLCBzZWxlY3Rpb25f
ZGF0YS0+dGFyZ2V0LCA4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJw
cmV0X2Nhc3Q8Z3VjaGFyKj4oZGF0YSksIHN0cmxlbihkYXRhKSk7CisgICAgICAgIGdfZnJlZShk
YXRhKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKwogc3RhdGljIHZvaWQgd2Via2l0X3dl
Yl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiB7CiAg
ICAgR3RrQmluZGluZ1NldCogYmluZGluZ19zZXQ7CkBAIC0xNzUzLDYgKzE4MDIsOCBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdl
YlZpZXdDbGFzcykKICAgICB3aWRnZXRDbGFzcy0+Zm9jdXNfb3V0X2V2ZW50ID0gd2Via2l0X3dl
Yl92aWV3X2ZvY3VzX291dF9ldmVudDsKICAgICB3aWRnZXRDbGFzcy0+Z2V0X2FjY2Vzc2libGUg
PSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2FjY2Vzc2libGU7CiAgICAgd2lkZ2V0Q2xhc3MtPnNjcmVl
bl9jaGFuZ2VkID0gd2Via2l0X3dlYl92aWV3X3NjcmVlbl9jaGFuZ2VkOworICAgIHdpZGdldENs
YXNzLT5kcmFnX2VuZCA9IHdlYmtpdF93ZWJfdmlld19kcmFnX2VuZDsKKyAgICB3aWRnZXRDbGFz
cy0+ZHJhZ19kYXRhX2dldCA9IHdlYmtpdF93ZWJfdmlld19kcmFnX2RhdGFfZ2V0OwogCiAgICAg
R3RrQ29udGFpbmVyQ2xhc3MqIGNvbnRhaW5lckNsYXNzID0gR1RLX0NPTlRBSU5FUl9DTEFTUyh3
ZWJWaWV3Q2xhc3MpOwogICAgIGNvbnRhaW5lckNsYXNzLT5hZGQgPSB3ZWJraXRfd2ViX3ZpZXdf
Y29udGFpbmVyX2FkZDsKQEAgLTIxODUsNyArMjIzNiw3IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93
ZWJfdmlld19pbml0KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCiAgICAgcHJpdi0+aW1Db250ZXh0
ID0gZ3RrX2ltX211bHRpY29udGV4dF9uZXcoKTsKIAogICAgIFdlYktpdDo6SW5zcGVjdG9yQ2xp
ZW50KiBpbnNwZWN0b3JDbGllbnQgPSBuZXcgV2ViS2l0OjpJbnNwZWN0b3JDbGllbnQod2ViVmll
dyk7Ci0gICAgcHJpdi0+Y29yZVBhZ2UgPSBuZXcgUGFnZShuZXcgV2ViS2l0OjpDaHJvbWVDbGll
bnQod2ViVmlldyksIG5ldyBXZWJLaXQ6OkNvbnRleHRNZW51Q2xpZW50KHdlYlZpZXcpLCBuZXcg
V2ViS2l0OjpFZGl0b3JDbGllbnQod2ViVmlldyksIG5ldyBXZWJLaXQ6OkRyYWdDbGllbnQsIGlu
c3BlY3RvckNsaWVudCk7CisgICAgcHJpdi0+Y29yZVBhZ2UgPSBuZXcgUGFnZShuZXcgV2ViS2l0
OjpDaHJvbWVDbGllbnQod2ViVmlldyksIG5ldyBXZWJLaXQ6OkNvbnRleHRNZW51Q2xpZW50KHdl
YlZpZXcpLCBuZXcgV2ViS2l0OjpFZGl0b3JDbGllbnQod2ViVmlldyksIG5ldyBXZWJLaXQ6OkRy
YWdDbGllbnQod2ViVmlldyksIGluc3BlY3RvckNsaWVudCk7CiAKICAgICAvLyBXZSBhbHNvIGFk
ZCBhIHNpbXBsZSB3cmFwcGVyIGNsYXNzIHRvIHByb3ZpZGUgdGhlIHB1YmxpYwogICAgIC8vIGlu
dGVyZmFjZSBmb3IgdGhlIFdlYiBJbnNwZWN0b3IuCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJ2aWV3LmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgK
aW5kZXggNjBkMzMwZS4uZTZiMGM3OCAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2Vidmlldy5oCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaApAQCAt
NTIsNyArNTIsMTAgQEAgdHlwZWRlZiBlbnVtIHsKIHR5cGVkZWYgZW51bQogewogICAgIFdFQktJ
VF9XRUJfVklFV19UQVJHRVRfSU5GT19IVE1MLAotICAgIFdFQktJVF9XRUJfVklFV19UQVJHRVRf
SU5GT19URVhUCisgICAgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX1RFWFQsCisgICAgV0VC
S0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX0lNQUdFLAorICAgIFdFQktJVF9XRUJfVklFV19UQVJH
RVRfSU5GT19VUklfTElTVCwKKyAgICBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fTkVUU0NB
UEVfVVJMCiB9IFdlYktpdFdlYlZpZXdUYXJnZXRJbmZvOwogCiBzdHJ1Y3QgX1dlYktpdFdlYlZp
ZXcgewo=
</data>
<flag name="review"
          id="16829"
          type_id="1"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33515</attachid>
            <date>2009-07-26 12:26:47 -0700</date>
            <delta_ts>2009-08-12 06:15:31 -0700</delta_ts>
            <desc>Third patch</desc>
            <filename>dnd-r.4.diff</filename>
            <type>text/plain</type>
            <size>11050</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
aW5kZXggNzRjNjQ2NC4uYjcyMmRkYiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAwOS0wNy0yNiAg
WmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIERyYWcgYW5kIGRyb3Agc3VwcG9y
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NDIK
KworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgZHJhZyBhY3Rpb25zIGluIFdlYktpdFdlYlZpZXcg
YW5kIERyYWdDbGllbnQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3Rr
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhZ0NsaWVudDo6RHJhZ0NsaWVudCk6CisgICAgICAg
IChXZWJLaXQ6OkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbik6CisgICAg
ICAgIChXZWJLaXQ6OkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyk6CisgICAgICAgIChXZWJLaXQ6OkRy
YWdDbGllbnQ6OmNyZWF0ZURyYWdJbWFnZUZvckxpbmspOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L0RyYWdDbGllbnRHdGsuaDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6
CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZHJhZ19lbmQpOgorICAgICAgICAod2Via2l0X3dl
Yl92aWV3X2RyYWdfZGF0YV9nZXQpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2NsYXNzX2lu
aXQpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2luaXQpOgorICAgICAgICAqIHdlYmtpdC93
ZWJraXR3ZWJ2aWV3Lmg6CisKIDIwMDktMDctMjQgIFByaWl0IExhZXMgIDxwbGFlc0BwbGFlcy5v
cmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWGFuIExvcGV6LgpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3RrLmNwcCBiL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRHJhZ0NsaWVudEd0ay5jcHAKaW5kZXggZjU1YjZlYS4uM2NiMjZjNSAxMDA2NDQK
LS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3RrLmNwcAorKysgYi9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRHdGsuY3BwCkBAIC0xNywyMCArMTcs
MzIgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEcmFnQ2xpZW50R3RrLmgiCiAK
KyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJO
b3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIndl
YmtpdHByaXZhdGUuaCIKKworI2luY2x1ZGUgPGd0ay9ndGsuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitEcmFnQ2xpZW50OjpEcmFnQ2xpZW50
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCisgICAgOiBtX3dlYlZpZXcod2ViVmlldykKKyAgICAs
IG1fc3RhcnRQb3MoMCwgMCkKK3sKK30KKwogdm9pZCBEcmFnQ2xpZW50Ojp3aWxsUGVyZm9ybURy
YWdEZXN0aW5hdGlvbkFjdGlvbihEcmFnRGVzdGluYXRpb25BY3Rpb24sIERyYWdEYXRhKikKIHsK
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIERyYWdDbGllbnQ6OndpbGxQZXJmb3Jt
RHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uLCBjb25zdCBJbnRQb2ludCYsIENsaXBi
b2FyZCopCit2b2lkIERyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFn
U291cmNlQWN0aW9uLCBjb25zdCBJbnRQb2ludCYgc3RhcnRQb3MsIENsaXBib2FyZCopCiB7Ci0g
ICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX3N0YXJ0UG9zID0gc3RhcnRQb3M7CiB9CiAKIERy
YWdEZXN0aW5hdGlvbkFjdGlvbiBEcmFnQ2xpZW50OjphY3Rpb25NYXNrRm9yRHJhZyhEcmFnRGF0
YSopCkBAIC00NSwxMiArNTcsNjQgQEAgRHJhZ1NvdXJjZUFjdGlvbiBEcmFnQ2xpZW50OjpkcmFn
U291cmNlQWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IEludFBvaW50JikKICAgICByZXR1cm4gRHJh
Z1NvdXJjZUFjdGlvbkFueTsKIH0KIAotdm9pZCBEcmFnQ2xpZW50OjpzdGFydERyYWcoRHJhZ0lt
YWdlUmVmLCBjb25zdCBJbnRQb2ludCYsIGNvbnN0IEludFBvaW50JiwgQ2xpcGJvYXJkKiwgRnJh
bWUqLCBib29sKQordm9pZCBEcmFnQ2xpZW50OjpzdGFydERyYWcoRHJhZ0ltYWdlUmVmIGltYWdl
LCBjb25zdCBJbnRQb2ludCYgZHJhZ0ltYWdlT3JpZ2luLCBjb25zdCBJbnRQb2ludCYgZXZlbnRQ
b3MsIENsaXBib2FyZCosIEZyYW1lKiwgYm9vbCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwor
ICAgIEZyYW1lKiBmb2N1c2VkRnJhbWUgPSBjb3JlKHdlYmtpdF93ZWJfdmlld19nZXRfZm9jdXNl
ZF9mcmFtZShtX3dlYlZpZXcpKTsKKyAgICBFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gZm9jdXNl
ZEZyYW1lLT5kb2N1bWVudCgpLT5lbGVtZW50RnJvbVBvaW50KG1fc3RhcnRQb3MueCgpLCBtX3N0
YXJ0UG9zLnkoKSk7CisgICAgYm9vbCBpc0VsZW1lbnRMaW5rID0gZmFsc2U7CisgICAgYm9vbCBp
c0VsZW1lbnRJbWFnZSA9IGZhbHNlOworCisgICAgaWYgKHRhcmdldEVsZW1lbnQpIHsKKyAgICAg
ICAgaXNFbGVtZW50SW1hZ2UgPSB0YXJnZXRFbGVtZW50LT5yZW5kZXJlcigpLT5pc0ltYWdlKCk7
CisKKyAgICAgICAgTm9kZSogdGFyZ2V0Tm9kZSA9IHN0YXRpY19jYXN0PE5vZGUqPih0YXJnZXRF
bGVtZW50KTsKKyAgICAgICAgZm9yIChOb2RlKiBwID0gdGFyZ2V0Tm9kZTsgcDsgcCA9IHAtPnBh
cmVudE5vZGUoKSkgeworICAgICAgICAgICAgaWYgKHAtPmlzTGluaygpKSB7CisgICAgICAgICAg
ICAgICAgaXNFbGVtZW50TGluayA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBHZGtBdG9tIHRleHRIdG1sID0gZ2Rr
X2F0b21faW50ZXJuX3N0YXRpY19zdHJpbmcoInRleHQvaHRtbCIpOworICAgIEdka0F0b20gbmV0
c2NhcGVVcmwgPSBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygiX05FVFNDQVBFX1VSTCIp
OworCisgICAgR3RrVGFyZ2V0TGlzdCogdGFyZ2V0TGlzdCA9IGd0a190YXJnZXRfbGlzdF9uZXco
TlVMTCwgMCk7CisgICAgZ3RrX3RhcmdldF9saXN0X2FkZCh0YXJnZXRMaXN0LCB0ZXh0SHRtbCwg
MCwgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX0hUTUwpOworICAgIGd0a190YXJnZXRfbGlz
dF9hZGRfdGV4dF90YXJnZXRzKHRhcmdldExpc3QsIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5G
T19URVhUKTsKKworICAgIGlmIChpc0VsZW1lbnRMaW5rIHx8IGlzRWxlbWVudEltYWdlKSB7Cisg
ICAgICAgIGd0a190YXJnZXRfbGlzdF9hZGQodGFyZ2V0TGlzdCwgbmV0c2NhcGVVcmwsIDAsIFdF
QktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19ORVRTQ0FQRV9VUkwpOworICAgICAgICBndGtfdGFy
Z2V0X2xpc3RfYWRkX3VyaV90YXJnZXRzKHRhcmdldExpc3QsIFdFQktJVF9XRUJfVklFV19UQVJH
RVRfSU5GT19VUklfTElTVCk7CisgICAgfQorCisgICAgaWYgKGlzRWxlbWVudEltYWdlKQorICAg
ICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkX2ltYWdlX3RhcmdldHModGFyZ2V0TGlzdCwgV0VCS0lU
X1dFQl9WSUVXX1RBUkdFVF9JTkZPX0lNQUdFLCBmYWxzZSk7CisKKyAgICBHZGtEcmFnQWN0aW9u
IGRyYWdBY3Rpb24gPSBHREtfQUNUSU9OX0NPUFk7CisgICAgaWYgKGlzRWxlbWVudExpbmspIHsK
KyAgICAgICAgZHJhZ0FjdGlvbiA9IEdES19BQ1RJT05fTElOSzsKKyAgICAgICAgaWYgKGlzRWxl
bWVudEltYWdlKQorICAgICAgICAgICAgZHJhZ0FjdGlvbiA9IChHZGtEcmFnQWN0aW9uKShkcmFn
QWN0aW9uIHwgR0RLX0FDVElPTl9DT1BZKTsKKyAgICB9CisKKyAgICBHZGtFdmVudCogZXZlbnQg
PSBnZGtfZXZlbnRfbmV3KEdES19CVVRUT05fUFJFU1MpOworICAgIHJlaW50ZXJwcmV0X2Nhc3Q8
R2RrRXZlbnRCdXR0b24qPihldmVudCktPndpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3dpbmRvdyhH
VEtfV0lER0VUKG1fd2ViVmlldykpOworICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R2RrRXZlbnRCdXR0
b24qPihldmVudCktPnRpbWUgPSBHREtfQ1VSUkVOVF9USU1FOworCisgICAgR2RrRHJhZ0NvbnRl
eHQqIGNvbnRleHQgPSBndGtfZHJhZ19iZWdpbihHVEtfV0lER0VUKG1fd2ViVmlldyksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRMaXN0LCBkcmFn
QWN0aW9uLCAxLCBldmVudCk7CisgICAgZ19vYmplY3RfcmVmKGNvbnRleHQpOworCisgICAgaWYg
KGltYWdlKQorICAgICAgICBndGtfZHJhZ19zZXRfaWNvbl9waXhidWYoY29udGV4dCwgaW1hZ2Us
IGV2ZW50UG9zLngoKSAtIGRyYWdJbWFnZU9yaWdpbi54KCksIGV2ZW50UG9zLnkoKSAtIGRyYWdJ
bWFnZU9yaWdpbi55KCkpOworICAgIGVsc2UKKyAgICAgICAgZ3RrX2RyYWdfc2V0X2ljb25fZGVm
YXVsdChjb250ZXh0KTsKKworICAgIGd0a190YXJnZXRfbGlzdF91bnJlZih0YXJnZXRMaXN0KTsK
IH0KIAotRHJhZ0ltYWdlUmVmIERyYWdDbGllbnQ6OmNyZWF0ZURyYWdJbWFnZUZvckxpbmsoS1VS
TCYsIGNvbnN0IFN0cmluZyYgbGFiZWwsIEZyYW1lKikKK0RyYWdJbWFnZVJlZiBEcmFnQ2xpZW50
OjpjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKEtVUkwmLCBjb25zdCBTdHJpbmcmLCBGcmFtZSopCiB7
CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudEd0ay5oIGIvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9EcmFnQ2xpZW50R3RrLmgKaW5kZXggNDM2N2M2OC4uOTdlYTcyYSAxMDA2NDQKLS0t
IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3RrLmgKKysrIGIvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3RrLmgKQEAgLTMyLDkgKzMyLDE0IEBACiAK
ICNpbmNsdWRlICJEcmFnQ2xpZW50LmgiCiAKK3R5cGVkZWYgc3RydWN0IF9XZWJLaXRXZWJWaWV3
IFdlYktpdFdlYlZpZXc7CisKIG5hbWVzcGFjZSBXZWJLaXQgeworCiAgICAgY2xhc3MgRHJhZ0Ns
aWVudCA6IHB1YmxpYyBXZWJDb3JlOjpEcmFnQ2xpZW50IHsKICAgICBwdWJsaWM6CisgICAgICAg
IERyYWdDbGllbnQoV2ViS2l0V2ViVmlldyopOworCiAgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxs
UGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbihXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rp
b24sIFdlYkNvcmU6OkRyYWdEYXRhKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsUGVyZm9y
bURyYWdTb3VyY2VBY3Rpb24oV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiwgY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmLCBXZWJDb3JlOjpDbGlwYm9hcmQqKTsKICAgICAgICAgdmlydHVhbCBXZWJD
b3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24gYWN0aW9uTWFza0ZvckRyYWcoV2ViQ29yZTo6RHJh
Z0RhdGEqKTsKQEAgLTQ1LDYgKzUwLDEwIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAgICB2
aXJ0dWFsIFdlYkNvcmU6OkRyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKFdlYkNv
cmU6OktVUkwmLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGxhYmVsLCBXZWJDb3JlOjpGcmFtZSop
OwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkcmFnQ29udHJvbGxlckRlc3Ryb3llZCgpOworCisg
ICAgICAgIHByaXZhdGU6CisgICAgICAgICAgICBXZWJLaXRXZWJWaWV3KiBtX3dlYlZpZXc7Cisg
ICAgICAgICAgICBXZWJDb3JlOjpJbnRQb2ludCBtX3N0YXJ0UG9zOwogICAgIH07CiB9CiAKZGlm
ZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5kZXggODE2NDE0Yy4uYWU1Y2VjZCAxMDA2NDQK
LS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysrIGIvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJE
b2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVyLmgiCiAjaW5jbHVkZSAiRHJhZ0Ns
aWVudEd0ay5oIgorI2luY2x1ZGUgIkRyYWdDbGlwYm9hcmQuaCIKICNpbmNsdWRlICJFZGl0b3Iu
aCIKICNpbmNsdWRlICJFZGl0b3JDbGllbnRHdGsuaCIKICNpbmNsdWRlICJFdmVudEhhbmRsZXIu
aCIKQEAgLTEwODEsNiArMTA4Miw1NSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2Ny
ZWVuX2NoYW5nZWQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka1NjcmVlbiogcHJldmlvdQogICAgIHNl
dHRpbmdzLT5zZXRNaW5pbXVtTG9naWNhbEZvbnRTaXplKG1pbmltdW1Mb2dpY2FsRm9udFNpemUg
LyA3Mi4wICogRFBJKTsKIH0KIAorc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2RyYWdfZW5k
KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtEcmFnQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBEcmFn
Q2xpcGJvYXJkOjpjbGlwYm9hcmQoKS0+cmVzZXRDbGlwYm9hcmQoKTsKKworICAgIGdfb2JqZWN0
X3VucmVmKGNvbnRleHQpOworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZHJhZ19k
YXRhX2dldChHdGtXaWRnZXQqIHdpZGdldCwgR2RrRHJhZ0NvbnRleHQqIGNvbnRleHQsIEd0a1Nl
bGVjdGlvbkRhdGEqIHNlbGVjdGlvbl9kYXRhLCBndWludCBpbmZvLCBndWludCB0aW1lXykKK3sK
KyAgICBEcmFnQ2xpcGJvYXJkKiBjbGlwYm9hcmQgPSBEcmFnQ2xpcGJvYXJkOjpjbGlwYm9hcmQo
KTsKKyAgICBjaGFyKiBkYXRhOworCisgICAgc3dpdGNoIChpbmZvKSB7CisgICAgY2FzZSBXRUJL
SVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fSFRNTDoKKyAgICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRh
X3NldChzZWxlY3Rpb25fZGF0YSwgc2VsZWN0aW9uX2RhdGEtPnRhcmdldCwgOCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IGd1Y2hhcio+KChj
bGlwYm9hcmQtPmh0bWwoKS5pc0VtcHR5KCkgfHwgY2xpcGJvYXJkLT5odG1sKCkuaXNOdWxsKCkp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgPyBjbGlwYm9hcmQtPnRleHQoKS51dGY4KCkuZGF0YSgpIDogY2xpcGJvYXJkLT5o
dG1sKCkudXRmOCgpLmRhdGEoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNs
aXBib2FyZC0+aHRtbCgpLmlzRW1wdHkoKSB8fCBjbGlwYm9hcmQtPmh0bWwoKS5pc051bGwoKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBjbGlwYm9hcmQtPnRleHQoKS5sZW5n
dGgoKSA6IGNsaXBib2FyZC0+aHRtbCgpLmxlbmd0aCgpKTsKKyAgICAgICAgcmV0dXJuOworICAg
IGNhc2UgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX1RFWFQ6CisgICAgICAgIGd0a19zZWxl
Y3Rpb25fZGF0YV9zZXQoc2VsZWN0aW9uX2RhdGEsIHNlbGVjdGlvbl9kYXRhLT50YXJnZXQsIDgs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBn
dWNoYXIqPihjbGlwYm9hcmQtPnRleHQoKS51dGY4KCkuZGF0YSgpKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjbGlwYm9hcmQtPnRleHQoKS5sZW5ndGgoKSk7CisgICAgICAgIHJl
dHVybjsKKyAgICBjYXNlIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19JTUFHRToKKyAgICAg
ICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3NldF9waXhidWYoc2VsZWN0aW9uX2RhdGEsIGNsaXBib2Fy
ZC0+aW1hZ2UoKSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFdFQktJVF9XRUJfVklFV19U
QVJHRVRfSU5GT19VUklfTElTVDoKKyAgICAgICAgZGF0YSA9IGdfc3RyZHVwX3ByaW50ZigiJXNc
clxuJXNcclxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwYm9hcmQtPnVy
bCgpLnV0ZjgoKS5kYXRhKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaXBi
b2FyZC0+dXJsTGFiZWwoKS5pc0VtcHR5KCkgfHwgY2xpcGJvYXJkLT51cmxMYWJlbCgpLmlzTnVs
bCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGNsaXBib2FyZC0+dXJsKCku
dXRmOCgpLmRhdGEoKSA6IGNsaXBib2FyZC0+dXJsTGFiZWwoKS51dGY4KCkuZGF0YSgpKTsKKyAg
ICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3NldChzZWxlY3Rpb25fZGF0YSwgc2VsZWN0aW9uX2Rh
dGEtPnRhcmdldCwgOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJl
dF9jYXN0PGd1Y2hhcio+KGRhdGEpLCBzdHJsZW4oZGF0YSkpOworICAgICAgICBnX2ZyZWUoZGF0
YSk7CisgICAgICAgIHJldHVybjsKKyAgICBjYXNlIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5G
T19ORVRTQ0FQRV9VUkw6CisgICAgICAgIGRhdGEgPSBnX3N0cmR1cF9wcmludGYoIiVzXG4lcyIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpcGJvYXJkLT51cmwoKS51dGY4KCku
ZGF0YSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGlwYm9hcmQtPnVybExh
YmVsKCkuaXNFbXB0eSgpIHx8IGNsaXBib2FyZC0+dXJsTGFiZWwoKS5pc051bGwoKSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBjbGlwYm9hcmQtPnVybCgpLnV0ZjgoKS5kYXRh
KCkgOiBjbGlwYm9hcmQtPnVybExhYmVsKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGd0a19z
ZWxlY3Rpb25fZGF0YV9zZXQoc2VsZWN0aW9uX2RhdGEsIHNlbGVjdGlvbl9kYXRhLT50YXJnZXQs
IDgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxndWNo
YXIqPihkYXRhKSwgc3RybGVuKGRhdGEpKTsKKyAgICAgICAgZ19mcmVlKGRhdGEpOworICAgICAg
ICByZXR1cm47CisgICAgfQorfQorCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3Nf
aW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKIHsKICAgICBHdGtCaW5kaW5n
U2V0KiBiaW5kaW5nX3NldDsKQEAgLTE4MTYsNiArMTg2Niw4IEBAIHN0YXRpYyB2b2lkIHdlYmtp
dF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQog
ICAgIHdpZGdldENsYXNzLT5mb2N1c19vdXRfZXZlbnQgPSB3ZWJraXRfd2ViX3ZpZXdfZm9jdXNf
b3V0X2V2ZW50OwogICAgIHdpZGdldENsYXNzLT5nZXRfYWNjZXNzaWJsZSA9IHdlYmtpdF93ZWJf
dmlld19nZXRfYWNjZXNzaWJsZTsKICAgICB3aWRnZXRDbGFzcy0+c2NyZWVuX2NoYW5nZWQgPSB3
ZWJraXRfd2ViX3ZpZXdfc2NyZWVuX2NoYW5nZWQ7CisgICAgd2lkZ2V0Q2xhc3MtPmRyYWdfZW5k
ID0gd2Via2l0X3dlYl92aWV3X2RyYWdfZW5kOworICAgIHdpZGdldENsYXNzLT5kcmFnX2RhdGFf
Z2V0ID0gd2Via2l0X3dlYl92aWV3X2RyYWdfZGF0YV9nZXQ7CiAKICAgICBHdGtDb250YWluZXJD
bGFzcyogY29udGFpbmVyQ2xhc3MgPSBHVEtfQ09OVEFJTkVSX0NMQVNTKHdlYlZpZXdDbGFzcyk7
CiAgICAgY29udGFpbmVyQ2xhc3MtPmFkZCA9IHdlYmtpdF93ZWJfdmlld19jb250YWluZXJfYWRk
OwpAQCAtMjI1Miw3ICsyMzA0LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2luaXQo
V2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICBwcml2LT5pbUNvbnRleHQgPSBndGtfaW1fbXVs
dGljb250ZXh0X25ldygpOwogCiAgICAgV2ViS2l0OjpJbnNwZWN0b3JDbGllbnQqIGluc3BlY3Rv
ckNsaWVudCA9IG5ldyBXZWJLaXQ6Okluc3BlY3RvckNsaWVudCh3ZWJWaWV3KTsKLSAgICBwcml2
LT5jb3JlUGFnZSA9IG5ldyBQYWdlKG5ldyBXZWJLaXQ6OkNocm9tZUNsaWVudCh3ZWJWaWV3KSwg
bmV3IFdlYktpdDo6Q29udGV4dE1lbnVDbGllbnQod2ViVmlldyksIG5ldyBXZWJLaXQ6OkVkaXRv
ckNsaWVudCh3ZWJWaWV3KSwgbmV3IFdlYktpdDo6RHJhZ0NsaWVudCwgaW5zcGVjdG9yQ2xpZW50
KTsKKyAgICBwcml2LT5jb3JlUGFnZSA9IG5ldyBQYWdlKG5ldyBXZWJLaXQ6OkNocm9tZUNsaWVu
dCh3ZWJWaWV3KSwgbmV3IFdlYktpdDo6Q29udGV4dE1lbnVDbGllbnQod2ViVmlldyksIG5ldyBX
ZWJLaXQ6OkVkaXRvckNsaWVudCh3ZWJWaWV3KSwgbmV3IFdlYktpdDo6RHJhZ0NsaWVudCh3ZWJW
aWV3KSwgaW5zcGVjdG9yQ2xpZW50KTsKIAogICAgIC8vIFdlIGFsc28gYWRkIGEgc2ltcGxlIHdy
YXBwZXIgY2xhc3MgdG8gcHJvdmlkZSB0aGUgcHVibGljCiAgICAgLy8gaW50ZXJmYWNlIGZvciB0
aGUgV2ViIEluc3BlY3Rvci4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdl
YnZpZXcuaCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaAppbmRleCBmYmRlZmE4
Li5kODdkODNkIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgK
KysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCkBAIC01Miw3ICs1MiwxMCBA
QCB0eXBlZGVmIGVudW0gewogdHlwZWRlZiBlbnVtCiB7CiAgICAgV0VCS0lUX1dFQl9WSUVXX1RB
UkdFVF9JTkZPX0hUTUwsCi0gICAgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX1RFWFQKKyAg
ICBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fVEVYVCwKKyAgICBXRUJLSVRfV0VCX1ZJRVdf
VEFSR0VUX0lORk9fSU1BR0UsCisgICAgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX1VSSV9M
SVNULAorICAgIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19ORVRTQ0FQRV9VUkwKIH0gV2Vi
S2l0V2ViVmlld1RhcmdldEluZm87CiAKIHN0cnVjdCBfV2ViS2l0V2ViVmlldyB7Cg==
</data>
<flag name="review"
          id="17780"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>33516</attachid>
            <date>2009-07-26 12:28:35 -0700</date>
            <delta_ts>2009-08-12 06:05:01 -0700</delta_ts>
            <desc>DragClipboard patch</desc>
            <filename>dnd-r.2.diff</filename>
            <type>text/plain</type>
            <size>5816</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
OTcxYzQxNC4uODRiZmU3ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAwOS0wNy0yNiAgWmFuIERvYmVyc2Vr
ICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFtHVEtdIERyYWcgYW5kIGRyb3Agc3VwcG9ydAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NDIKKworICAgICAgICBJ
bXBsZW1lbnQgYSBkYXRhIGhvbGRlciwgd2hpY2ggaXMgYWJsZSB0byBob2xkCisgICAgICAgIGRp
ZmZlcmVudCB0eXBlcyBvZiBkYXRhIGF0IHRoZSBzYW1lIHRpbWUuCisKKyAgICAgICAgR3RrIHRv
b2xraXQgbGFja3Mgc3VjaCBzdHJ1Y3R1cmVzLCB3aGljaCBhcmUKKyAgICAgICAgbmVjZXNzYXJ5
IGZvciBjb21wbGV0ZSBkcmFnIGFuZCBkcm9wIHN1cHBvcnQsCisgICAgICAgIHdoZXJlIGRyb3Ag
dGFyZ2V0IGNhbiByZXF1ZXN0IGZvciBkYXRhIGluIGRpZmZlcmVudAorICAgICAgICB0eXBlcywg
c3VjaCBhcyBpbWFnZSwgVVJMLCBsYWJlbCwgdGV4dCBldGMuCisKKyAgICAgICAgTm8gbmV3IHRl
c3RzIHJlcXVpcmVkIC0gdGhleSBhbHJlYWR5IGV4aXN0LiBXZSBzaW1wbHkKKyAgICAgICAgbmVl
ZCB0byBwYXNzIGFuZCBlbmFibGUgdGhlbS4KKworICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOgor
ICAgICAgICAqIHBsYXRmb3JtL2d0ay9EcmFnQ2xpcGJvYXJkLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpEcmFnQ2xpcGJvYXJkOjpEcmFnQ2xpcGJvYXJkKToKKyAgICAgICAgKFdlYkNv
cmU6OkRyYWdDbGlwYm9hcmQ6OmNsaXBib2FyZCk6CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ2xp
cGJvYXJkOjpyZXNldENsaXBib2FyZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL0RyYWdDbGlw
Ym9hcmQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpEcmFnQ2xpcGJvYXJkOjpzZXRUZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDbGlwYm9hcmQ6OnNldEh0bWwpOgorICAgICAgICAo
V2ViQ29yZTo6RHJhZ0NsaXBib2FyZDo6c2V0VXJsKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdD
bGlwYm9hcmQ6OnNldFVybExhYmVsKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDbGlwYm9hcmQ6
OnNldEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkRyYWdDbGlwYm9hcmQ6OnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6RHJhZ0NsaXBib2FyZDo6aHRtbCk6CisgICAgICAgIChXZWJDb3JlOjpE
cmFnQ2xpcGJvYXJkOjp1cmwpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NsaXBib2FyZDo6dXJs
TGFiZWwpOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NsaXBib2FyZDo6aW1hZ2UpOgorCiAyMDA5
LTA3LTI2ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IFRpbW90aHkgSGF0Y2hlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvR05VbWFr
ZWZpbGUuYW0gYi9XZWJDb3JlL0dOVW1ha2VmaWxlLmFtCmluZGV4IDZlZTRiNWMuLjc1ZDQwYWEg
MTAwNjQ0Ci0tLSBhL1dlYkNvcmUvR05VbWFrZWZpbGUuYW0KKysrIGIvV2ViQ29yZS9HTlVtYWtl
ZmlsZS5hbQpAQCAtMTg2Niw2ICsxODY2LDggQEAgd2ViY29yZWd0a19zb3VyY2VzICs9IFwKIAlX
ZWJDb3JlL3BsYXRmb3JtL2d0ay9Db250ZXh0TWVudUl0ZW1HdGsuY3BwIFwKIAlXZWJDb3JlL3Bs
YXRmb3JtL2d0ay9DdXJzb3JHdGsuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9DdXJzb3JH
dGsuaCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0NsaXBib2FyZC5jcHAgXAorCVdlYkNv
cmUvcGxhdGZvcm0vZ3RrL0RyYWdDbGlwYm9hcmQuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
RHJhZ0RhdGFHdGsuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFnSW1hZ2VHdGsuY3Bw
IFwKIAlXZWJDb3JlL3BsYXRmb3JtL2d0ay9FdmVudExvb3BHdGsuY3BwIFwKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdDbGlwYm9hcmQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvRHJhZ0NsaXBib2FyZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uYzQ5OGYzNgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0RyYWdD
bGlwYm9hcmQuY3BwCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkg
WmFuIERvYmVyc2VrIDx6YW5kb2JlcnNla0BnbWFpbC5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiRHJhZ0NsaXBib2FyZC5oIgorCisjaW5jbHVkZSAiRHJhZ0ltYWdlLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRHJhZ0NsaXBib2FyZDo6RHJhZ0NsaXBib2FyZCgp
CisgICAgOiBtX2ltYWdlKDApCit7Cit9CisKK0RyYWdDbGlwYm9hcmQqIERyYWdDbGlwYm9hcmQ6
OmNsaXBib2FyZCgpCit7CisgICAgc3RhdGljIERyYWdDbGlwYm9hcmQqIGNsaXBib2FyZCA9IDA7
CisKKyAgICBpZiAoIWNsaXBib2FyZCkKKyAgICAgICAgY2xpcGJvYXJkID0gbmV3IERyYWdDbGlw
Ym9hcmQ7CisKKyAgICByZXR1cm4gY2xpcGJvYXJkOworfQorCit2b2lkIERyYWdDbGlwYm9hcmQ6
OnJlc2V0Q2xpcGJvYXJkKCkKK3sKKyAgICBzZXRIdG1sKFN0cmluZygpKTsKKyAgICBzZXRUZXh0
KFN0cmluZygpKTsKKyAgICBzZXRVcmwoU3RyaW5nKCkpOworICAgIHNldFVybExhYmVsKFN0cmlu
ZygpKTsKKworICAgIGRlbGV0ZURyYWdJbWFnZShpbWFnZSgpKTsKKyAgICBzZXRJbWFnZSgwKTsK
K30KKworfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0NsaXBib2FyZC5o
IGIvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0NsaXBib2FyZC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmRkMWQwNzMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL2d0ay9EcmFnQ2xpcGJvYXJkLmgKQEAgLTAsMCArMSw2MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAwOSBaYW4gRG9iZXJzZWsgPHphbmRvYmVyc2VrQGdtYWlsLmNvbT4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNp
Zm5kZWYgRHJhZ0NsaXBib2FyZF9oCisjZGVmaW5lIERyYWdDbGlwYm9hcmRfaAorCisjaW5jbHVk
ZSAiRHJhZ0ltYWdlLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworICAgIGNsYXNzIFN0cmluZzsKKworICAgIGNsYXNzIERyYWdDbGlwYm9hcmQg
eworICAgIHB1YmxpYzoKKyAgICAgICAgRHJhZ0NsaXBib2FyZCgpOworCisgICAgICAgIHN0YXRp
YyBEcmFnQ2xpcGJvYXJkKiBjbGlwYm9hcmQoKTsKKworICAgICAgICB2b2lkIHNldFRleHQoY29u
c3QgU3RyaW5nJiB0ZXh0KSB7IG1fdGV4dCA9IHRleHQ7IH0KKyAgICAgICAgdm9pZCBzZXRIdG1s
KGNvbnN0IFN0cmluZyYgaHRtbCkgeyBtX2h0bWwgPSBodG1sOyB9CisgICAgICAgIHZvaWQgc2V0
VXJsKGNvbnN0IFN0cmluZyYgdXJsKSB7IG1fdXJsID0gdXJsOyB9CisgICAgICAgIHZvaWQgc2V0
VXJsTGFiZWwoY29uc3QgU3RyaW5nJiB1cmxMYWJlbCkgeyBtX3VybExhYmVsID0gdXJsTGFiZWw7
IH0KKyAgICAgICAgdm9pZCBzZXRJbWFnZShEcmFnSW1hZ2VSZWYgaW1hZ2UpIHsgbV9pbWFnZSA9
IGltYWdlOyB9CisKKyAgICAgICAgU3RyaW5nIHRleHQoKSB7IHJldHVybiBtX3RleHQ7IH0KKyAg
ICAgICAgU3RyaW5nIGh0bWwoKSB7IHJldHVybiBtX2h0bWw7IH0KKyAgICAgICAgU3RyaW5nIHVy
bCgpIHsgcmV0dXJuIG1fdXJsOyB9CisgICAgICAgIFN0cmluZyB1cmxMYWJlbCgpIHsgcmV0dXJu
IG1fdXJsTGFiZWw7IH0KKyAgICAgICAgRHJhZ0ltYWdlUmVmIGltYWdlKCkgeyByZXR1cm4gbV9p
bWFnZTsgfQorCisgICAgICAgIHZvaWQgcmVzZXRDbGlwYm9hcmQoKTsKKworICAgIHByaXZhdGU6
CisgICAgICAgIFN0cmluZyBtX3RleHQ7CisgICAgICAgIFN0cmluZyBtX2h0bWw7CisgICAgICAg
IFN0cmluZyBtX3VybDsKKyAgICAgICAgU3RyaW5nIG1fdXJsTGFiZWw7CisgICAgICAgIERyYWdJ
bWFnZVJlZiBtX2ltYWdlOworICAgIH07CisKK30KKworI2VuZGlmIC8vIERyYWdDbGlwYm9hcmRf
aAo=
</data>
<flag name="review"
          id="17781"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34658</attachid>
            <date>2009-08-12 06:05:01 -0700</date>
            <delta_ts>2009-08-13 15:31:31 -0700</delta_ts>
            <desc>Second patch</desc>
            <filename>dnd-2.diff</filename>
            <type>text/plain</type>
            <size>5439</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YzAzNjk0ZS4uMDlhODUyNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAwOS0wOC0xMSAgWmFuIERvYmVyc2Vr
ICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFtHVEtdIERyYWcgYW5kIGRyb3Agc3VwcG9ydAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NDIKKworICAgICAgICBV
dGlsaXplcyBmdW5jdGlvbnMgdGhhdCBhcmUgYmVpbmcgY2FsbGVkIHVwb24gZHJhZyBhbmQgZHJv
cCBhY3Rpb25zLgorICAgICAgICBVc2VzIGRpZmZlcmVudCBHVEsgY2xpcGJvYXJkcyB0aGF0IGhv
bGQgZGlmZmVyZW50IHR5cGVzCisgICAgICAgIG9mIGRyYWcgZGF0YSAtIGltYWdlcywgSFRNTCBt
YXJrdXAsIHRleHQsIFVSTCwgVVJMIGxhYmVsLgorICAgICAgICBBbHNvIGNsZWFycyBlYWNoIGNs
aXBib2FyZCBiZWZvcmUgc2V0dGluZyBuZXcgZGF0YSB0byBpdC4KKworICAgICAgICBObyBuZXcg
dGVzdHMgLSBkZXNwaXRlIHNvbWUgaW1wbGVtZW50YXRpb25zLCBubyBuZXcgZnVuY3Rpb25hbGl0
eQorICAgICAgICBpcyBhZGRlZCB1bnRpbCBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIEdUSyBkcmFn
IGFuZCBkcm9wIHByb3RvY29sCisgICAgICAgIGluIFdlYktpdCBwYXJ0LgorCisgICAgICAgICog
cGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9h
cmRHdGs6OkNsaXBib2FyZEd0ayk6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRHdGs6On5D
bGlwYm9hcmRHdGspOgorICAgICAgICAoV2ViQ29yZTo6Z2V0Q2FjaGVkSW1hZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6Q2xpcGJvYXJkR3RrOjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJkR3RrOjp3cml0ZVVSTCk6CisgICAgICAgIChXZWJDb3Jl
OjpDbGlwYm9hcmRHdGs6OndyaXRlUmFuZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9DbGlw
Ym9hcmRHdGsuaDogQ2xpcGJvYXJkR2RrIC0+IENsaXBib2FyZEd0aworCiAyMDA5LTA4LTA5ICBO
aWtvbGFzIFppbW1lcm1hbm4gIDxuaWtvbGFzLnppbW1lcm1hbm5AdG9yY2htb2JpbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IEdlb3JnZSBTdGFpa29zLgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0Ns
aXBib2FyZEd0ay5jcHAKaW5kZXggOGNiZjU5MC4uNDUwOTY2ZSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9DbGlwYm9hcmRHdGsuY3BwCkBAIC0xNywxMSArMTcsMTggQEAKICNpbmNsdWRlICJjb25maWcu
aCIKICNpbmNsdWRlICJDbGlwYm9hcmRHdGsuaCIKIAorI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgi
CisjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUgIkVkaXRvci5oIgorI2luY2x1ZGUgIkVs
ZW1lbnQuaCIKICNpbmNsdWRlICJGaWxlTGlzdC5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5j
bHVkZSAibWFya3VwLmgiCiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKKyNpbmNsdWRlICJS
ZW5kZXJJbWFnZS5oIgogI2luY2x1ZGUgIlN0cmluZ0hhc2guaCIKIAotI2luY2x1ZGUgIkVkaXRv
ci5oIgorI2luY2x1ZGUgPGd0ay9ndGsuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0z
MywxMiArNDAsMTAgQEAgUGFzc1JlZlB0cjxDbGlwYm9hcmQ+IEVkaXRvcjo6bmV3R2VuZXJhbENs
aXBib2FyZChDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5KQogQ2xpcGJvYXJkR3RrOjpDbGlw
Ym9hcmRHdGsoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgYm9vbCBmb3JEcmFnZ2luZykK
ICAgICA6IENsaXBib2FyZChwb2xpY3ksIGZvckRyYWdnaW5nKQogewotICAgIG5vdEltcGxlbWVu
dGVkKCk7CiB9CiAKIENsaXBib2FyZEd0azo6fkNsaXBib2FyZEd0aygpCiB7Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKIH0KIAogdm9pZCBDbGlwYm9hcmRHdGs6OmNsZWFyRGF0YShjb25zdCBTdHJp
bmcmKQpAQCAtMTEwLDE5ICsxMTUsNjUgQEAgRHJhZ0ltYWdlUmVmIENsaXBib2FyZEd0azo6Y3Jl
YXRlRHJhZ0ltYWdlKEludFBvaW50JikgY29uc3QKICAgICByZXR1cm4gMDsKIH0KIAotdm9pZCBD
bGlwYm9hcmRHdGs6OmRlY2xhcmVBbmRXcml0ZURyYWdJbWFnZShFbGVtZW50KiwgY29uc3QgS1VS
TCYsIGNvbnN0IFN0cmluZyYsIEZyYW1lKikKK3N0YXRpYyBDYWNoZWRJbWFnZSogZ2V0Q2FjaGVk
SW1hZ2UoRWxlbWVudCogZWxlbWVudCkKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIC8v
IEF0dGVtcHQgdG8gcHVsbCBDYWNoZWRJbWFnZSBmcm9tIGVsZW1lbnQKKyAgICBBU1NFUlQoZWxl
bWVudCk7CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGVsZW1lbnQtPnJlbmRlcmVyKCk7
CisgICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzSW1hZ2UoKSkKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICBSZW5kZXJJbWFnZSogaW1hZ2UgPSBzdGF0aWNfY2FzdDxSZW5kZXJJbWFn
ZSo+KHJlbmRlcmVyKTsKKyAgICBpZiAoaW1hZ2UtPmNhY2hlZEltYWdlKCkgJiYgIWltYWdlLT5j
YWNoZWRJbWFnZSgpLT5lcnJvck9jY3VycmVkKCkpCisgICAgICAgIHJldHVybiBpbWFnZS0+Y2Fj
aGVkSW1hZ2UoKTsKKworICAgIHJldHVybiAwOwogfQogCi12b2lkIENsaXBib2FyZEd0azo6d3Jp
dGVVUkwoY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYsIEZyYW1lKikKK3ZvaWQgQ2xpcGJvYXJk
R3RrOjpkZWNsYXJlQW5kV3JpdGVEcmFnSW1hZ2UoRWxlbWVudCogZWxlbWVudCwgY29uc3QgS1VS
TCYgdXJsLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBGcmFtZSopCiB7Ci0gICAgbm90SW1wbGVtZW50
ZWQoKTsKKyAgICBDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBnZXRDYWNoZWRJbWFnZShlbGVt
ZW50KTsKKyAgICBpZiAoIWNhY2hlZEltYWdlIHx8ICFjYWNoZWRJbWFnZS0+aXNMb2FkZWQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgR2RrUGl4YnVmKiBwaXhidWYgPSBjYWNoZWRJbWFnZS0+
aW1hZ2UoKS0+Z2V0R2RrUGl4YnVmKCk7CisgICAgaWYgKCFwaXhidWYpCisgICAgICAgIHJldHVy
bjsKKworICAgIEd0a0NsaXBib2FyZCogaW1hZ2VDbGlwYm9hcmQgPSBndGtfY2xpcGJvYXJkX2dl
dChnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygiV2ViS2l0Q2xpcGJvYXJkSW1hZ2UiKSk7
CisgICAgZ3RrX2NsaXBib2FyZF9jbGVhcihpbWFnZUNsaXBib2FyZCk7CisKKyAgICBndGtfY2xp
cGJvYXJkX3NldF9pbWFnZShpbWFnZUNsaXBib2FyZCwgcGl4YnVmKTsKKyAgICBnX29iamVjdF91
bnJlZihwaXhidWYpOworCisgICAgd3JpdGVVUkwodXJsLCBsYWJlbCwgMCk7CiB9CiAKLXZvaWQg
Q2xpcGJvYXJkR3RrOjp3cml0ZVJhbmdlKFJhbmdlKiwgRnJhbWUqKQordm9pZCBDbGlwYm9hcmRH
dGs6OndyaXRlVVJMKGNvbnN0IEtVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgRnJhbWUq
KQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgR3RrQ2xpcGJvYXJkKiB0ZXh0Q2xpcGJv
YXJkID0gZ3RrX2NsaXBib2FyZF9nZXQoZ2RrX2F0b21faW50ZXJuX3N0YXRpY19zdHJpbmcoIldl
YktpdENsaXBib2FyZFRleHQiKSk7CisgICAgR3RrQ2xpcGJvYXJkKiB1cmxDbGlwYm9hcmQgPSBn
dGtfY2xpcGJvYXJkX2dldChnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygiV2ViS2l0Q2xp
cGJvYXJkVXJsIikpOworICAgIEd0a0NsaXBib2FyZCogdXJsTGFiZWxDbGlwYm9hcmQgPSBndGtf
Y2xpcGJvYXJkX2dldChnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygiV2ViS2l0Q2xpcGJv
YXJkVXJsTGFiZWwiKSk7CisKKyAgICBndGtfY2xpcGJvYXJkX2NsZWFyKHRleHRDbGlwYm9hcmQp
OworICAgIGd0a19jbGlwYm9hcmRfY2xlYXIodXJsQ2xpcGJvYXJkKTsKKyAgICBndGtfY2xpcGJv
YXJkX2NsZWFyKHVybExhYmVsQ2xpcGJvYXJkKTsKKworICAgIGd0a19jbGlwYm9hcmRfc2V0X3Rl
eHQodGV4dENsaXBib2FyZCwgdXJsLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIC0xKTsKKyAgICBn
dGtfY2xpcGJvYXJkX3NldF90ZXh0KHVybENsaXBib2FyZCwgdXJsLnN0cmluZygpLnV0ZjgoKS5k
YXRhKCksIC0xKTsKKyAgICBndGtfY2xpcGJvYXJkX3NldF90ZXh0KHVybExhYmVsQ2xpcGJvYXJk
LCBsYWJlbC51dGY4KCkuZGF0YSgpLCAtMSk7Cit9CisKK3ZvaWQgQ2xpcGJvYXJkR3RrOjp3cml0
ZVJhbmdlKFJhbmdlKiByYW5nZSwgRnJhbWUqIGZyYW1lKQoreworICAgIEd0a0NsaXBib2FyZCog
dGV4dENsaXBib2FyZCA9IGd0a19jbGlwYm9hcmRfZ2V0KGdka19hdG9tX2ludGVybl9zdGF0aWNf
c3RyaW5nKCJXZWJLaXRDbGlwYm9hcmRUZXh0IikpOworICAgIEd0a0NsaXBib2FyZCogaHRtbENs
aXBib2FyZCA9IGd0a19jbGlwYm9hcmRfZ2V0KGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5n
KCJXZWJLaXRDbGlwYm9hcmRIdG1sIikpOworCisgICAgZ3RrX2NsaXBib2FyZF9jbGVhcih0ZXh0
Q2xpcGJvYXJkKTsKKyAgICBndGtfY2xpcGJvYXJkX2NsZWFyKGh0bWxDbGlwYm9hcmQpOworCisg
ICAgZ3RrX2NsaXBib2FyZF9zZXRfdGV4dCh0ZXh0Q2xpcGJvYXJkLCBmcmFtZS0+c2VsZWN0ZWRU
ZXh0KCkudXRmOCgpLmRhdGEoKSwgLTEpOworICAgIGd0a19jbGlwYm9hcmRfc2V0X3RleHQoaHRt
bENsaXBib2FyZCwgY3JlYXRlTWFya3VwKHJhbmdlLCAwLCBBbm5vdGF0ZUZvckludGVyY2hhbmdl
KS51dGY4KCkuZGF0YSgpLCAtMSk7CiB9CiAKIGJvb2wgQ2xpcGJvYXJkR3RrOjpoYXNEYXRhKCkK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0NsaXBib2FyZEd0ay5oIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmgKaW5kZXggNzMxNGFlNC4uYmIyMWQ5MiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmgKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvQ2xpcGJvYXJkR3RrLmgKQEAgLTI0LDggKzI0LDggQEAKICAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotI2lmbmRlZiBDbGlwYm9hcmRHZGtfaAotI2RlZmluZSBDbGlwYm9hcmRH
ZGtfaAorI2lmbmRlZiBDbGlwYm9hcmRHdGtfaAorI2RlZmluZSBDbGlwYm9hcmRHdGtfaAogCiAj
aW5jbHVkZSAiQ2xpcGJvYXJkLmgiCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34659</attachid>
            <date>2009-08-12 06:15:31 -0700</date>
            <delta_ts>2009-08-13 15:10:51 -0700</delta_ts>
            <desc>Third patch</desc>
            <filename>dnd-3.diff</filename>
            <type>text/plain</type>
            <size>17791</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YzAzNjk0ZS4uNWM1OGQzNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAwOS0wOC0xMiAgWmFuIERvYmVyc2Vr
ICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFtHVEtdIERyYWcgYW5kIGRyb3Agc3VwcG9ydAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NDIKKworICAgICAgICBB
ZGQgbWFudWFsIHRlc3QgZm9yIEdUSydzIHNvdXJjZSBkcmFnIGFjdGlvbnMuCisKKyAgICAgICAg
KiBtYW51YWwtdGVzdHMvZ3RrL2RyYWctc291cmNlLWFjdGlvbnMtc3VwcG9ydC5odG1sOiBBZGRl
ZC4KKwogMjAwOS0wOC0wOSAgTmlrb2xhcyBaaW1tZXJtYW5uICA8bmlrb2xhcy56aW1tZXJtYW5u
QHRvcmNobW9iaWxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBHZW9yZ2UgU3RhaWtvcy4K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvbWFudWFsLXRlc3RzL2d0ay9kcmFnLXNvdXJjZS1hY3Rpb25z
LXN1cHBvcnQuaHRtbCBiL1dlYkNvcmUvbWFudWFsLXRlc3RzL2d0ay9kcmFnLXNvdXJjZS1hY3Rp
b25zLXN1cHBvcnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MjZj
YWY4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29yZS9tYW51YWwtdGVzdHMvZ3RrL2RyYWctc291
cmNlLWFjdGlvbnMtc3VwcG9ydC5odG1sCkBAIC0wLDAgKzEsODEgQEAKKzwhRE9DVFlQRSBIVE1M
IFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+
CisgICAgPGhlYWQ+CisgICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29u
dGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiAvPgorICAgICAgICA8dGl0bGU+RHJhZyBz
b3VyY2UgYWN0aW9ucyBzdXBwb3J0IC0gbWFudWFsIHRlc3Q8L3RpdGxlPgorICAgIDwvaGVhZD4K
KyAgICA8Ym9keT4KKworICAgICAgICA8cD5CdWcgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNjQyIj48Yj4yMzY0MjwvYj48L2E+CisgICAgICAgICAg
ICA8Yj4gLSBbR1RLXSBEcmFnIGFuZCBkcm9wIHN1cHBvcnQ8L2I+CisgICAgICAgIDwvcD4KKyAg
ICAgICAgPHA+VGhpcyB0ZXN0cyBlbnN1cmVzIGRyYWcgYWN0aW9ucyBpbiB3aGljaCBXZWJLaXQg
aXMgdGhlIHNvdXJjZSBhcmUgd29ya2luZyBwcm9wZXJseS48L3A+CisKKyAgICAgICAgPGg0PlBy
ZXJlcXVpc2l0ZXM8L2g0PgorICAgICAgICA8b2w+CisgICAgICAgICAgICA8bGk+WW91IG11c3Qg
YmUgcnVubmluZyBXZWJLaXQgaW4gYSBHTk9NRSBlbnZpcm9ubWVudDwvbGk+CisgICAgICAgICAg
ICA8bGk+RW5zdXJlIHlvdSBoYXZlIHRoZXNlIGFkZGl0aW9uYWwgKG9yIHNpbWlsYXIpIHByb2dy
YW1zIGF2YWlsYWJsZSB0byBydW46PC9saT4KKyAgICAgICAgICAgIDxvbD4KKyAgICAgICAgICAg
ICAgICA8bGk+PGI+RmlyZWZveDwvYj48L2xpPgorICAgICAgICAgICAgICAgIDxsaT48Yj5PcGVu
T2ZmaWNlLm9yZyBEcmF3IC8gT3Blbk9mZmljZS5vcmcgV3JpdGVyPC9iPjwvbGk+CisgICAgICAg
ICAgICA8L29sPgorICAgICAgICA8L29sPgorCisgICAgICAgIDxoND5UZXN0IDE6IERyYWcgb2Yg
SFRNTCBjb250ZW50PC9oND4KKyAgICAgICAgPGI+U3RlcHMgdG8gdGVzdDo8L2I+CisgICAgICAg
IDxvbD4KKyAgICAgICAgICAgIDxsaT5TdGFydCA8Yj5PcGVuT2ZmaWNlLm9yZyBEcmF3PC9iPiBv
ciA8Yj5PcGVuT2ZmaWNlLm9yZyBXcml0ZXI8L2I+PC9saT4KKyAgICAgICAgICAgIDxsaT5PcGVu
IDxhIGhyZWY9Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbS9zZWFyY2g/JnE9d2Via2l0Ij50aGlzIGxp
bms8L2E+IG9yIG90aGVyIHBhZ2Ugd2l0aCByaWNoIEhUTUw8L2xpPgorICAgICAgICAgICAgPGxp
PlNlbGVjdCBzb21lIGNvbnRlbnQsIG9yIGV2ZW4gdGhlIHdob2xlIHBhZ2U8L2xpPgorICAgICAg
ICAgICAgPGxpPkRyYWcgc2VsZWN0ZWQgY29udGVudCB0byB0aGUgPGI+T3Blbk9mZmljZS5vcmc8
L2I+IHByb2dyYW0geW91IG9wZW5lZDwvbGk+CisgICAgICAgIDwvb2w+CisgICAgICAgIDxiPkV4
cGVjdGVkOjwvYj4KKyAgICAgICAgPHA+V2hhdCBhcHBlYXJzIGluIHRoZSA8Yj5PcGVuT2ZmaWNl
Lm9yZzwvYj4gcHJvZ3JhbSBzaG91bGQgaGF2ZSBzaW1pbGFyIGxheW91dCBhbmQgY29sb3Jpbmcg
YXMgc2VsZWN0ZWQgY29udGVudC48L3A+CisKKyAgICAgICAgPGg0PlRlc3QgMjogRHJhZyBvZiB0
ZXh0IGNvbnRlbnQ8L2g0PgorICAgICAgICA8Yj5TdGVwcyB0byB0ZXN0OjwvYj4KKyAgICAgICAg
PG9sPgorICAgICAgICAgICAgPGxpPlNlbGVjdCBzb21lIHRleHQgb24gdGhpcyBwYWdlPC9saT4K
KyAgICAgICAgICAgIDxsaT5EcmFnIHNlbGVjdGVkIGNvbnRlbnQgb250byB0aGUgZGVza3RvcDwv
bGk+CisgICAgICAgIDwvb2w+CisgICAgICAgIDxiPkV4cGVjdGVkOjwvYj4KKyAgICAgICAgPHA+
U2VsZWN0ZWQgY29udGVudCBzaG91bGQgYXBwZWFyIGFzIHRleHQgaW4gYSBuZXcgdGV4dCBmaWxl
IG9uIHRoZSBkZXNrdG9wLCBuYW1lZCAnZHJvcHBlZCB0ZXh0LnR4dCcgb3Igc2ltaWxhci48L3A+
CisKKyAgICAgICAgPGg0PlRlc3QgMzogRHJhZyBvZiBpbWFnZSBjb250ZW50IHRvIFVSTCBkZXN0
aW9uYXRpb248L2g0PgorICAgICAgICA8Yj5TdGVwcyB0byB0ZXN0OjwvYj4KKyAgICAgICAgPG9s
PgorICAgICAgICAgICAgPGxpPkRyYWcgdGhlIGltYWdlIGJlbG93IG9yIG90aGVyIGltYWdlIG9u
dG8gdGhlIGRlc2t0b3A8L2xpPgorICAgICAgICA8L29sPgorICAgICAgICA8aW1nIHNyYz0iLi4v
cmVzb3VyY2VzL2RyYWctaW1hZ2UucG5nIi8+PGJyLz4KKyAgICAgICAgPGI+RXhwZWN0ZWQ6PC9i
PgorICAgICAgICA8cD5OZXcgaW1hZ2UgZmlsZSBzaG91bGQgYXBwZWFyIG9uIHRoZSBkZXNrdG9w
LjwvcD4KKworICAgICAgICA8aDQ+VGVzdCA0OiBEcmFnIG9mIGltYWdlIGNvbnRlbnQgdG8gaW1h
Z2UgZGVzdGlvbmF0aW9uPC9oND4KKyAgICAgICAgPGI+U3RlcHMgdG8gdGVzdDo8L2I+CisgICAg
ICAgIDxvbD4KKyAgICAgICAgICAgIDxsaT5TdGFydCA8Yj5PcGVuT2ZmaWNlLm9yZyBEcmF3PC9i
PiBvciA8Yj5PcGVuT2ZmaWNlLm9yZyBXcml0ZXI8L2I+PC9saT4KKyAgICAgICAgICAgIDxsaT5E
cmFnIHRoZSBpbWFnZSBiZWxvdyBvciBvdGhlciBpbWFnZSB0byB0aGUgPGI+T3Blbk9mZmljZS5v
cmc8L2I+IHByb2dyYW08L2xpPgorICAgICAgICA8L29sPgorICAgICAgICA8aW1nIHNyYz0iLi4v
cmVzb3VyY2VzL2RyYWctaW1hZ2UucG5nIi8+PGJyLz4KKyAgICAgICAgPGI+RXhwZWN0ZWQ6PC9i
PgorICAgICAgICA8cD5BIG5ldyBpbWFnZSBvYmplY3Qgb2Ygc2FtZSBzaXplIHNob3VsZCBhcHBl
YXIgaW4gdGhlIGRvY3VtZW50LjwvcD4KKworICAgICAgICA8aDQ+VGVzdCA1OiBEcmFnIG9mIFVS
TCBvbnRvIHRoZSBkZXNrdG9wPC9oND4KKyAgICAgICAgPGI+U3RlcHMgdG8gdGVzdDo8L2I+Cisg
ICAgICAgIDxvbD4KKyAgICAgICAgICAgIDxsaT5EcmFnIDxhIGhyZWY9Imh0dHA6Ly93d3cuZ29v
Z2xlLmNvbS9zZWFyY2g/JnE9d2Via2l0Ij5XZWJLaXQgc2VhcmNoPC9hPiBvciBvdGhlciBvbnRv
IHRoZSBkZXNrdG9wPC9saT4KKyAgICAgICAgPC9vbD4KKyAgICAgICAgPGI+RXhwZWN0ZWQ6PC9i
PgorICAgICAgICA8cD5BIG5ldyBsaW5rIHNob3VsZCBhcHBlYXIgb24gdGhlIGRlc2t0b3AsIHdp
dGggbmFtZSAnTGluayB0byBXZWJLaXQgc2VhcmNoJyBvciBzaW1pbGFyLjwvcD4KKworICAgICAg
ICA8aDQ+VGVzdCA2OiBEcmFnIG9mIFVSTCBpbnRvIEZpcmVmb3ggbG9jYXRpb24gZW50cnkgPC9o
ND4KKyAgICAgICAgPGI+U3RlcHMgdG8gdGVzdDo8L2I+CisgICAgICAgIDxvbD4KKyAgICAgICAg
ICAgIDxsaT5TdGFydCA8Yj5GaXJlZm94PC9iPjwvbGk+CisgICAgICAgICAgICA8bGk+RHJhZyA8
YSBocmVmPSJodHRwOi8vd3d3Lmdvb2dsZS5jb20vc2VhcmNoPyZxPXdlYmtpdCI+V2ViS2l0IHNl
YXJjaDwvYT4gb3Igb3RoZXIgbGluayBpbnRvIHRoZSBsb2NhdGlvbiBlbnRyeSBvZiBGaXJlZm94
IG9yIGRyb3AgdGhlIGxpbmsgb250byB0aGUgcGFnZSB2aWV3IG9mIEZpcmVmb3g8L2xpPiAKKyAg
ICAgICAgPC9vbD4KKyAgICAgICAgPGI+RXhwZWN0ZWQ6PC9iPgorICAgICAgICA8cD5GaXJlZm94
IG9wZW5zIHRoZSBsaW5rLjwvcD4KKworICAgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggZjQ4YzNh
YS4uMWVmYmFkMiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0
L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAwOS0wOC0xMiAgWmFuIERvYmVyc2Vr
ICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFtHVEtdIERyYWcgYW5kIGRyb3Agc3VwcG9ydAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NDIKKworICAgICAgICBB
ZGRzIHN1cHBvcnQgZm9yIGRyYWcgYWN0aW9ucyBpbiBXZWJLaXRXZWJWaWV3IGFuZCBEcmFnQ2xp
ZW50LgorCisgICAgICAgIERlZmluZXMgYSBzdXBwb3J0IHN0cnVjdHVyZSB0aGF0IGNhbiBob2xk
IGFkZGl0aW9uYWwgZHJhZyBhbmQgZHJvcCBkYXRhLAorICAgICAgICBzdWNoIGFzIHNlbGVjdGlv
biBkYXRhIG9yIHRhcmdldCBJRHMgKGluZm9zKSBhbmQgY2FuIGJlIHBhc3NlZCB0aHJvdWdoCisg
ICAgICAgIGNsaXBib2FyZCByZXF1ZXN0cy4KKworICAgICAgICBJbXBsZW1lbnRzIERyYWdDbGll
bnQgZnVuY3Rpb25zIHRoYXQgZ2F0aGVyIHN0YXJ0IHBvc2l0aW9uIG9mIHRoZSBkcmFnCisgICAg
ICAgIGFuZCBzdGFydCB0aGUgR1RLIGRyYWcuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9E
cmFnQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhZ0NsaWVudDo6RHJhZ0NsaWVu
dCk6CisgICAgICAgIChXZWJLaXQ6OkRyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFj
dGlvbik6CisgICAgICAgIChXZWJLaXQ6OkRyYWdDbGllbnQ6OnN0YXJ0RHJhZyk6CisgICAgICAg
IChXZWJLaXQ6OkRyYWdDbGllbnQ6OmNyZWF0ZURyYWdJbWFnZUZvckxpbmspOiBBIHNtYWxsIHN0
eWxlIGZpeC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3RrLmg6CisgICAg
ICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAod2Via2l0X3dlYl92aWV3
X2RyYWdfZW5kKToKKyAgICAgICAgKGNsaXBib2FyZF9jb250ZW50c19yZWNlaXZlZCk6IEd0a0Ns
aXBib2FyZCBjYWxsYmFjay4KKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19kcmFnX2RhdGFfZ2V0
KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtp
dF93ZWJfdmlld19pbml0KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5oOiBBZGQg
R1RLIHNlbGVjdGlvbiB0YXJnZXRzLgorCiAyMDA5LTA4LTA4ICBYYW4gTG9wZXogIDx4bG9wZXpA
aWdhbGlhLmNvbT4KIAogICAgICAgICBSb2xsIG91dCByNDY5MjgsIHNpbmNlIGl0IHdhc24ndCBk
b25lIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvRHJhZ0NsaWVudEd0ay5jcHAgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Ry
YWdDbGllbnRHdGsuY3BwCmluZGV4IGY1NWI2ZWEuLjExOWJlNzcgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudEd0ay5jcHAKKysrIGIvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3RrLmNwcApAQCAtMTcsMjAgKzE3LDMzIEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRHJhZ0NsaWVudEd0ay5oIgogCisjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKICNp
bmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2lu
Y2x1ZGUgIndlYmtpdHdlYnZpZXcuaCIKKworI2luY2x1ZGUgPGd0ay9ndGsuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitEcmFnQ2xpZW50OjpE
cmFnQ2xpZW50KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCisgICAgOiBtX3dlYlZpZXcod2ViVmll
dykKKyAgICAsIG1fc3RhcnRQb3MoMCwgMCkKK3sKK30KKwogdm9pZCBEcmFnQ2xpZW50Ojp3aWxs
UGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbihEcmFnRGVzdGluYXRpb25BY3Rpb24sIERyYWdE
YXRhKikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIERyYWdDbGllbnQ6Ondp
bGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihEcmFnU291cmNlQWN0aW9uLCBjb25zdCBJbnRQb2lu
dCYsIENsaXBib2FyZCopCit2b2lkIERyYWdDbGllbnQ6OndpbGxQZXJmb3JtRHJhZ1NvdXJjZUFj
dGlvbihEcmFnU291cmNlQWN0aW9uLCBjb25zdCBJbnRQb2ludCYgc3RhcnRQb3MsIENsaXBib2Fy
ZCopCiB7Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX3N0YXJ0UG9zID0gc3RhcnRQb3M7
CiB9CiAKIERyYWdEZXN0aW5hdGlvbkFjdGlvbiBEcmFnQ2xpZW50OjphY3Rpb25NYXNrRm9yRHJh
ZyhEcmFnRGF0YSopCkBAIC00NSwxMiArNTgsNTMgQEAgRHJhZ1NvdXJjZUFjdGlvbiBEcmFnQ2xp
ZW50OjpkcmFnU291cmNlQWN0aW9uTWFza0ZvclBvaW50KGNvbnN0IEludFBvaW50JikKICAgICBy
ZXR1cm4gRHJhZ1NvdXJjZUFjdGlvbkFueTsKIH0KIAotdm9pZCBEcmFnQ2xpZW50OjpzdGFydERy
YWcoRHJhZ0ltYWdlUmVmLCBjb25zdCBJbnRQb2ludCYsIGNvbnN0IEludFBvaW50JiwgQ2xpcGJv
YXJkKiwgRnJhbWUqLCBib29sKQordm9pZCBEcmFnQ2xpZW50OjpzdGFydERyYWcoRHJhZ0ltYWdl
UmVmIGltYWdlLCBjb25zdCBJbnRQb2ludCYgZHJhZ0ltYWdlT3JpZ2luLCBjb25zdCBJbnRQb2lu
dCYgZXZlbnRQb3MsIENsaXBib2FyZCosIEZyYW1lKiBmcmFtZSwgYm9vbCBsaW5rRHJhZykKIHsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIEVsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSBmcmFt
ZS0+ZG9jdW1lbnQoKS0+ZWxlbWVudEZyb21Qb2ludChtX3N0YXJ0UG9zLngoKSwgbV9zdGFydFBv
cy55KCkpOworICAgIGJvb2wgaW1hZ2VEcmFnID0gZmFsc2U7CisKKyAgICBpZiAodGFyZ2V0RWxl
bWVudCkKKyAgICAgICAgaW1hZ2VEcmFnID0gdGFyZ2V0RWxlbWVudC0+cmVuZGVyZXIoKS0+aXNJ
bWFnZSgpOworCisgICAgR2RrQXRvbSB0ZXh0SHRtbCA9IGdka19hdG9tX2ludGVybl9zdGF0aWNf
c3RyaW5nKCJ0ZXh0L2h0bWwiKTsKKyAgICBHZGtBdG9tIG5ldHNjYXBlVXJsID0gZ2RrX2F0b21f
aW50ZXJuX3N0YXRpY19zdHJpbmcoIl9ORVRTQ0FQRV9VUkwiKTsKKworICAgIEd0a1RhcmdldExp
c3QqIHRhcmdldExpc3QgPSBndGtfdGFyZ2V0X2xpc3RfbmV3KE5VTEwsIDApOworICAgIGd0a190
YXJnZXRfbGlzdF9hZGQodGFyZ2V0TGlzdCwgdGV4dEh0bWwsIDAsIFdFQktJVF9XRUJfVklFV19U
QVJHRVRfSU5GT19IVE1MKTsKKyAgICBndGtfdGFyZ2V0X2xpc3RfYWRkX3RleHRfdGFyZ2V0cyh0
YXJnZXRMaXN0LCBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fVEVYVCk7CisKKyAgICBpZiAo
bGlua0RyYWcgfHwgaW1hZ2VEcmFnKSB7CisgICAgICAgIGd0a190YXJnZXRfbGlzdF9hZGQodGFy
Z2V0TGlzdCwgbmV0c2NhcGVVcmwsIDAsIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19ORVRT
Q0FQRV9VUkwpOworICAgICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkX3VyaV90YXJnZXRzKHRhcmdl
dExpc3QsIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19VUklfTElTVCk7CisgICAgfQorCisg
ICAgaWYgKGltYWdlRHJhZykKKyAgICAgICAgZ3RrX3RhcmdldF9saXN0X2FkZF9pbWFnZV90YXJn
ZXRzKHRhcmdldExpc3QsIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19JTUFHRSwgZmFsc2Up
OworCisgICAgR2RrRHJhZ0FjdGlvbiBkcmFnQWN0aW9uID0gR0RLX0FDVElPTl9DT1BZOworICAg
IGlmIChsaW5rRHJhZykgeworICAgICAgICBkcmFnQWN0aW9uID0gR0RLX0FDVElPTl9MSU5LOwor
ICAgICAgICBpZiAoaW1hZ2VEcmFnKQorICAgICAgICAgICAgZHJhZ0FjdGlvbiA9IChHZGtEcmFn
QWN0aW9uKShkcmFnQWN0aW9uIHwgR0RLX0FDVElPTl9DT1BZKTsKKyAgICB9CisKKyAgICBHZGtF
dmVudCogZXZlbnQgPSBnZGtfZXZlbnRfbmV3KEdES19CVVRUT05fUFJFU1MpOworICAgIHJlaW50
ZXJwcmV0X2Nhc3Q8R2RrRXZlbnRCdXR0b24qPihldmVudCktPndpbmRvdyA9IGd0a193aWRnZXRf
Z2V0X3dpbmRvdyhHVEtfV0lER0VUKG1fd2ViVmlldykpOworICAgIHJlaW50ZXJwcmV0X2Nhc3Q8
R2RrRXZlbnRCdXR0b24qPihldmVudCktPnRpbWUgPSBHREtfQ1VSUkVOVF9USU1FOworCisgICAg
R2RrRHJhZ0NvbnRleHQqIGNvbnRleHQgPSBndGtfZHJhZ19iZWdpbihHVEtfV0lER0VUKG1fd2Vi
VmlldyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJn
ZXRMaXN0LCBkcmFnQWN0aW9uLCAxLCBldmVudCk7CisgICAgZ19vYmplY3RfcmVmKGNvbnRleHQp
OworCisgICAgaWYgKGltYWdlKQorICAgICAgICBndGtfZHJhZ19zZXRfaWNvbl9waXhidWYoY29u
dGV4dCwgaW1hZ2UsIGV2ZW50UG9zLngoKSAtIGRyYWdJbWFnZU9yaWdpbi54KCksIGV2ZW50UG9z
LnkoKSAtIGRyYWdJbWFnZU9yaWdpbi55KCkpOworICAgIGVsc2UKKyAgICAgICAgZ3RrX2RyYWdf
c2V0X2ljb25fZGVmYXVsdChjb250ZXh0KTsKKworICAgIGd0a190YXJnZXRfbGlzdF91bnJlZih0
YXJnZXRMaXN0KTsKIH0KIAotRHJhZ0ltYWdlUmVmIERyYWdDbGllbnQ6OmNyZWF0ZURyYWdJbWFn
ZUZvckxpbmsoS1VSTCYsIGNvbnN0IFN0cmluZyYgbGFiZWwsIEZyYW1lKikKK0RyYWdJbWFnZVJl
ZiBEcmFnQ2xpZW50OjpjcmVhdGVEcmFnSW1hZ2VGb3JMaW5rKEtVUkwmLCBjb25zdCBTdHJpbmcm
LCBGcmFtZSopCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gMDsKZGlmZiAt
LWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHJhZ0NsaWVudEd0ay5oIGIvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3RrLmgKaW5kZXggNDM2N2M2OC4uOTdlYTcy
YSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3RrLmgK
KysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3RrLmgKQEAgLTMyLDkg
KzMyLDE0IEBACiAKICNpbmNsdWRlICJEcmFnQ2xpZW50LmgiCiAKK3R5cGVkZWYgc3RydWN0IF9X
ZWJLaXRXZWJWaWV3IFdlYktpdFdlYlZpZXc7CisKIG5hbWVzcGFjZSBXZWJLaXQgeworCiAgICAg
Y2xhc3MgRHJhZ0NsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpEcmFnQ2xpZW50IHsKICAgICBwdWJs
aWM6CisgICAgICAgIERyYWdDbGllbnQoV2ViS2l0V2ViVmlldyopOworCiAgICAgICAgIHZpcnR1
YWwgdm9pZCB3aWxsUGVyZm9ybURyYWdEZXN0aW5hdGlvbkFjdGlvbihXZWJDb3JlOjpEcmFnRGVz
dGluYXRpb25BY3Rpb24sIFdlYkNvcmU6OkRyYWdEYXRhKik7CiAgICAgICAgIHZpcnR1YWwgdm9p
ZCB3aWxsUGVyZm9ybURyYWdTb3VyY2VBY3Rpb24oV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbiwg
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBXZWJDb3JlOjpDbGlwYm9hcmQqKTsKICAgICAgICAg
dmlydHVhbCBXZWJDb3JlOjpEcmFnRGVzdGluYXRpb25BY3Rpb24gYWN0aW9uTWFza0ZvckRyYWco
V2ViQ29yZTo6RHJhZ0RhdGEqKTsKQEAgLTQ1LDYgKzUwLDEwIEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogICAgICAgICB2aXJ0dWFsIFdlYkNvcmU6OkRyYWdJbWFnZVJlZiBjcmVhdGVEcmFnSW1hZ2VG
b3JMaW5rKFdlYkNvcmU6OktVUkwmLCBjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGxhYmVsLCBXZWJD
b3JlOjpGcmFtZSopOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBkcmFnQ29udHJvbGxlckRlc3Ry
b3llZCgpOworCisgICAgICAgIHByaXZhdGU6CisgICAgICAgICAgICBXZWJLaXRXZWJWaWV3KiBt
X3dlYlZpZXc7CisgICAgICAgICAgICBXZWJDb3JlOjpJbnRQb2ludCBtX3N0YXJ0UG9zOwogICAg
IH07CiB9CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3Bw
IGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKaW5kZXggZWM1OWU2MC4uMGZk
ZGJlZiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKKysr
IGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKQEAgLTEwODEsNiArMTA4MSwx
MjYgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3NjcmVlbl9jaGFuZ2VkKEd0a1dpZGdl
dCogd2lkZ2V0LCBHZGtTY3JlZW4qIHByZXZpb3UKICAgICBzZXR0aW5ncy0+c2V0TWluaW11bUxv
Z2ljYWxGb250U2l6ZShtaW5pbXVtTG9naWNhbEZvbnRTaXplIC8gNzIuMCAqIERQSSk7CiB9CiAK
K3N0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19kcmFnX2VuZChHdGtXaWRnZXQqIHdpZGdldCwg
R2RrRHJhZ0NvbnRleHQqIGNvbnRleHQpCit7CisgICAgZ19vYmplY3RfdW5yZWYoY29udGV4dCk7
Cit9CisKK3N0cnVjdCBETkRDb250ZW50c1JlcXVlc3QKK3sKKyAgICBnaW50IGluZm87CisgICAg
R3RrU2VsZWN0aW9uRGF0YSogZG5kX3NlbGVjdGlvbl9kYXRhOworCisgICAgZ2Jvb2xlYW4gaXNf
dXJsX2xhYmVsX3JlcXVlc3Q7CisgICAgZ2NoYXIqIHVybDsKK307CisKK3ZvaWQgY2xpcGJvYXJk
X2NvbnRlbnRzX3JlY2VpdmVkKEd0a0NsaXBib2FyZCogY2xpcGJvYXJkLCBHdGtTZWxlY3Rpb25E
YXRhKiBzZWxlY3Rpb25fZGF0YSwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBETkRDb250ZW50c1Jl
cXVlc3QqIGNvbnRlbnRzX3JlcXVlc3QgPSByZWludGVycHJldF9jYXN0PERORENvbnRlbnRzUmVx
dWVzdCo+KGRhdGEpOworCisgICAgaWYgKGNvbnRlbnRzX3JlcXVlc3QtPmlzX3VybF9sYWJlbF9y
ZXF1ZXN0KSB7CisgICAgICAgIC8vIFdlIGhhdmUgcmVjZWl2ZWQgY29udGVudHMgb2YgdGhlIGxh
YmVsIGNsaXBib2FyZC4gVXNlIHRoZW0gdG8gZm9ybQorICAgICAgICAvLyByZXF1aXJlZCBzdHJ1
Y3R1cmVzLiBXaGVuIGZvcm1lZCwgZW5oYW5jZSB0aGUgZG5kJ3Mgc2VsZWN0aW9uIGRhdGEKKyAg
ICAgICAgLy8gd2l0aCB0aGVtIGFuZCByZXR1cm4uCisKKyAgICAgICAgLy8gSWYgdGhlIGxhYmVs
IGlzIGVtcHR5LCB1c2UgdGhlIHVybCBpdHNlbGYuCisgICAgICAgIGdjaGFyKiB1cmxfbGFiZWwg
PSByZWludGVycHJldF9jYXN0PGdjaGFyKj4oZ3RrX3NlbGVjdGlvbl9kYXRhX2dldF90ZXh0KHNl
bGVjdGlvbl9kYXRhKSk7CisgICAgICAgIGlmICghdXJsX2xhYmVsKQorICAgICAgICAgICAgdXJs
X2xhYmVsID0gZ19zdHJkdXAoY29udGVudHNfcmVxdWVzdC0+dXJsKTsKKworICAgICAgICBnY2hh
ciogZGF0YTsKKyAgICAgICAgc3dpdGNoIChjb250ZW50c19yZXF1ZXN0LT5pbmZvKSB7CisgICAg
ICAgIGNhc2UgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX1VSSV9MSVNUOgorICAgICAgICAg
ICAgZGF0YSA9IGdfc3RyZHVwX3ByaW50ZigiJXNcclxuJXNcclxuIiwgY29udGVudHNfcmVxdWVz
dC0+dXJsLCB1cmxfbGFiZWwpOworICAgICAgICBjYXNlIFdFQktJVF9XRUJfVklFV19UQVJHRVRf
SU5GT19ORVRTQ0FQRV9VUkw6CisgICAgICAgICAgICBkYXRhID0gZ19zdHJkdXBfcHJpbnRmKCIl
c1xuJXMiLCBjb250ZW50c19yZXF1ZXN0LT51cmwsIHVybF9sYWJlbCk7CisgICAgICAgIH0KKwor
ICAgICAgICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0KGNvbnRlbnRzX3JlcXVlc3QtPmRuZF9zZWxl
Y3Rpb25fZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50c19yZXF1
ZXN0LT5kbmRfc2VsZWN0aW9uX2RhdGEtPnRhcmdldCwgOCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IGd1Y2hhcio+KGRhdGEpLCBzdHJsZW4o
ZGF0YSkpOworCisgICAgICAgIGdfZnJlZSh1cmxfbGFiZWwpOworICAgICAgICBnX2ZyZWUoZGF0
YSk7CisgICAgICAgIGdfZnJlZShjb250ZW50c19yZXF1ZXN0LT51cmwpOworICAgICAgICBnX2Zy
ZWUoY29udGVudHNfcmVxdWVzdCk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN3
aXRjaCAoY29udGVudHNfcmVxdWVzdC0+aW5mbykgeworICAgIGNhc2UgV0VCS0lUX1dFQl9WSUVX
X1RBUkdFVF9JTkZPX0hUTUw6CisgICAgY2FzZSBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9f
VEVYVDoKKyAgICAgICAgeworICAgICAgICBnY2hhciogZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8
Z2NoYXIqPihndGtfc2VsZWN0aW9uX2RhdGFfZ2V0X3RleHQoc2VsZWN0aW9uX2RhdGEpKTsKKyAg
ICAgICAgaWYgKGRhdGEpIHsKKyAgICAgICAgICAgIGd0a19zZWxlY3Rpb25fZGF0YV9zZXQoY29u
dGVudHNfcmVxdWVzdC0+ZG5kX3NlbGVjdGlvbl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb250ZW50c19yZXF1ZXN0LT5kbmRfc2VsZWN0aW9uX2RhdGEtPnRhcmdl
dCwgOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2Fz
dDxjb25zdCBndWNoYXIqPihkYXRhKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RybGVuKGRhdGEpKTsKKyAgICAgICAgICAgIGdfZnJlZShkYXRhKTsKKyAgICAgICAgfQor
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIGNhc2UgV0VCS0lUX1dFQl9WSUVXX1RBUkdF
VF9JTkZPX0lNQUdFOgorICAgICAgICB7CisgICAgICAgIEdka1BpeGJ1ZiogcGl4YnVmID0gZ3Rr
X3NlbGVjdGlvbl9kYXRhX2dldF9waXhidWYoc2VsZWN0aW9uX2RhdGEpOworICAgICAgICBpZiAo
cGl4YnVmKSB7CisgICAgICAgICAgICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0X3BpeGJ1Zihjb250
ZW50c19yZXF1ZXN0LT5kbmRfc2VsZWN0aW9uX2RhdGEsIHBpeGJ1Zik7CisgICAgICAgICAgICBn
X29iamVjdF91bnJlZihwaXhidWYpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgY2FzZSBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fVVJJX0xJU1Q6CisgICAg
Y2FzZSBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fTkVUU0NBUEVfVVJMOgorICAgICAgICAv
LyBVUkwncyBsYWJlbCBpcyBzdG9yZWQgaW4gYW5vdGhlciBjbGlwYm9hcmQsIHNvIHdlIHN0b3Jl
IFVSTCBpbnRvCisgICAgICAgIC8vIGNvbnRlbnRzIHJlcXVlc3QsIG1hcmsgdGhlIGxhdHRlciBh
cyBhbiB1cmwgbGFiZWwgcmVxdWVzdAorICAgICAgICAvLyBhbmQgcmVxdWVzdCBmb3IgY29udGVu
dHMgb2YgdGhlIGxhYmVsIGNsaXBib2FyZC4KKyAgICAgICAgY29udGVudHNfcmVxdWVzdC0+aXNf
dXJsX2xhYmVsX3JlcXVlc3QgPSBUUlVFOworICAgICAgICBjb250ZW50c19yZXF1ZXN0LT51cmwg
PSByZWludGVycHJldF9jYXN0PGdjaGFyKj4oZ3RrX3NlbGVjdGlvbl9kYXRhX2dldF90ZXh0KHNl
bGVjdGlvbl9kYXRhKSk7CisKKyAgICAgICAgZ3RrX2NsaXBib2FyZF9yZXF1ZXN0X2NvbnRlbnRz
KGd0a19jbGlwYm9hcmRfZ2V0KGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJXZWJLaXRD
bGlwYm9hcmRVcmxMYWJlbCIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGVjdGlvbl9kYXRhLT50YXJnZXQsIGNsaXBib2FyZF9jb250ZW50c19yZWNlaXZlZCwg
Y29udGVudHNfcmVxdWVzdCk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworc3RhdGljIHZv
aWQgd2Via2l0X3dlYl92aWV3X2RyYWdfZGF0YV9nZXQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0Ry
YWdDb250ZXh0KiBjb250ZXh0LCBHdGtTZWxlY3Rpb25EYXRhKiBzZWxlY3Rpb25fZGF0YSwgZ3Vp
bnQgaW5mbywgZ3VpbnQgdGltZV8pCit7CisgICAgR2RrQXRvbSBzZWxlY3Rpb25fYXRvbTsKKyAg
ICBHZGtBdG9tIHRhcmdldF9hdG9tID0gc2VsZWN0aW9uX2RhdGEtPnRhcmdldDsKKworICAgIHN3
aXRjaCAoaW5mbykgeworICAgICAgICBjYXNlIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19I
VE1MOgorICAgICAgICAgICAgc2VsZWN0aW9uX2F0b20gPSBnZGtfYXRvbV9pbnRlcm5fc3RhdGlj
X3N0cmluZygiV2ViS2l0Q2xpcGJvYXJkSHRtbCIpOworICAgICAgICAgICAgLy8gSFRNTCBtYXJr
dXAgZGF0YSBpcyBzZXQgYXMgdGV4dCwgdGhlcmVmb3IsIHdlIG5lZWQgYSB0ZXh0LWxpa2UgdGFy
Z2V0IGF0b20KKyAgICAgICAgICAgIHRhcmdldF9hdG9tID0gZ2RrX2F0b21faW50ZXJuX3N0YXRp
Y19zdHJpbmcoIlVURjhfU1RSSU5HIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fVEVYVDoKKyAgICAgICAgICAgIHNlbGVjdGlv
bl9hdG9tID0gZ2RrX2F0b21faW50ZXJuX3N0YXRpY19zdHJpbmcoIldlYktpdENsaXBib2FyZFRl
eHQiKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdFQktJVF9XRUJfVklFV19U
QVJHRVRfSU5GT19JTUFHRToKKyAgICAgICAgICAgIHNlbGVjdGlvbl9hdG9tID0gZ2RrX2F0b21f
aW50ZXJuX3N0YXRpY19zdHJpbmcoIldlYktpdENsaXBib2FyZEltYWdlIik7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fVVJJX0xJ
U1Q6CisgICAgICAgIGNhc2UgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX05FVFNDQVBFX1VS
TDoKKyAgICAgICAgICAgIHNlbGVjdGlvbl9hdG9tID0gZ2RrX2F0b21faW50ZXJuX3N0YXRpY19z
dHJpbmcoIldlYktpdENsaXBib2FyZFVybCIpOworICAgICAgICAgICAgLy8gV2UgcmVxdWlyZSBV
UkwgYW5kIGxhYmVsLCB3aGljaCBhcmUgYm90aCBzdG9yZWQgaW4gdGV4dCBmb3JtYXQKKyAgICAg
ICAgICAgIC8vIGFuZCBhcmUgbmVlZGVkIHRvIGJlIHJldHJpZXZlZCBhcyBzdWNoLgorICAgICAg
ICAgICAgdGFyZ2V0X2F0b20gPSBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygiVVRGOF9T
VFJJTkciKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIERORENvbnRlbnRzUmVx
dWVzdCogY29udGVudHNfcmVxdWVzdCA9IGdfbmV3KERORENvbnRlbnRzUmVxdWVzdCwgMSk7Cisg
ICAgY29udGVudHNfcmVxdWVzdC0+aW5mbyA9IGluZm87CisgICAgY29udGVudHNfcmVxdWVzdC0+
aXNfdXJsX2xhYmVsX3JlcXVlc3QgPSBGQUxTRTsKKyAgICBjb250ZW50c19yZXF1ZXN0LT5kbmRf
c2VsZWN0aW9uX2RhdGEgPSBzZWxlY3Rpb25fZGF0YTsKKworICAgIGd0a19jbGlwYm9hcmRfcmVx
dWVzdF9jb250ZW50cyhndGtfY2xpcGJvYXJkX2dldChzZWxlY3Rpb25fYXRvbSksIHRhcmdldF9h
dG9tLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwYm9hcmRfY29udGVu
dHNfcmVjZWl2ZWQsIGNvbnRlbnRzX3JlcXVlc3QpOworfQorCiBzdGF0aWMgdm9pZCB3ZWJraXRf
d2ViX3ZpZXdfY2xhc3NfaW5pdChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKIHsK
ICAgICBHdGtCaW5kaW5nU2V0KiBiaW5kaW5nX3NldDsKQEAgLTE4MTYsNiArMTkzNiw4IEBAIHN0
YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyog
d2ViVmlld0NsYXNzKQogICAgIHdpZGdldENsYXNzLT5mb2N1c19vdXRfZXZlbnQgPSB3ZWJraXRf
d2ViX3ZpZXdfZm9jdXNfb3V0X2V2ZW50OwogICAgIHdpZGdldENsYXNzLT5nZXRfYWNjZXNzaWJs
ZSA9IHdlYmtpdF93ZWJfdmlld19nZXRfYWNjZXNzaWJsZTsKICAgICB3aWRnZXRDbGFzcy0+c2Ny
ZWVuX2NoYW5nZWQgPSB3ZWJraXRfd2ViX3ZpZXdfc2NyZWVuX2NoYW5nZWQ7CisgICAgd2lkZ2V0
Q2xhc3MtPmRyYWdfZW5kID0gd2Via2l0X3dlYl92aWV3X2RyYWdfZW5kOworICAgIHdpZGdldENs
YXNzLT5kcmFnX2RhdGFfZ2V0ID0gd2Via2l0X3dlYl92aWV3X2RyYWdfZGF0YV9nZXQ7CiAKICAg
ICBHdGtDb250YWluZXJDbGFzcyogY29udGFpbmVyQ2xhc3MgPSBHVEtfQ09OVEFJTkVSX0NMQVNT
KHdlYlZpZXdDbGFzcyk7CiAgICAgY29udGFpbmVyQ2xhc3MtPmFkZCA9IHdlYmtpdF93ZWJfdmll
d19jb250YWluZXJfYWRkOwpAQCAtMjI1Niw3ICsyMzc4LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0
X3dlYl92aWV3X2luaXQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKICAgICBwcml2LT5pbUNvbnRl
eHQgPSBndGtfaW1fbXVsdGljb250ZXh0X25ldygpOwogCiAgICAgV2ViS2l0OjpJbnNwZWN0b3JD
bGllbnQqIGluc3BlY3RvckNsaWVudCA9IG5ldyBXZWJLaXQ6Okluc3BlY3RvckNsaWVudCh3ZWJW
aWV3KTsKLSAgICBwcml2LT5jb3JlUGFnZSA9IG5ldyBQYWdlKG5ldyBXZWJLaXQ6OkNocm9tZUNs
aWVudCh3ZWJWaWV3KSwgbmV3IFdlYktpdDo6Q29udGV4dE1lbnVDbGllbnQod2ViVmlldyksIG5l
dyBXZWJLaXQ6OkVkaXRvckNsaWVudCh3ZWJWaWV3KSwgbmV3IFdlYktpdDo6RHJhZ0NsaWVudCwg
aW5zcGVjdG9yQ2xpZW50KTsKKyAgICBwcml2LT5jb3JlUGFnZSA9IG5ldyBQYWdlKG5ldyBXZWJL
aXQ6OkNocm9tZUNsaWVudCh3ZWJWaWV3KSwgbmV3IFdlYktpdDo6Q29udGV4dE1lbnVDbGllbnQo
d2ViVmlldyksIG5ldyBXZWJLaXQ6OkVkaXRvckNsaWVudCh3ZWJWaWV3KSwgbmV3IFdlYktpdDo6
RHJhZ0NsaWVudCh3ZWJWaWV3KSwgaW5zcGVjdG9yQ2xpZW50KTsKIAogICAgIC8vIFdlIGFsc28g
YWRkIGEgc2ltcGxlIHdyYXBwZXIgY2xhc3MgdG8gcHJvdmlkZSB0aGUgcHVibGljCiAgICAgLy8g
aW50ZXJmYWNlIGZvciB0aGUgV2ViIEluc3BlY3Rvci4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnZpZXcuaCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcu
aAppbmRleCBmYmRlZmE4Li5kODdkODNkIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ2aWV3LmgKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCkBA
IC01Miw3ICs1MiwxMCBAQCB0eXBlZGVmIGVudW0gewogdHlwZWRlZiBlbnVtCiB7CiAgICAgV0VC
S0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX0hUTUwsCi0gICAgV0VCS0lUX1dFQl9WSUVXX1RBUkdF
VF9JTkZPX1RFWFQKKyAgICBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fVEVYVCwKKyAgICBX
RUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fSU1BR0UsCisgICAgV0VCS0lUX1dFQl9WSUVXX1RB
UkdFVF9JTkZPX1VSSV9MSVNULAorICAgIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19ORVRT
Q0FQRV9VUkwKIH0gV2ViS2l0V2ViVmlld1RhcmdldEluZm87CiAKIHN0cnVjdCBfV2ViS2l0V2Vi
VmlldyB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>34795</attachid>
            <date>2009-08-13 15:06:11 -0700</date>
            <delta_ts>2009-08-13 15:38:18 -0700</delta_ts>
            <desc>Third patch</desc>
            <filename>dnd-3.diff</filename>
            <type>text/plain</type>
            <size>13441</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
aW5kZXggYjk0Y2I2Mi4uZWVjNGUyMyAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAwOS0wOC0xNCAg
WmFuIERvYmVyc2VrICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIERyYWcgYW5kIGRyb3Agc3VwcG9y
dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NDIK
KworICAgICAgICBBZGRzIHN1cHBvcnQgZm9yIGRyYWcgYWN0aW9ucyBpbiBXZWJLaXRXZWJWaWV3
IGFuZCBEcmFnQ2xpZW50LgorCisgICAgICAgIERlZmluZXMgYSBzdXBwb3J0IHN0cnVjdHVyZSB0
aGF0IGNhbiBob2xkIGFkZGl0aW9uYWwgZHJhZyBhbmQgZHJvcCBkYXRhLAorICAgICAgICBzdWNo
IGFzIHNlbGVjdGlvbiBkYXRhIG9yIHRhcmdldCBJRHMgKGluZm9zKSBhbmQgY2FuIGJlIHBhc3Nl
ZCB0aHJvdWdoCisgICAgICAgIGNsaXBib2FyZCByZXF1ZXN0cy4KKworICAgICAgICBJbXBsZW1l
bnRzIERyYWdDbGllbnQgZnVuY3Rpb25zIHRoYXQgZ2F0aGVyIHN0YXJ0IHBvc2l0aW9uIG9mIHRo
ZSBkcmFnCisgICAgICAgIGFuZCBzdGFydCB0aGUgR1RLIGRyYWcuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9EcmFnQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RHJhZ0NsaWVu
dDo6RHJhZ0NsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OkRyYWdDbGllbnQ6OndpbGxQZXJmb3Jt
RHJhZ1NvdXJjZUFjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OkRyYWdDbGllbnQ6OnN0YXJ0RHJh
Zyk6CisgICAgICAgIChXZWJLaXQ6OkRyYWdDbGllbnQ6OmNyZWF0ZURyYWdJbWFnZUZvckxpbmsp
OiBBIHNtYWxsIHN0eWxlIGZpeC4KKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50
R3RrLmg6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAod2Vi
a2l0X3dlYl92aWV3X2RyYWdfZW5kKToKKyAgICAgICAgKGNsaXBib2FyZF9jb250ZW50c19yZWNl
aXZlZCk6IEd0a0NsaXBib2FyZCBjYWxsYmFjay4KKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19k
cmFnX2RhdGFfZ2V0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KToKKyAg
ICAgICAgKHdlYmtpdF93ZWJfdmlld19pbml0KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vi
dmlldy5oOiBBZGQgR1RLIHNlbGVjdGlvbiB0YXJnZXRzLgorCiAyMDA5LTA4LTEyICBHdXN0YXZv
IE5vcm9uaGEgU2lsdmEgIDxndXN0YXZvLm5vcm9uaGFAY29sbGFib3JhLmNvLnVrPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9EcmFnQ2xpZW50R3RrLmNwcCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRHJh
Z0NsaWVudEd0ay5jcHAKaW5kZXggZjU1YjZlYS4uMTE5YmU3NyAxMDA2NDQKLS0tIGEvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3RrLmNwcAorKysgYi9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0RyYWdDbGllbnRHdGsuY3BwCkBAIC0xNywyMCArMTcsMzMgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJEcmFnQ2xpZW50R3RrLmgiCiAKKyNpbmNsdWRlICJE
b2N1bWVudC5oIgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgogI2lu
Y2x1ZGUgIk5vdEltcGxlbWVudGVkLmgiCisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCisjaW5j
bHVkZSAid2Via2l0d2Vidmlldy5oIgorCisjaW5jbHVkZSA8Z3RrL2d0ay5oPgogCiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK0RyYWdDbGllbnQ6OkRy
YWdDbGllbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKKyAgICA6IG1fd2ViVmlldyh3ZWJWaWV3
KQorICAgICwgbV9zdGFydFBvcygwLCAwKQoreworfQorCiB2b2lkIERyYWdDbGllbnQ6OndpbGxQ
ZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKERyYWdEZXN0aW5hdGlvbkFjdGlvbiwgRHJhZ0Rh
dGEqKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgRHJhZ0NsaWVudDo6d2ls
bFBlcmZvcm1EcmFnU291cmNlQWN0aW9uKERyYWdTb3VyY2VBY3Rpb24sIGNvbnN0IEludFBvaW50
JiwgQ2xpcGJvYXJkKikKK3ZvaWQgRHJhZ0NsaWVudDo6d2lsbFBlcmZvcm1EcmFnU291cmNlQWN0
aW9uKERyYWdTb3VyY2VBY3Rpb24sIGNvbnN0IEludFBvaW50JiBzdGFydFBvcywgQ2xpcGJvYXJk
KikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworICAgIG1fc3RhcnRQb3MgPSBzdGFydFBvczsK
IH0KIAogRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uIERyYWdDbGllbnQ6OmFjdGlvbk1hc2tGb3JEcmFn
KERyYWdEYXRhKikKQEAgLTQ1LDEyICs1OCw1MyBAQCBEcmFnU291cmNlQWN0aW9uIERyYWdDbGll
bnQ6OmRyYWdTb3VyY2VBY3Rpb25NYXNrRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmKQogICAgIHJl
dHVybiBEcmFnU291cmNlQWN0aW9uQW55OwogfQogCi12b2lkIERyYWdDbGllbnQ6OnN0YXJ0RHJh
ZyhEcmFnSW1hZ2VSZWYsIGNvbnN0IEludFBvaW50JiwgY29uc3QgSW50UG9pbnQmLCBDbGlwYm9h
cmQqLCBGcmFtZSosIGJvb2wpCit2b2lkIERyYWdDbGllbnQ6OnN0YXJ0RHJhZyhEcmFnSW1hZ2VS
ZWYgaW1hZ2UsIGNvbnN0IEludFBvaW50JiBkcmFnSW1hZ2VPcmlnaW4sIGNvbnN0IEludFBvaW50
JiBldmVudFBvcywgQ2xpcGJvYXJkKiwgRnJhbWUqIGZyYW1lLCBib29sIGxpbmtEcmFnKQogewot
ICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IGZyYW1l
LT5kb2N1bWVudCgpLT5lbGVtZW50RnJvbVBvaW50KG1fc3RhcnRQb3MueCgpLCBtX3N0YXJ0UG9z
LnkoKSk7CisgICAgYm9vbCBpbWFnZURyYWcgPSBmYWxzZTsKKworICAgIGlmICh0YXJnZXRFbGVt
ZW50KQorICAgICAgICBpbWFnZURyYWcgPSB0YXJnZXRFbGVtZW50LT5yZW5kZXJlcigpLT5pc0lt
YWdlKCk7CisKKyAgICBHZGtBdG9tIHRleHRIdG1sID0gZ2RrX2F0b21faW50ZXJuX3N0YXRpY19z
dHJpbmcoInRleHQvaHRtbCIpOworICAgIEdka0F0b20gbmV0c2NhcGVVcmwgPSBnZGtfYXRvbV9p
bnRlcm5fc3RhdGljX3N0cmluZygiX05FVFNDQVBFX1VSTCIpOworCisgICAgR3RrVGFyZ2V0TGlz
dCogdGFyZ2V0TGlzdCA9IGd0a190YXJnZXRfbGlzdF9uZXcoTlVMTCwgMCk7CisgICAgZ3RrX3Rh
cmdldF9saXN0X2FkZCh0YXJnZXRMaXN0LCB0ZXh0SHRtbCwgMCwgV0VCS0lUX1dFQl9WSUVXX1RB
UkdFVF9JTkZPX0hUTUwpOworICAgIGd0a190YXJnZXRfbGlzdF9hZGRfdGV4dF90YXJnZXRzKHRh
cmdldExpc3QsIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19URVhUKTsKKworICAgIGlmIChs
aW5rRHJhZyB8fCBpbWFnZURyYWcpIHsKKyAgICAgICAgZ3RrX3RhcmdldF9saXN0X2FkZCh0YXJn
ZXRMaXN0LCBuZXRzY2FwZVVybCwgMCwgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX05FVFND
QVBFX1VSTCk7CisgICAgICAgIGd0a190YXJnZXRfbGlzdF9hZGRfdXJpX3RhcmdldHModGFyZ2V0
TGlzdCwgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX1VSSV9MSVNUKTsKKyAgICB9CisKKyAg
ICBpZiAoaW1hZ2VEcmFnKQorICAgICAgICBndGtfdGFyZ2V0X2xpc3RfYWRkX2ltYWdlX3Rhcmdl
dHModGFyZ2V0TGlzdCwgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX0lNQUdFLCBmYWxzZSk7
CisKKyAgICBHZGtEcmFnQWN0aW9uIGRyYWdBY3Rpb24gPSBHREtfQUNUSU9OX0NPUFk7CisgICAg
aWYgKGxpbmtEcmFnKSB7CisgICAgICAgIGRyYWdBY3Rpb24gPSBHREtfQUNUSU9OX0xJTks7Cisg
ICAgICAgIGlmIChpbWFnZURyYWcpCisgICAgICAgICAgICBkcmFnQWN0aW9uID0gKEdka0RyYWdB
Y3Rpb24pKGRyYWdBY3Rpb24gfCBHREtfQUNUSU9OX0NPUFkpOworICAgIH0KKworICAgIEdka0V2
ZW50KiBldmVudCA9IGdka19ldmVudF9uZXcoR0RLX0JVVFRPTl9QUkVTUyk7CisgICAgcmVpbnRl
cnByZXRfY2FzdDxHZGtFdmVudEJ1dHRvbio+KGV2ZW50KS0+d2luZG93ID0gZ3RrX3dpZGdldF9n
ZXRfd2luZG93KEdUS19XSURHRVQobV93ZWJWaWV3KSk7CisgICAgcmVpbnRlcnByZXRfY2FzdDxH
ZGtFdmVudEJ1dHRvbio+KGV2ZW50KS0+dGltZSA9IEdES19DVVJSRU5UX1RJTUU7CisKKyAgICBH
ZGtEcmFnQ29udGV4dCogY29udGV4dCA9IGd0a19kcmFnX2JlZ2luKEdUS19XSURHRVQobV93ZWJW
aWV3KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdl
dExpc3QsIGRyYWdBY3Rpb24sIDEsIGV2ZW50KTsKKyAgICBnX29iamVjdF9yZWYoY29udGV4dCk7
CisKKyAgICBpZiAoaW1hZ2UpCisgICAgICAgIGd0a19kcmFnX3NldF9pY29uX3BpeGJ1Zihjb250
ZXh0LCBpbWFnZSwgZXZlbnRQb3MueCgpIC0gZHJhZ0ltYWdlT3JpZ2luLngoKSwgZXZlbnRQb3Mu
eSgpIC0gZHJhZ0ltYWdlT3JpZ2luLnkoKSk7CisgICAgZWxzZQorICAgICAgICBndGtfZHJhZ19z
ZXRfaWNvbl9kZWZhdWx0KGNvbnRleHQpOworCisgICAgZ3RrX3RhcmdldF9saXN0X3VucmVmKHRh
cmdldExpc3QpOwogfQogCi1EcmFnSW1hZ2VSZWYgRHJhZ0NsaWVudDo6Y3JlYXRlRHJhZ0ltYWdl
Rm9yTGluayhLVVJMJiwgY29uc3QgU3RyaW5nJiBsYWJlbCwgRnJhbWUqKQorRHJhZ0ltYWdlUmVm
IERyYWdDbGllbnQ6OmNyZWF0ZURyYWdJbWFnZUZvckxpbmsoS1VSTCYsIGNvbnN0IFN0cmluZyYs
IEZyYW1lKikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiAwOwpkaWZmIC0t
Z2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9EcmFnQ2xpZW50R3RrLmggYi9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRHdGsuaAppbmRleCA0MzY3YzY4Li45N2VhNzJh
IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRHdGsuaAor
KysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0RyYWdDbGllbnRHdGsuaApAQCAtMzIsOSAr
MzIsMTQgQEAKIAogI2luY2x1ZGUgIkRyYWdDbGllbnQuaCIKIAordHlwZWRlZiBzdHJ1Y3QgX1dl
YktpdFdlYlZpZXcgV2ViS2l0V2ViVmlldzsKKwogbmFtZXNwYWNlIFdlYktpdCB7CisKICAgICBj
bGFzcyBEcmFnQ2xpZW50IDogcHVibGljIFdlYkNvcmU6OkRyYWdDbGllbnQgewogICAgIHB1Ymxp
YzoKKyAgICAgICAgRHJhZ0NsaWVudChXZWJLaXRXZWJWaWV3Kik7CisKICAgICAgICAgdmlydHVh
bCB2b2lkIHdpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKFdlYkNvcmU6OkRyYWdEZXN0
aW5hdGlvbkFjdGlvbiwgV2ViQ29yZTo6RHJhZ0RhdGEqKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IHdpbGxQZXJmb3JtRHJhZ1NvdXJjZUFjdGlvbihXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uLCBj
b25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIFdlYkNvcmU6OkNsaXBib2FyZCopOwogICAgICAgICB2
aXJ0dWFsIFdlYkNvcmU6OkRyYWdEZXN0aW5hdGlvbkFjdGlvbiBhY3Rpb25NYXNrRm9yRHJhZyhX
ZWJDb3JlOjpEcmFnRGF0YSopOwpAQCAtNDUsNiArNTAsMTAgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAgICAgICAgIHZpcnR1YWwgV2ViQ29yZTo6RHJhZ0ltYWdlUmVmIGNyZWF0ZURyYWdJbWFnZUZv
ckxpbmsoV2ViQ29yZTo6S1VSTCYsIGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgbGFiZWwsIFdlYkNv
cmU6OkZyYW1lKik7CiAKICAgICAgICAgdmlydHVhbCB2b2lkIGRyYWdDb250cm9sbGVyRGVzdHJv
eWVkKCk7CisKKyAgICAgICAgcHJpdmF0ZToKKyAgICAgICAgICAgIFdlYktpdFdlYlZpZXcqIG1f
d2ViVmlldzsKKyAgICAgICAgICAgIFdlYkNvcmU6OkludFBvaW50IG1fc3RhcnRQb3M7CiAgICAg
fTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAg
Yi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCBlYzU5ZTYwLi45YTY2
OWQ1IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorKysg
Yi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtMTA4MSw2ICsxMDgxLDEy
OCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2NyZWVuX2NoYW5nZWQoR3RrV2lkZ2V0
KiB3aWRnZXQsIEdka1NjcmVlbiogcHJldmlvdQogICAgIHNldHRpbmdzLT5zZXRNaW5pbXVtTG9n
aWNhbEZvbnRTaXplKG1pbmltdW1Mb2dpY2FsRm9udFNpemUgLyA3Mi4wICogRFBJKTsKIH0KIAor
c3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2RyYWdfZW5kKEd0a1dpZGdldCogd2lkZ2V0LCBH
ZGtEcmFnQ29udGV4dCogY29udGV4dCkKK3sKKyAgICBnX29iamVjdF91bnJlZihjb250ZXh0KTsK
K30KKworc3RydWN0IERORENvbnRlbnRzUmVxdWVzdAoreworICAgIGdpbnQgaW5mbzsKKyAgICBH
dGtTZWxlY3Rpb25EYXRhKiBkbmRfc2VsZWN0aW9uX2RhdGE7CisKKyAgICBnYm9vbGVhbiBpc191
cmxfbGFiZWxfcmVxdWVzdDsKKyAgICBnY2hhciogdXJsOworfTsKKwordm9pZCBjbGlwYm9hcmRf
Y29udGVudHNfcmVjZWl2ZWQoR3RrQ2xpcGJvYXJkKiBjbGlwYm9hcmQsIEd0a1NlbGVjdGlvbkRh
dGEqIHNlbGVjdGlvbl9kYXRhLCBncG9pbnRlciBkYXRhKQoreworICAgIERORENvbnRlbnRzUmVx
dWVzdCogY29udGVudHNfcmVxdWVzdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8RE5EQ29udGVudHNSZXF1
ZXN0Kj4oZGF0YSk7CisKKyAgICBpZiAoY29udGVudHNfcmVxdWVzdC0+aXNfdXJsX2xhYmVsX3Jl
cXVlc3QpIHsKKyAgICAgICAgLy8gV2UgaGF2ZSByZWNlaXZlZCBjb250ZW50cyBvZiB0aGUgbGFi
ZWwgY2xpcGJvYXJkLiBVc2UgdGhlbSB0byBmb3JtCisgICAgICAgIC8vIHJlcXVpcmVkIHN0cnVj
dHVyZXMuIFdoZW4gZm9ybWVkLCBlbmhhbmNlIHRoZSBkbmQncyBzZWxlY3Rpb24gZGF0YQorICAg
ICAgICAvLyB3aXRoIHRoZW0gYW5kIHJldHVybi4KKworICAgICAgICAvLyBJZiB0aGUgbGFiZWwg
aXMgZW1wdHksIHVzZSB0aGUgdXJsIGl0c2VsZi4KKyAgICAgICAgZ2NoYXIqIHVybF9sYWJlbCA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Z2NoYXIqPihndGtfc2VsZWN0aW9uX2RhdGFfZ2V0X3RleHQoc2Vs
ZWN0aW9uX2RhdGEpKTsKKyAgICAgICAgaWYgKCF1cmxfbGFiZWwpCisgICAgICAgICAgICB1cmxf
bGFiZWwgPSBnX3N0cmR1cChjb250ZW50c19yZXF1ZXN0LT51cmwpOworCisgICAgICAgIGdjaGFy
KiBkYXRhOworICAgICAgICBzd2l0Y2ggKGNvbnRlbnRzX3JlcXVlc3QtPmluZm8pIHsKKyAgICAg
ICAgY2FzZSBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fVVJJX0xJU1Q6CisgICAgICAgICAg
ICBkYXRhID0gZ19zdHJkdXBfcHJpbnRmKCIlc1xyXG4lc1xyXG4iLCBjb250ZW50c19yZXF1ZXN0
LT51cmwsIHVybF9sYWJlbCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXRUJL
SVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fTkVUU0NBUEVfVVJMOgorICAgICAgICAgICAgZGF0YSA9
IGdfc3RyZHVwX3ByaW50ZigiJXNcbiVzIiwgY29udGVudHNfcmVxdWVzdC0+dXJsLCB1cmxfbGFi
ZWwpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBndGtfc2VsZWN0
aW9uX2RhdGFfc2V0KGNvbnRlbnRzX3JlcXVlc3QtPmRuZF9zZWxlY3Rpb25fZGF0YSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50c19yZXF1ZXN0LT5kbmRfc2VsZWN0aW9u
X2RhdGEtPnRhcmdldCwgOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWludGVy
cHJldF9jYXN0PGNvbnN0IGd1Y2hhcio+KGRhdGEpLCBzdHJsZW4oZGF0YSkpOworCisgICAgICAg
IGdfZnJlZSh1cmxfbGFiZWwpOworICAgICAgICBnX2ZyZWUoZGF0YSk7CisgICAgICAgIGdfZnJl
ZShjb250ZW50c19yZXF1ZXN0LT51cmwpOworICAgICAgICBnX2ZyZWUoY29udGVudHNfcmVxdWVz
dCk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN3aXRjaCAoY29udGVudHNfcmVx
dWVzdC0+aW5mbykgeworICAgIGNhc2UgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX0hUTUw6
CisgICAgY2FzZSBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fVEVYVDoKKyAgICAgICAgewor
ICAgICAgICBnY2hhciogZGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Z2NoYXIqPihndGtfc2VsZWN0
aW9uX2RhdGFfZ2V0X3RleHQoc2VsZWN0aW9uX2RhdGEpKTsKKyAgICAgICAgaWYgKGRhdGEpIHsK
KyAgICAgICAgICAgIGd0a19zZWxlY3Rpb25fZGF0YV9zZXQoY29udGVudHNfcmVxdWVzdC0+ZG5k
X3NlbGVjdGlvbl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250
ZW50c19yZXF1ZXN0LT5kbmRfc2VsZWN0aW9uX2RhdGEtPnRhcmdldCwgOCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBndWNoYXIqPihk
YXRhKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RybGVuKGRhdGEpKTsK
KyAgICAgICAgICAgIGdfZnJlZShkYXRhKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAg
ICAgICAgfQorICAgIGNhc2UgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX0lNQUdFOgorICAg
ICAgICB7CisgICAgICAgIEdka1BpeGJ1ZiogcGl4YnVmID0gZ3RrX3NlbGVjdGlvbl9kYXRhX2dl
dF9waXhidWYoc2VsZWN0aW9uX2RhdGEpOworICAgICAgICBpZiAocGl4YnVmKSB7CisgICAgICAg
ICAgICBndGtfc2VsZWN0aW9uX2RhdGFfc2V0X3BpeGJ1Zihjb250ZW50c19yZXF1ZXN0LT5kbmRf
c2VsZWN0aW9uX2RhdGEsIHBpeGJ1Zik7CisgICAgICAgICAgICBnX29iamVjdF91bnJlZihwaXhi
dWYpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgY2FzZSBXRUJL
SVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fVVJJX0xJU1Q6CisgICAgY2FzZSBXRUJLSVRfV0VCX1ZJ
RVdfVEFSR0VUX0lORk9fTkVUU0NBUEVfVVJMOgorICAgICAgICAvLyBVUkwncyBsYWJlbCBpcyBz
dG9yZWQgaW4gYW5vdGhlciBjbGlwYm9hcmQsIHNvIHdlIHN0b3JlIFVSTCBpbnRvCisgICAgICAg
IC8vIGNvbnRlbnRzIHJlcXVlc3QsIG1hcmsgdGhlIGxhdHRlciBhcyBhbiB1cmwgbGFiZWwgcmVx
dWVzdAorICAgICAgICAvLyBhbmQgcmVxdWVzdCBmb3IgY29udGVudHMgb2YgdGhlIGxhYmVsIGNs
aXBib2FyZC4KKyAgICAgICAgY29udGVudHNfcmVxdWVzdC0+aXNfdXJsX2xhYmVsX3JlcXVlc3Qg
PSBUUlVFOworICAgICAgICBjb250ZW50c19yZXF1ZXN0LT51cmwgPSByZWludGVycHJldF9jYXN0
PGdjaGFyKj4oZ3RrX3NlbGVjdGlvbl9kYXRhX2dldF90ZXh0KHNlbGVjdGlvbl9kYXRhKSk7CisK
KyAgICAgICAgZ3RrX2NsaXBib2FyZF9yZXF1ZXN0X2NvbnRlbnRzKGd0a19jbGlwYm9hcmRfZ2V0
KGdka19hdG9tX2ludGVybl9zdGF0aWNfc3RyaW5nKCJXZWJLaXRDbGlwYm9hcmRVcmxMYWJlbCIp
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGlvbl9kYXRh
LT50YXJnZXQsIGNsaXBib2FyZF9jb250ZW50c19yZWNlaXZlZCwgY29udGVudHNfcmVxdWVzdCk7
CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3
X2RyYWdfZGF0YV9nZXQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0RyYWdDb250ZXh0KiBjb250ZXh0
LCBHdGtTZWxlY3Rpb25EYXRhKiBzZWxlY3Rpb25fZGF0YSwgZ3VpbnQgaW5mbywgZ3VpbnQgdGlt
ZV8pCit7CisgICAgR2RrQXRvbSBzZWxlY3Rpb25fYXRvbTsKKyAgICBHZGtBdG9tIHRhcmdldF9h
dG9tID0gc2VsZWN0aW9uX2RhdGEtPnRhcmdldDsKKworICAgIHN3aXRjaCAoaW5mbykgeworICAg
ICAgICBjYXNlIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19IVE1MOgorICAgICAgICAgICAg
c2VsZWN0aW9uX2F0b20gPSBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygiV2ViS2l0Q2xp
cGJvYXJkSHRtbCIpOworICAgICAgICAgICAgLy8gSFRNTCBtYXJrdXAgZGF0YSBpcyBzZXQgYXMg
dGV4dCwgdGhlcmVmb3IsIHdlIG5lZWQgYSB0ZXh0LWxpa2UgdGFyZ2V0IGF0b20KKyAgICAgICAg
ICAgIHRhcmdldF9hdG9tID0gZ2RrX2F0b21faW50ZXJuX3N0YXRpY19zdHJpbmcoIlVURjhfU1RS
SU5HIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXRUJLSVRfV0VCX1ZJRVdf
VEFSR0VUX0lORk9fVEVYVDoKKyAgICAgICAgICAgIHNlbGVjdGlvbl9hdG9tID0gZ2RrX2F0b21f
aW50ZXJuX3N0YXRpY19zdHJpbmcoIldlYktpdENsaXBib2FyZFRleHQiKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19JTUFHRToK
KyAgICAgICAgICAgIHNlbGVjdGlvbl9hdG9tID0gZ2RrX2F0b21faW50ZXJuX3N0YXRpY19zdHJp
bmcoIldlYktpdENsaXBib2FyZEltYWdlIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
Y2FzZSBXRUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fVVJJX0xJU1Q6CisgICAgICAgIGNhc2Ug
V0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX05FVFNDQVBFX1VSTDoKKyAgICAgICAgICAgIHNl
bGVjdGlvbl9hdG9tID0gZ2RrX2F0b21faW50ZXJuX3N0YXRpY19zdHJpbmcoIldlYktpdENsaXBi
b2FyZFVybCIpOworICAgICAgICAgICAgLy8gV2UgcmVxdWlyZSBVUkwgYW5kIGxhYmVsLCB3aGlj
aCBhcmUgYm90aCBzdG9yZWQgaW4gdGV4dCBmb3JtYXQKKyAgICAgICAgICAgIC8vIGFuZCBhcmUg
bmVlZGVkIHRvIGJlIHJldHJpZXZlZCBhcyBzdWNoLgorICAgICAgICAgICAgdGFyZ2V0X2F0b20g
PSBnZGtfYXRvbV9pbnRlcm5fc3RhdGljX3N0cmluZygiVVRGOF9TVFJJTkciKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgIH0KKworICAgIERORENvbnRlbnRzUmVxdWVzdCogY29udGVudHNfcmVx
dWVzdCA9IGdfbmV3KERORENvbnRlbnRzUmVxdWVzdCwgMSk7CisgICAgY29udGVudHNfcmVxdWVz
dC0+aW5mbyA9IGluZm87CisgICAgY29udGVudHNfcmVxdWVzdC0+aXNfdXJsX2xhYmVsX3JlcXVl
c3QgPSBGQUxTRTsKKyAgICBjb250ZW50c19yZXF1ZXN0LT5kbmRfc2VsZWN0aW9uX2RhdGEgPSBz
ZWxlY3Rpb25fZGF0YTsKKworICAgIGd0a19jbGlwYm9hcmRfcmVxdWVzdF9jb250ZW50cyhndGtf
Y2xpcGJvYXJkX2dldChzZWxlY3Rpb25fYXRvbSksIHRhcmdldF9hdG9tLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjbGlwYm9hcmRfY29udGVudHNfcmVjZWl2ZWQsIGNvbnRl
bnRzX3JlcXVlc3QpOworfQorCiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfY2xhc3NfaW5p
dChXZWJLaXRXZWJWaWV3Q2xhc3MqIHdlYlZpZXdDbGFzcykKIHsKICAgICBHdGtCaW5kaW5nU2V0
KiBiaW5kaW5nX3NldDsKQEAgLTE4MTYsNiArMTkzOCw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93
ZWJfdmlld19jbGFzc19pbml0KFdlYktpdFdlYlZpZXdDbGFzcyogd2ViVmlld0NsYXNzKQogICAg
IHdpZGdldENsYXNzLT5mb2N1c19vdXRfZXZlbnQgPSB3ZWJraXRfd2ViX3ZpZXdfZm9jdXNfb3V0
X2V2ZW50OwogICAgIHdpZGdldENsYXNzLT5nZXRfYWNjZXNzaWJsZSA9IHdlYmtpdF93ZWJfdmll
d19nZXRfYWNjZXNzaWJsZTsKICAgICB3aWRnZXRDbGFzcy0+c2NyZWVuX2NoYW5nZWQgPSB3ZWJr
aXRfd2ViX3ZpZXdfc2NyZWVuX2NoYW5nZWQ7CisgICAgd2lkZ2V0Q2xhc3MtPmRyYWdfZW5kID0g
d2Via2l0X3dlYl92aWV3X2RyYWdfZW5kOworICAgIHdpZGdldENsYXNzLT5kcmFnX2RhdGFfZ2V0
ID0gd2Via2l0X3dlYl92aWV3X2RyYWdfZGF0YV9nZXQ7CiAKICAgICBHdGtDb250YWluZXJDbGFz
cyogY29udGFpbmVyQ2xhc3MgPSBHVEtfQ09OVEFJTkVSX0NMQVNTKHdlYlZpZXdDbGFzcyk7CiAg
ICAgY29udGFpbmVyQ2xhc3MtPmFkZCA9IHdlYmtpdF93ZWJfdmlld19jb250YWluZXJfYWRkOwpA
QCAtMjI1Niw3ICsyMzgwLDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2luaXQoV2Vi
S2l0V2ViVmlldyogd2ViVmlldykKICAgICBwcml2LT5pbUNvbnRleHQgPSBndGtfaW1fbXVsdGlj
b250ZXh0X25ldygpOwogCiAgICAgV2ViS2l0OjpJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckNs
aWVudCA9IG5ldyBXZWJLaXQ6Okluc3BlY3RvckNsaWVudCh3ZWJWaWV3KTsKLSAgICBwcml2LT5j
b3JlUGFnZSA9IG5ldyBQYWdlKG5ldyBXZWJLaXQ6OkNocm9tZUNsaWVudCh3ZWJWaWV3KSwgbmV3
IFdlYktpdDo6Q29udGV4dE1lbnVDbGllbnQod2ViVmlldyksIG5ldyBXZWJLaXQ6OkVkaXRvckNs
aWVudCh3ZWJWaWV3KSwgbmV3IFdlYktpdDo6RHJhZ0NsaWVudCwgaW5zcGVjdG9yQ2xpZW50KTsK
KyAgICBwcml2LT5jb3JlUGFnZSA9IG5ldyBQYWdlKG5ldyBXZWJLaXQ6OkNocm9tZUNsaWVudCh3
ZWJWaWV3KSwgbmV3IFdlYktpdDo6Q29udGV4dE1lbnVDbGllbnQod2ViVmlldyksIG5ldyBXZWJL
aXQ6OkVkaXRvckNsaWVudCh3ZWJWaWV3KSwgbmV3IFdlYktpdDo6RHJhZ0NsaWVudCh3ZWJWaWV3
KSwgaW5zcGVjdG9yQ2xpZW50KTsKIAogICAgIC8vIFdlIGFsc28gYWRkIGEgc2ltcGxlIHdyYXBw
ZXIgY2xhc3MgdG8gcHJvdmlkZSB0aGUgcHVibGljCiAgICAgLy8gaW50ZXJmYWNlIGZvciB0aGUg
V2ViIEluc3BlY3Rvci4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZp
ZXcuaCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaAppbmRleCBmYmRlZmE4Li5k
ODdkODNkIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgKKysr
IGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCkBAIC01Miw3ICs1MiwxMCBAQCB0
eXBlZGVmIGVudW0gewogdHlwZWRlZiBlbnVtCiB7CiAgICAgV0VCS0lUX1dFQl9WSUVXX1RBUkdF
VF9JTkZPX0hUTUwsCi0gICAgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX1RFWFQKKyAgICBX
RUJLSVRfV0VCX1ZJRVdfVEFSR0VUX0lORk9fVEVYVCwKKyAgICBXRUJLSVRfV0VCX1ZJRVdfVEFS
R0VUX0lORk9fSU1BR0UsCisgICAgV0VCS0lUX1dFQl9WSUVXX1RBUkdFVF9JTkZPX1VSSV9MSVNU
LAorICAgIFdFQktJVF9XRUJfVklFV19UQVJHRVRfSU5GT19ORVRTQ0FQRV9VUkwKIH0gV2ViS2l0
V2ViVmlld1RhcmdldEluZm87CiAKIHN0cnVjdCBfV2ViS2l0V2ViVmlldyB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40202</attachid>
            <date>2009-09-27 10:52:14 -0700</date>
            <delta_ts>2009-09-28 17:12:56 -0700</delta_ts>
            <desc>Manual test for drag source actions</desc>
            <filename>dnd-manual-test.diff</filename>
            <type>text/plain</type>
            <size>4375</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YmYzODEzNC4uMzU5YmMxNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAwOS0wOC0xMiAgWmFuIERvYmVyc2Vr
ICA8emFuZG9iZXJzZWtAZ21haWwuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFtHVEtdIERyYWcgYW5kIGRyb3Agc3VwcG9ydAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM2NDIKKworICAgICAgICBB
ZGQgbWFudWFsIHRlc3QgZm9yIEdUSydzIHNvdXJjZSBkcmFnIGFjdGlvbnMuCisKKyAgICAgICAg
KiBtYW51YWwtdGVzdHMvZ3RrL2RyYWctc291cmNlLWFjdGlvbnMtc3VwcG9ydC5odG1sOiBBZGRl
ZC4KKwogMjAwOS0wOS0yNyAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBub2JvZHkgKHRyaXZpYWwgQ2hhbmdlTG9nIGZpeCkuCmRp
ZmYgLS1naXQgYS9XZWJDb3JlL21hbnVhbC10ZXN0cy9ndGsvZHJhZy1zb3VyY2UtYWN0aW9ucy1z
dXBwb3J0Lmh0bWwgYi9XZWJDb3JlL21hbnVhbC10ZXN0cy9ndGsvZHJhZy1zb3VyY2UtYWN0aW9u
cy1zdXBwb3J0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjI2Y2Fm
OAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvcmUvbWFudWFsLXRlc3RzL2d0ay9kcmFnLXNvdXJj
ZS1hY3Rpb25zLXN1cHBvcnQuaHRtbApAQCAtMCwwICsxLDgxIEBACis8IURPQ1RZUEUgSFRNTCBQ
VUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPgor
ICAgIDxoZWFkPgorICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRl
bnQ9InRleHQvaHRtbDsgY2hhcnNldD11dGYtOCIgLz4KKyAgICAgICAgPHRpdGxlPkRyYWcgc291
cmNlIGFjdGlvbnMgc3VwcG9ydCAtIG1hbnVhbCB0ZXN0PC90aXRsZT4KKyAgICA8L2hlYWQ+Cisg
ICAgPGJvZHk+CisKKyAgICAgICAgPHA+QnVnIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMzY0MiI+PGI+MjM2NDI8L2I+PC9hPgorICAgICAgICAgICAg
PGI+IC0gW0dUS10gRHJhZyBhbmQgZHJvcCBzdXBwb3J0PC9iPgorICAgICAgICA8L3A+CisgICAg
ICAgIDxwPlRoaXMgdGVzdHMgZW5zdXJlcyBkcmFnIGFjdGlvbnMgaW4gd2hpY2ggV2ViS2l0IGlz
IHRoZSBzb3VyY2UgYXJlIHdvcmtpbmcgcHJvcGVybHkuPC9wPgorCisgICAgICAgIDxoND5QcmVy
ZXF1aXNpdGVzPC9oND4KKyAgICAgICAgPG9sPgorICAgICAgICAgICAgPGxpPllvdSBtdXN0IGJl
IHJ1bm5pbmcgV2ViS2l0IGluIGEgR05PTUUgZW52aXJvbm1lbnQ8L2xpPgorICAgICAgICAgICAg
PGxpPkVuc3VyZSB5b3UgaGF2ZSB0aGVzZSBhZGRpdGlvbmFsIChvciBzaW1pbGFyKSBwcm9ncmFt
cyBhdmFpbGFibGUgdG8gcnVuOjwvbGk+CisgICAgICAgICAgICA8b2w+CisgICAgICAgICAgICAg
ICAgPGxpPjxiPkZpcmVmb3g8L2I+PC9saT4KKyAgICAgICAgICAgICAgICA8bGk+PGI+T3Blbk9m
ZmljZS5vcmcgRHJhdyAvIE9wZW5PZmZpY2Uub3JnIFdyaXRlcjwvYj48L2xpPgorICAgICAgICAg
ICAgPC9vbD4KKyAgICAgICAgPC9vbD4KKworICAgICAgICA8aDQ+VGVzdCAxOiBEcmFnIG9mIEhU
TUwgY29udGVudDwvaDQ+CisgICAgICAgIDxiPlN0ZXBzIHRvIHRlc3Q6PC9iPgorICAgICAgICA8
b2w+CisgICAgICAgICAgICA8bGk+U3RhcnQgPGI+T3Blbk9mZmljZS5vcmcgRHJhdzwvYj4gb3Ig
PGI+T3Blbk9mZmljZS5vcmcgV3JpdGVyPC9iPjwvbGk+CisgICAgICAgICAgICA8bGk+T3BlbiA8
YSBocmVmPSJodHRwOi8vd3d3Lmdvb2dsZS5jb20vc2VhcmNoPyZxPXdlYmtpdCI+dGhpcyBsaW5r
PC9hPiBvciBvdGhlciBwYWdlIHdpdGggcmljaCBIVE1MPC9saT4KKyAgICAgICAgICAgIDxsaT5T
ZWxlY3Qgc29tZSBjb250ZW50LCBvciBldmVuIHRoZSB3aG9sZSBwYWdlPC9saT4KKyAgICAgICAg
ICAgIDxsaT5EcmFnIHNlbGVjdGVkIGNvbnRlbnQgdG8gdGhlIDxiPk9wZW5PZmZpY2Uub3JnPC9i
PiBwcm9ncmFtIHlvdSBvcGVuZWQ8L2xpPgorICAgICAgICA8L29sPgorICAgICAgICA8Yj5FeHBl
Y3RlZDo8L2I+CisgICAgICAgIDxwPldoYXQgYXBwZWFycyBpbiB0aGUgPGI+T3Blbk9mZmljZS5v
cmc8L2I+IHByb2dyYW0gc2hvdWxkIGhhdmUgc2ltaWxhciBsYXlvdXQgYW5kIGNvbG9yaW5nIGFz
IHNlbGVjdGVkIGNvbnRlbnQuPC9wPgorCisgICAgICAgIDxoND5UZXN0IDI6IERyYWcgb2YgdGV4
dCBjb250ZW50PC9oND4KKyAgICAgICAgPGI+U3RlcHMgdG8gdGVzdDo8L2I+CisgICAgICAgIDxv
bD4KKyAgICAgICAgICAgIDxsaT5TZWxlY3Qgc29tZSB0ZXh0IG9uIHRoaXMgcGFnZTwvbGk+Cisg
ICAgICAgICAgICA8bGk+RHJhZyBzZWxlY3RlZCBjb250ZW50IG9udG8gdGhlIGRlc2t0b3A8L2xp
PgorICAgICAgICA8L29sPgorICAgICAgICA8Yj5FeHBlY3RlZDo8L2I+CisgICAgICAgIDxwPlNl
bGVjdGVkIGNvbnRlbnQgc2hvdWxkIGFwcGVhciBhcyB0ZXh0IGluIGEgbmV3IHRleHQgZmlsZSBv
biB0aGUgZGVza3RvcCwgbmFtZWQgJ2Ryb3BwZWQgdGV4dC50eHQnIG9yIHNpbWlsYXIuPC9wPgor
CisgICAgICAgIDxoND5UZXN0IDM6IERyYWcgb2YgaW1hZ2UgY29udGVudCB0byBVUkwgZGVzdGlv
bmF0aW9uPC9oND4KKyAgICAgICAgPGI+U3RlcHMgdG8gdGVzdDo8L2I+CisgICAgICAgIDxvbD4K
KyAgICAgICAgICAgIDxsaT5EcmFnIHRoZSBpbWFnZSBiZWxvdyBvciBvdGhlciBpbWFnZSBvbnRv
IHRoZSBkZXNrdG9wPC9saT4KKyAgICAgICAgPC9vbD4KKyAgICAgICAgPGltZyBzcmM9Ii4uL3Jl
c291cmNlcy9kcmFnLWltYWdlLnBuZyIvPjxici8+CisgICAgICAgIDxiPkV4cGVjdGVkOjwvYj4K
KyAgICAgICAgPHA+TmV3IGltYWdlIGZpbGUgc2hvdWxkIGFwcGVhciBvbiB0aGUgZGVza3RvcC48
L3A+CisKKyAgICAgICAgPGg0PlRlc3QgNDogRHJhZyBvZiBpbWFnZSBjb250ZW50IHRvIGltYWdl
IGRlc3Rpb25hdGlvbjwvaDQ+CisgICAgICAgIDxiPlN0ZXBzIHRvIHRlc3Q6PC9iPgorICAgICAg
ICA8b2w+CisgICAgICAgICAgICA8bGk+U3RhcnQgPGI+T3Blbk9mZmljZS5vcmcgRHJhdzwvYj4g
b3IgPGI+T3Blbk9mZmljZS5vcmcgV3JpdGVyPC9iPjwvbGk+CisgICAgICAgICAgICA8bGk+RHJh
ZyB0aGUgaW1hZ2UgYmVsb3cgb3Igb3RoZXIgaW1hZ2UgdG8gdGhlIDxiPk9wZW5PZmZpY2Uub3Jn
PC9iPiBwcm9ncmFtPC9saT4KKyAgICAgICAgPC9vbD4KKyAgICAgICAgPGltZyBzcmM9Ii4uL3Jl
c291cmNlcy9kcmFnLWltYWdlLnBuZyIvPjxici8+CisgICAgICAgIDxiPkV4cGVjdGVkOjwvYj4K
KyAgICAgICAgPHA+QSBuZXcgaW1hZ2Ugb2JqZWN0IG9mIHNhbWUgc2l6ZSBzaG91bGQgYXBwZWFy
IGluIHRoZSBkb2N1bWVudC48L3A+CisKKyAgICAgICAgPGg0PlRlc3QgNTogRHJhZyBvZiBVUkwg
b250byB0aGUgZGVza3RvcDwvaDQ+CisgICAgICAgIDxiPlN0ZXBzIHRvIHRlc3Q6PC9iPgorICAg
ICAgICA8b2w+CisgICAgICAgICAgICA8bGk+RHJhZyA8YSBocmVmPSJodHRwOi8vd3d3Lmdvb2ds
ZS5jb20vc2VhcmNoPyZxPXdlYmtpdCI+V2ViS2l0IHNlYXJjaDwvYT4gb3Igb3RoZXIgb250byB0
aGUgZGVza3RvcDwvbGk+CisgICAgICAgIDwvb2w+CisgICAgICAgIDxiPkV4cGVjdGVkOjwvYj4K
KyAgICAgICAgPHA+QSBuZXcgbGluayBzaG91bGQgYXBwZWFyIG9uIHRoZSBkZXNrdG9wLCB3aXRo
IG5hbWUgJ0xpbmsgdG8gV2ViS2l0IHNlYXJjaCcgb3Igc2ltaWxhci48L3A+CisKKyAgICAgICAg
PGg0PlRlc3QgNjogRHJhZyBvZiBVUkwgaW50byBGaXJlZm94IGxvY2F0aW9uIGVudHJ5IDwvaDQ+
CisgICAgICAgIDxiPlN0ZXBzIHRvIHRlc3Q6PC9iPgorICAgICAgICA8b2w+CisgICAgICAgICAg
ICA8bGk+U3RhcnQgPGI+RmlyZWZveDwvYj48L2xpPgorICAgICAgICAgICAgPGxpPkRyYWcgPGEg
aHJlZj0iaHR0cDovL3d3dy5nb29nbGUuY29tL3NlYXJjaD8mcT13ZWJraXQiPldlYktpdCBzZWFy
Y2g8L2E+IG9yIG90aGVyIGxpbmsgaW50byB0aGUgbG9jYXRpb24gZW50cnkgb2YgRmlyZWZveCBv
ciBkcm9wIHRoZSBsaW5rIG9udG8gdGhlIHBhZ2UgdmlldyBvZiBGaXJlZm94PC9saT4gCisgICAg
ICAgIDwvb2w+CisgICAgICAgIDxiPkV4cGVjdGVkOjwvYj4KKyAgICAgICAgPHA+RmlyZWZveCBv
cGVucyB0aGUgbGluay48L3A+CisKKyAgICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="21382"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>