<?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>76911</bug_id>
          
          <creation_ts>2012-01-24 06:51:26 -0800</creation_ts>
          <short_desc>[GTK] WebKitWebView won&apos;t work in a GtkOffscreenWindow</short_desc>
          <delta_ts>2013-01-30 08:57:29 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>76181</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Claudio Saavedra">csaavedra</reporter>
          <assigned_to name="Martin Robinson">mrobinson</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>gustavo</cc>
    
    <cc>jeromeg</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pnormand</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>541300</commentid>
    <comment_count>0</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2012-01-24 06:51:26 -0800</bug_when>
    <thetext>GtkOffscreenWindow, although a GtkWindow, shouldn&apos;t be used with standard GtkWindow API. WebKit::ChromeClient makes several calls to gtk_window_* methods on the toplevel that seem to return garbage when used with a GtkOffscreenWindow. As a result of this, it&apos;s not possible to use a WebKitWebView inside a GtkOffscreenWindow.

The attached example shows the issue. The stacktrace is this:


#0  0x0000000000000000 in ?? ()
#1  0x00007ffff5423014 in gdk_window_get_frame_extents (window=0x647480, rect=0x7fffffffc1e0) at gdkwindow.c:10092
#2  0x00007ffff624f95b in gtk_window_get_position (window=0x7e6090, root_x=0x7fffffffc2a0, root_y=0x7fffffffc2a4) at gtkwindow.c:4613
#3  0x00007ffff69f349d in WebKit::ChromeClient::windowRect() () from /opt/gnome-3.0/lib64/libwebkitgtk-3.0.so.0
#4  0x00007ffff6fa462e in WebCore::Chrome::windowRect() const () from /opt/gnome-3.0/lib64/libwebkitgtk-3.0.so.0
#5  0x00007ffff6a0f304 in webkitViewportAttributesRecompute () from /opt/gnome-3.0/lib64/libwebkitgtk-3.0.so.0
#6  0x00007ffff6fd45fc in WebCore::Frame::setDocument(WTF::PassRefPtr&lt;WebCore::Document&gt;) () from /opt/gnome-3.0/lib64/libwebkitgtk-3.0.so.0
#7  0x00007ffff6f3d133 in WebCore::DocumentWriter::begin(WebCore::KURL const&amp;, bool, WebCore::Document*) () from /opt/gnome-3.0/lib64/libwebkitgtk-3.0.so.0
#8  0x00007ffff6f43b94 in WebCore::FrameLoader::receivedFirstData() () from /opt/gnome-3.0/lib64/libwebkitgtk-3.0.so.0
#9  0x00007ffff6f3df88 in WebCore::DocumentWriter::setEncoding(WTF::String const&amp;, bool) () from /opt/gnome-3.0/lib64/libwebkitgtk-3.0.so.0
#10 0x00007ffff6f328af in WebCore::DocumentLoader::commitData(char const*, unsigned long) () from /opt/gnome-3.0/lib64/libwebkitgtk-3.0.so.0
#11 0x00007ffff6a00f1e in WebKit::FrameLoaderClient::committedLoad(WebCore::DocumentLoader*, char const*, int) () from /opt/gnome-3.0/lib64/libwebkitgtk-3.0.so.0
#12 0x00007ffff6f327dd in WebCore::DocumentLoader::commitLoad(char const*, int) () from /opt/gnome-3.0/lib64/libwebkitgtk-3.0.so.0
#13 0x00007ffff6f79b98 in WebCore::ResourceLoader::didReceiveData(char const*, int, long long, bool) () from /opt/gnome-3.0/lib64/libwebkitgtk-3.0.so.0
#14 0x00007ffff6f65175 in WebCore::MainResourceLoader::didReceiveData(char const*, int, long long, bool) () from /opt/gnome-3.0/lib64/libwebkitgtk-3.0.so.0
#15 0x00007ffff6f7904e in WebCore::ResourceLoader::didReceiveData(WebCore::ResourceHandle*, char const*, int, int) () from /opt/gnome-3.0/lib64/libwebkitgtk-3.0.so.0
#16 0x00007ffff70935ea in WebCore::readCallback(_GObject*, _GAsyncResult*, void*) () from /opt/gnome-3.0/lib64/libwebkitgtk-3.0.so.0
#17 0x00007ffff4325cd3 in async_ready_callback_wrapper (source_object=0x7c78c0, res=0x866d80, user_data=0x7fffe8100870) at ginputstream.c:470
#18 0x00007ffff433f0c6 in g_simple_async_result_complete (simple=0x866d80) at gsimpleasyncresult.c:744
#19 0x00007ffff5c7c674 in read_async_done (stream=0x7c78c0) at soup-http-input-stream.c:691
#20 0x00007ffff5c7b8a8 in soup_http_input_stream_got_chunk (msg=0x7f5ae0, chunk_buffer=0x853130, stream=0x7c78c0) at soup-http-input-stream.c:298
#21 0x00007ffff4080821 in g_cclosure_marshal_VOID__BOXED (closure=0x826c20, return_value=0x0, n_param_values=2, param_values=0x843460, invocation_hint=0x7fffffffcb00, marshal_data=0x0) at gmarshal.c:574
#22 0x00007ffff407df5a in g_closure_invoke (closure=0x826c20, return_value=0x0, n_param_values=2, param_values=0x843460, invocation_hint=0x7fffffffcb00) at gclosure.c:774
#23 0x00007ffff4097cc5 in signal_emit_unlocked_R (node=0x81ddc0, detail=0, instance=0x7f5ae0, emission_return=0x0, instance_and_params=0x843460) at gsignal.c:3302
#24 0x00007ffff4096ebf in g_signal_emit_valist (instance=0x7f5ae0, signal_id=325, detail=0, var_args=0x7fffffffcd88) at gsignal.c:3033
#25 0x00007ffff4097417 in g_signal_emit (instance=0x7f5ae0, signal_id=325, detail=0) at gsignal.c:3090
#26 0x00007ffff5c7f749 in soup_message_got_chunk (msg=0x7f5ae0, chunk=0x853130) at soup-message.c:1082
#27 0x00007ffff5c84889 in io_handle_sniffing (msg=0x7f5ae0, done_reading=0) at soup-message-io.c:243
#28 0x00007ffff5c85003 in read_body_chunk (msg=0x7f5ae0) at soup-message-io.c:469
#29 0x00007ffff5c8629f in io_read (sock=0x8142f0, msg=0x7f5ae0) at soup-message-io.c:989
#30 0x00007ffff5c86b10 in io_unpause_internal (msg=0x7f5ae0) at soup-message-io.c:1214
#31 0x00007ffff3d7d3cd in g_idle_dispatch (source=0x8279e0, callback=0x7ffff5c86980 &lt;io_unpause_internal&gt;, user_data=0x7f5ae0) at gmain.c:4632
#32 0x00007ffff3d7aca3 in g_main_dispatch (context=0x64bda0) at gmain.c:2513
#33 0x00007ffff3d7b964 in g_main_context_dispatch (context=0x64bda0) at gmain.c:3050
#34 0x00007ffff3d7bb47 in g_main_context_iterate (context=0x64bda0, block=1, dispatch=1, self=0x82cf30) at gmain.c:3121
#35 0x00007ffff3d7bf70 in g_main_loop_run (loop=0x82f370) at gmain.c:3315
#36 0x00007ffff6096485 in gtk_main () at gtkmain.c:1162
#37 0x0000000000400a58 in main ()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541302</commentid>
    <comment_count>1</comment_count>
      <attachid>123728</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2012-01-24 06:52:41 -0800</bug_when>
    <thetext>Created attachment 123728
simple test program</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541309</commentid>
    <comment_count>2</comment_count>
      <attachid>123730</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2012-01-24 07:16:06 -0800</bug_when>
    <thetext>Created attachment 123730
[GTK] WebKitWebView won&apos;t work in a GtkOffscreenWindow

[GTK] WebKitWebView won&apos;t work in a GtkOffscreenWindow
        https://bugs.webkit.org/show_bug.cgi?id=76911

        Reviewed by NOBODY (OOPS!).

        * WebCoreSupport/ChromeClientGtk.cpp:
        (WebKit::ChromeClient::windowRect):
        (WebKit::ChromeClient::setWindowRect):
        Do not call GtkWindow API in GtkOffscreenWindow
        * tests/testwebview.c: Add a simple test for offscreen windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>541365</commentid>
    <comment_count>3</comment_count>
      <attachid>123730</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-01-24 08:56:01 -0800</bug_when>
    <thetext>Comment on attachment 123730
[GTK] WebKitWebView won&apos;t work in a GtkOffscreenWindow

This patch is awesome. The only thing I wonder is if WebKit2 has similar problems. Do you mind double checking that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>542075</commentid>
    <comment_count>4</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2012-01-25 01:31:55 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 123730 [details])
&gt; This patch is awesome. The only thing I wonder is if WebKit2 has similar problems. Do you mind double checking that?

For the same usecase, WK2 is not crashing. However, I see one place where the same assumption is made, but I don&apos;t really know how to check it:

 WebKitUIClient::getWindowFrame(WKPageRef page, const void*)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545205</commentid>
    <comment_count>5</comment_count>
      <attachid>123730</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-01-30 10:47:34 -0800</bug_when>
    <thetext>Comment on attachment 123730
[GTK] WebKitWebView won&apos;t work in a GtkOffscreenWindow

View in context: https://bugs.webkit.org/attachment.cgi?id=123730&amp;action=review

Thanks. I think you just need to make the same fix in WebKit2 and fix the few style nits below.

&gt; Source/WebKit/gtk/tests/testwebview.c:369
&gt; +    GtkWidget* web_view;

I think your asterisk is in the wrong place here.

&gt; Source/WebKit/gtk/tests/testwebview.c:374
&gt; +    window = gtk_offscreen_window_new();
&gt; +    web_view = webkit_web_view_new();

Just define the variables where you use them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545367</commentid>
    <comment_count>6</comment_count>
      <attachid>124589</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2012-01-30 13:35:13 -0800</bug_when>
    <thetext>Created attachment 124589
[GTK] WebKitWebView won&apos;t work in a GtkOffscreenWindow

[GTK] WebKitWebView won&apos;t work in a GtkOffscreenWindow
        https://bugs.webkit.org/show_bug.cgi?id=76911

        Reviewed by NOBODY (OOPS!).

        * WebCoreSupport/ChromeClientGtk.cpp:
        (WebKit::ChromeClient::windowRect):
        (WebKit::ChromeClient::setWindowRect):
        Do not call GtkWindow API in GtkOffscreenWindow
        * tests/testwebview.c: Add a simple test for offscreen windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545372</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-30 13:39:52 -0800</bug_when>
    <thetext>Attachment 124589 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/gtk/ChangeLog&apos;, u&apos;Source/Web...&quot; exit_code: 1

Source/WebKit2/UIProcess/API/gtk/WebKitUIClient.cpp:114:  Extra space before ( in function call  [whitespace/parens] [4]
WARNING: File exempt from style guide. Skipping: &quot;Source/WebKit/gtk/tests/testwebview.c&quot;
Total errors found: 1 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545373</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-30 13:40:11 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545386</commentid>
    <comment_count>9</comment_count>
      <attachid>124593</attachid>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2012-01-30 13:55:17 -0800</bug_when>
    <thetext>Created attachment 124593
[GTK] WebKitWebView won&apos;t work in a GtkOffscreenWindow

[GTK] WebKitWebView won&apos;t work in a GtkOffscreenWindow
        https://bugs.webkit.org/show_bug.cgi?id=76911

        Reviewed by NOBODY (OOPS!).

        * WebCoreSupport/ChromeClientGtk.cpp:
        (WebKit::ChromeClient::windowRect):
        (WebKit::ChromeClient::setWindowRect):
        Do not call GtkWindow API in GtkOffscreenWindow
        * tests/testwebview.c: Add a simple test for offscreen windows.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545411</commentid>
    <comment_count>10</comment_count>
      <attachid>124593</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-01-30 14:25:10 -0800</bug_when>
    <thetext>Comment on attachment 124593
[GTK] WebKitWebView won&apos;t work in a GtkOffscreenWindow

View in context: https://bugs.webkit.org/attachment.cgi?id=124593&amp;action=review

&gt; Source/WebKit/gtk/tests/testwebview.c:380
&gt; +    loop = g_main_loop_new(NULL, TRUE);
&gt; +
&gt; +    GtkWidget *window = gtk_offscreen_window_new();
&gt; +    GtkWidget *web_view = webkit_web_view_new();
&gt; +
&gt; +    gtk_container_add(GTK_CONTAINER(window), web_view);
&gt; +    gtk_widget_show_all(window);
&gt; +    g_signal_connect(web_view, &quot;notify::load-status&quot;, G_CALLBACK(idle_quit_loop_cb), NULL);
&gt; +    webkit_web_view_load_uri(WEBKIT_WEB_VIEW(web_view), base_uri);
&gt; +
&gt; +    g_main_loop_run(loop);
&gt; +

Seems that the main loop is leaking here? I&apos;ll fix when landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>545805</commentid>
    <comment_count>11</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-01-30 23:33:09 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; GtkOffscreenWindow, although a GtkWindow, shouldn&apos;t be used with standard GtkWindow API. 

Do you know why? isn&apos;t it a GtkOffscreenWindow bug?

WebKit::ChromeClient makes several calls to gtk_window_* methods on the toplevel that seem to return garbage when used with a GtkOffscreenWindow. As a result of this, it&apos;s not possible to use a WebKitWebView inside a GtkOffscreenWindow.
&gt; 

We are assuming a toplevel is a Gtkwindow in several places, I&apos;m not sure it&apos;s correct, we should probably always check gtk_widget_is_toplevel() &amp;&amp; GTK_IS_WINDOW() but that wouldn&apos;t work in this case either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546313</commentid>
    <comment_count>12</comment_count>
      <attachid>124788</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-01-31 11:48:47 -0800</bug_when>
    <thetext>Created attachment 124788
More extensive version of Claudio&apos;s patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546315</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-31 11:51:27 -0800</bug_when>
    <thetext>Attachment 124788 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/update-webkit&apos;]&quot; exit_code: 9

Updating OpenSource
First, rewinding head to replay your work on top of it...
Applying: Fix compilation errors on build-webkit --debug --no-workers on mac.
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
Auto-merging LayoutTests/ChangeLog
CONFLICT (content): Merge conflict in LayoutTests/ChangeLog
Auto-merging LayoutTests/platform/qt/Skipped
CONFLICT (content): Merge conflict in LayoutTests/platform/qt/Skipped
Auto-merging Source/WebCore/ChangeLog
CONFLICT (content): Merge conflict in Source/WebCore/ChangeLog
Auto-merging Source/WebCore/WebCore.exp.in
Auto-merging Source/WebKit/mac/ChangeLog
CONFLICT (content): Merge conflict in Source/WebKit/mac/ChangeLog
Failed to merge in the changes.
Patch failed at 0001 Fix compilation errors on build-webkit --debug --no-workers on mac.

When you have resolved this problem run &quot;git rebase --continue&quot;.
If you would prefer to skip this patch, instead run &quot;git rebase --skip&quot;.
To restore the original branch and stop rebasing run &quot;git rebase --abort&quot;.

rebase refs/remotes/origin/master: command returned error: 1

Died at Tools/Scripts/update-webkit line 164.


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546324</commentid>
    <comment_count>14</comment_count>
      <attachid>124788</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-01-31 11:59:24 -0800</bug_when>
    <thetext>Comment on attachment 124788
More extensive version of Claudio&apos;s patch

Attachment 124788 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11388075</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546833</commentid>
    <comment_count>15</comment_count>
      <attachid>124788</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-01-31 23:37:50 -0800</bug_when>
    <thetext>Comment on attachment 124788
More extensive version of Claudio&apos;s patch

View in context: https://bugs.webkit.org/attachment.cgi?id=124788&amp;action=review

&gt; Source/WebCore/platform/gtk/GtkUtilities.cpp:48
&gt; +bool gtkWidgetIsValidToplevel(GtkWidget* widget)
&gt; +{
&gt; +    return gtk_widget_is_top_level(widget) &amp;&amp; GTK_IS_WINDOW(widget) &amp;&amp; !GTK_IS_OFFSCREEN_WINDOW(widget);
&gt; +}

I would call it gtkWidgetIsToplevelWindow, because it can be a valid toplevel, but not a GtkWindow. Also, this is always called after gtk_widget_get_top_level, why not something like gtkWidgetGetToplevelWindow() that returns the toplevel widget or NULL. Or maybe split into two methods for the cases where you already have the toplevel widget.

bool gtkWidgetIsToplevelWindow(GtkWidget* widget)
{
    return gtk_widget_is_top_level(widget) &amp;&amp; GTK_IS_WINDOW(widget) &amp;&amp; !GTK_IS_OFFSCREEN_WINDOW(widget);
}

GtkWidget* gtkWidgetGetToplevelWindow(GtkWidget* widget)
{
    GtkWidget* toplevel = gtk_widget_get_toplevel(widget);
    return gtkWidgetIsToplevelWindow(toplevel) ? toplevel : 0;
}

&gt; Source/WebKit/gtk/tests/testwebview.c:382
&gt; +static void test_webkit_web_view_offscreen_window()
&gt; +{
&gt; +    loop = g_main_loop_new(NULL, TRUE);
&gt; +
&gt; +    GtkWidget *window = gtk_offscreen_window_new();
&gt; +    GtkWidget *web_view = webkit_web_view_new();
&gt; +
&gt; +    gtk_container_add(GTK_CONTAINER(window), web_view);
&gt; +    gtk_widget_show_all(window);
&gt; +    g_signal_connect(web_view, &quot;notify::load-status&quot;, G_CALLBACK(idle_quit_loop_cb), NULL);
&gt; +    webkit_web_view_load_uri(WEBKIT_WEB_VIEW(web_view), base_uri);
&gt; +
&gt; +    g_main_loop_run(loop);
&gt; +
&gt; +    gtk_widget_destroy(window);
&gt; +    g_main_loop_unref(loop);

You should comment here that you are testing that using a WebView inside a GtkOffscreenWindow doesn&apos;t crash, because it&apos;s not obvious what the test is for.

&gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:903
&gt; -    if (gtk_widget_is_toplevel(toplevel) &amp;&amp; gtk_window_has_toplevel_focus(GTK_WINDOW(toplevel))) {
&gt; +    if (gtkWidgetIsValidToplevel(toplevel)) {

You have removed the has_toplevel_focus check, isn&apos;t it necessary anymore?

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitUIClient.cpp:115
&gt; -    if (gtk_widget_is_toplevel(window) &amp;&amp; gtk_widget_get_visible(window)) {
&gt; +    if (gtkWidgetIsValidToplevel(window)) {

I&apos;d say the get_visible() check is still needed here.

&gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:227
&gt; -    if (gtk_widget_is_toplevel(toplevel) &amp;&amp; gtk_window_has_toplevel_focus(GTK_WINDOW(toplevel))) {
&gt; +    if (gtkWidgetIsValidToplevel(toplevel)) {

Here you removed the has_toplevel_focus check too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546848</commentid>
    <comment_count>16</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-02-01 00:01:47 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 124788 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=124788&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/gtk/GtkUtilities.cpp:48
&gt; &gt; +bool gtkWidgetIsValidToplevel(GtkWidget* widget)
&gt; &gt; +{
&gt; &gt; +    return gtk_widget_is_top_level(widget) &amp;&amp; GTK_IS_WINDOW(widget) &amp;&amp; !GTK_IS_OFFSCREEN_WINDOW(widget);
&gt; &gt; +}
&gt; 
&gt; I would call it gtkWidgetIsToplevelWindow, because it can be a valid toplevel, but not a GtkWindow. Also, this is always called after gtk_widget_get_top_level, why not something like gtkWidgetGetToplevelWindow() that returns the toplevel widget or NULL. Or maybe split into two methods for the cases where you already have the toplevel widget.

I changed this to widgetIsOnscreenToplevelWindow.

&gt; bool gtkWidgetIsToplevelWindow(GtkWidget* widget)
&gt; {
&gt;     return gtk_widget_is_top_level(widget) &amp;&amp; GTK_IS_WINDOW(widget) &amp;&amp; !GTK_IS_OFFSCREEN_WINDOW(widget);
&gt; }
&gt; 
&gt; GtkWidget* gtkWidgetGetToplevelWindow(GtkWidget* widget)
&gt; {
&gt;     GtkWidget* toplevel = gtk_widget_get_toplevel(widget);
&gt;     return gtkWidgetIsToplevelWindow(toplevel) ? toplevel : 0;
&gt; }

Skipped this for now.

&gt; &gt; Source/WebKit/gtk/tests/testwebview.c:382
&gt; &gt; +static void test_webkit_web_view_offscreen_window()
&gt; &gt; +{
&gt; &gt; +    loop = g_main_loop_new(NULL, TRUE);
&gt; &gt; +
&gt; &gt; +    GtkWidget *window = gtk_offscreen_window_new();
&gt; &gt; +    GtkWidget *web_view = webkit_web_view_new();
&gt; &gt; +
&gt; &gt; +    gtk_container_add(GTK_CONTAINER(window), web_view);
&gt; &gt; +    gtk_widget_show_all(window);
&gt; &gt; +    g_signal_connect(web_view, &quot;notify::load-status&quot;, G_CALLBACK(idle_quit_loop_cb), NULL);
&gt; &gt; +    webkit_web_view_load_uri(WEBKIT_WEB_VIEW(web_view), base_uri);
&gt; &gt; +
&gt; &gt; +    g_main_loop_run(loop);
&gt; &gt; +
&gt; &gt; +    gtk_widget_destroy(window);
&gt; &gt; +    g_main_loop_unref(loop);
&gt; 
&gt; You should comment here that you are testing that using a WebView inside a GtkOffscreenWindow doesn&apos;t crash, because it&apos;s not obvious what the test is for.

Instead of a comment we should rename the test. I did that.

&gt; &gt; Source/WebKit/gtk/webkit/webkitwebview.cpp:903
&gt; &gt; -    if (gtk_widget_is_toplevel(toplevel) &amp;&amp; gtk_window_has_toplevel_focus(GTK_WINDOW(toplevel))) {
&gt; &gt; +    if (gtkWidgetIsValidToplevel(toplevel)) {
&gt; 
&gt; You have removed the has_toplevel_focus check, isn&apos;t it necessary anymore?
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitUIClient.cpp:115
&gt; &gt; -    if (gtk_widget_is_toplevel(window) &amp;&amp; gtk_widget_get_visible(window)) {
&gt; &gt; +    if (gtkWidgetIsValidToplevel(window)) {
&gt; 
&gt; I&apos;d say the get_visible() check is still needed here.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/gtk/WebKitWebViewBase.cpp:227
&gt; &gt; -    if (gtk_widget_is_toplevel(toplevel) &amp;&amp; gtk_window_has_toplevel_focus(GTK_WINDOW(toplevel))) {
&gt; &gt; +    if (gtkWidgetIsValidToplevel(toplevel)) {
&gt; 
&gt; Here you removed the has_toplevel_focus check too.

Indeed. A series of dumb mistakes. Thanks for pointing them out. I&apos;ve fixed them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546851</commentid>
    <comment_count>17</comment_count>
      <attachid>124894</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-02-01 00:08:20 -0800</bug_when>
    <thetext>Created attachment 124894
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>546854</commentid>
    <comment_count>18</comment_count>
      <attachid>124894</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-02-01 00:20:18 -0800</bug_when>
    <thetext>Comment on attachment 124894
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=124894&amp;action=review

&gt; Source/WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp:784
&gt; +    GtkWidget* toplevel = gtk_widget_get_toplevel(GTK_WIDGET(m_webView));
&gt; +    if (!widgetIsOnscreenToplevelWindow(toplevel))
&gt; +        toplevel = 0;
&gt; +
&gt;      GtkWidget* dialog = gtk_file_chooser_dialog_new(_(&quot;Upload File&quot;),
&gt; -                                                    GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(m_webView))),
&gt; +                                                    GTK_WINDOW(toplevel),

toplevel might be null here, you should use something like:

toplevel ? GTK_WINDOW(toplevel) : 0

&gt; Source/WebKit/gtk/tests/testwebview.c:367
&gt; +static void test_webkit_web_view_in_offscreen_window_does_not_crash()

Much better than a comment :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547298</commentid>
    <comment_count>19</comment_count>
      <attachid>124994</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-02-01 12:45:34 -0800</bug_when>
    <thetext>Created attachment 124994
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547692</commentid>
    <comment_count>20</comment_count>
      <attachid>124994</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2012-02-01 23:49:40 -0800</bug_when>
    <thetext>Comment on attachment 124994
Patch

LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547756</commentid>
    <comment_count>21</comment_count>
      <attachid>124994</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-02 02:42:06 -0800</bug_when>
    <thetext>Comment on attachment 124994
Patch

Neat!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547881</commentid>
    <comment_count>22</comment_count>
      <attachid>124994</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-02 08:28:28 -0800</bug_when>
    <thetext>Comment on attachment 124994
Patch

Clearing flags on attachment: 124994

Committed r106559: &lt;http://trac.webkit.org/changeset/106559&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>547882</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-02 08:28:34 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820243</commentid>
    <comment_count>24</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2013-01-30 08:57:29 -0800</bug_when>
    <thetext>*** Bug 62090 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>123728</attachid>
            <date>2012-01-24 06:52:41 -0800</date>
            <delta_ts>2012-01-24 06:52:41 -0800</delta_ts>
            <desc>simple test program</desc>
            <filename>test.c</filename>
            <type>text/x-csrc</type>
            <size>385</size>
            <attacher name="Claudio Saavedra">csaavedra</attacher>
            
              <data encoding="base64">I2luY2x1ZGUgPGd0ay9ndGsuaD4KI2luY2x1ZGUgPHdlYmtpdC93ZWJraXQuaD4KCmludAptYWlu
ICgpCnsKCUd0a1dpZGdldCAqd2luZG93LCogd2VidmlldzsKCglndGtfaW5pdCAoTlVMTCwgTlVM
TCk7CgoJd2luZG93ID0gZ3RrX29mZnNjcmVlbl93aW5kb3dfbmV3ICgpOwoJd2VidmlldyA9IHdl
YmtpdF93ZWJfdmlld19uZXcgKCk7CgoJd2Via2l0X3dlYl92aWV3X2xvYWRfdXJpIChXRUJLSVRf
V0VCX1ZJRVcgKHdlYnZpZXcpLAoJCQkJICAiaHR0cDovL3lvdXR1YmUuY29tIik7CglndGtfY29u
dGFpbmVyX2FkZCAoR1RLX0NPTlRBSU5FUiAod2luZG93KSwKCQkJICAgd2Vidmlldyk7CgoJZ3Rr
X3dpZGdldF9zaG93X2FsbCAod2luZG93KTsKCglndGtfbWFpbigpOwp9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123730</attachid>
            <date>2012-01-24 07:16:06 -0800</date>
            <delta_ts>2012-01-30 13:37:10 -0800</delta_ts>
            <desc>[GTK] WebKitWebView won&apos;t work in a GtkOffscreenWindow</desc>
            <filename>GTK-WebKitWebView-wont-work-in-a-GtkOffscreenWindo.patch</filename>
            <type>text/plain</type>
            <size>4667</size>
            <attacher name="Claudio Saavedra">csaavedra</attacher>
            
              <data encoding="base64">RnJvbSBhZWZkODA2ZTUyOTViMjM4MDhmZDkyMmJkYjY5ODZmY2NlNWUxNzgwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDbGF1ZGlvIFNhYXZlZHJhIDxjc2FhdmVkcmFAaWdhbGlhLmNv
bT4KRGF0ZTogVHVlLCAyNCBKYW4gMjAxMiAxNzowMjo1NyArMDIwMApTdWJqZWN0OiBbUEFUQ0hd
IFtHVEtdIFdlYktpdFdlYlZpZXcgd29uJ3Qgd29yayBpbiBhIEd0a09mZnNjcmVlbldpbmRvdwoK
ICAgICAgICBbR1RLXSBXZWJLaXRXZWJWaWV3IHdvbid0IHdvcmsgaW4gYSBHdGtPZmZzY3JlZW5X
aW5kb3cKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY5
MTEKCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcDoKICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGll
bnQ6OndpbmRvd1JlY3QpOgogICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6c2V0V2luZG93
UmVjdCk6CiAgICAgICAgRG8gbm90IGNhbGwgR3RrV2luZG93IEFQSSBpbiBHdGtPZmZzY3JlZW5X
aW5kb3cKICAgICAgICAqIHRlc3RzL3Rlc3R3ZWJ2aWV3LmM6IEFkZCBhIHNpbXBsZSB0ZXN0IGZv
ciBvZmZzY3JlZW4gd2luZG93cy4KLS0tCiBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgMTMgKysrKysrKysrKysrCiAuLi4vV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwICB8ICAgIDUgKystCiBTb3VyY2UvV2Vi
S2l0L2d0ay90ZXN0cy90ZXN0d2Vidmlldy5jICAgICAgICAgICAgICB8ICAgMjEgKysrKysrKysr
KysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdlZCwgMzcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlv
bnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggZDQ0OTQ2NC4uNjgxZDFmNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTAxLTI0ICBDbGF1ZGlvIFNhYXZlZHJhICA8Y3Nh
YXZlZHJhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gV2ViS2l0V2ViVmlldyB3b24ndCB3
b3JrIGluIGEgR3RrT2Zmc2NyZWVuV2luZG93CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD03NjkxMQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50Ojp3aW5kb3dSZWN0KToKKyAgICAgICAgKFdl
YktpdDo6Q2hyb21lQ2xpZW50OjpzZXRXaW5kb3dSZWN0KToKKyAgICAgICAgRG8gbm90IGNhbGwg
R3RrV2luZG93IEFQSSBpbiBHdGtPZmZzY3JlZW5XaW5kb3cKKyAgICAgICAgKiB0ZXN0cy90ZXN0
d2Vidmlldy5jOiBBZGQgYSBzaW1wbGUgdGVzdCBmb3Igb2Zmc2NyZWVuIHdpbmRvd3MuCisKIDIw
MTItMDEtMjMgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtHVEtdIFJlZmFjdG9yIEdUSydzIGFjY2Vzc2liaWxpdGl0eSBjb2RlIHRvIGJlIG1v
cmUgbW9kdWxhcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
Q2hyb21lQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEd0ay5jcHAKaW5kZXggYjQ1NGFmNC4uM2E4OGY2YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCkBAIC01
LDYgKzUsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA4IEFscCBUb2tlciA8YWxwQGF0b2tlci5j
b20+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggR3VzdGF2byBOb3JvbmhhIFNpbHZhIDxnbnNAZ25v
bWUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBp
dHMgc3Vic2lkaWFyeSgtaWVzKS4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBJZ2FsaWEgUy4gTC4K
ICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli
dXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTk5LDcgKzEwMCw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50
OjpjaHJvbWVEZXN0cm95ZWQoKQogRmxvYXRSZWN0IENocm9tZUNsaWVudDo6d2luZG93UmVjdCgp
CiB7CiAgICAgR3RrV2lkZ2V0KiB3aW5kb3cgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtf
V0lER0VUKG1fd2ViVmlldykpOwotICAgIGlmIChndGtfd2lkZ2V0X2lzX3RvcGxldmVsKHdpbmRv
dykpIHsKKyAgICBpZiAoZ3RrX3dpZGdldF9pc190b3BsZXZlbCh3aW5kb3cpICYmICFHVEtfSVNf
T0ZGU0NSRUVOX1dJTkRPVyh3aW5kb3cpKSB7CiAgICAgICAgIGdpbnQgbGVmdCwgdG9wLCB3aWR0
aCwgaGVpZ2h0OwogICAgICAgICBndGtfd2luZG93X2dldF9wb3NpdGlvbihHVEtfV0lORE9XKHdp
bmRvdyksICZsZWZ0LCAmdG9wKTsKICAgICAgICAgZ3RrX3dpbmRvd19nZXRfc2l6ZShHVEtfV0lO
RE9XKHdpbmRvdyksICZ3aWR0aCwgJmhlaWdodCk7CkBAIC0xMjgsNyArMTI5LDcgQEAgdm9pZCBD
aHJvbWVDbGllbnQ6OnNldFdpbmRvd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQogICAgICAg
ICByZXR1cm47CiAKICAgICBHdGtXaWRnZXQqIHdpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3RvcGxl
dmVsKEdUS19XSURHRVQobV93ZWJWaWV3KSk7Ci0gICAgaWYgKGd0a193aWRnZXRfaXNfdG9wbGV2
ZWwod2luZG93KSkgeworICAgIGlmIChndGtfd2lkZ2V0X2lzX3RvcGxldmVsKHdpbmRvdykgJiYg
IUdUS19JU19PRkZTQ1JFRU5fV0lORE9XKHdpbmRvdykpIHsKICAgICAgICAgZ3RrX3dpbmRvd19t
b3ZlKEdUS19XSU5ET1cod2luZG93KSwgaW50cmVjdC54KCksIGludHJlY3QueSgpKTsKICAgICAg
ICAgZ3RrX3dpbmRvd19yZXNpemUoR1RLX1dJTkRPVyh3aW5kb3cpLCBpbnRyZWN0LndpZHRoKCks
IGludHJlY3QuaGVpZ2h0KCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L3Rlc3RzL3Rlc3R3ZWJ2aWV3LmMgYi9Tb3VyY2UvV2ViS2l0L2d0ay90ZXN0cy90ZXN0d2Vidmll
dy5jCmluZGV4IDMzNWZmZGQuLmZiOTNhYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L3Rlc3RzL3Rlc3R3ZWJ2aWV3LmMKKysrIGIvU291cmNlL1dlYktpdC9ndGsvdGVzdHMvdGVzdHdl
YnZpZXcuYwpAQCAtMzYzLDYgKzM2MywyNiBAQCBzdGF0aWMgdm9pZCB0ZXN0X3dlYmtpdF93ZWJf
dmlld193aW5kb3dfZmVhdHVyZXMoKQogICAgIGd0a193aWRnZXRfZGVzdHJveSh3aW5kb3cpOwog
fSAgICAKIAorc3RhdGljIHZvaWQgdGVzdF93ZWJraXRfd2ViX3ZpZXdfb2Zmc2NyZWVuX3dpbmRv
dygpCit7CisgICAgR3RrV2lkZ2V0ICp3aW5kb3c7CisgICAgR3RrV2lkZ2V0KiB3ZWJfdmlldzsK
KworICAgIGxvb3AgPSBnX21haW5fbG9vcF9uZXcoTlVMTCwgVFJVRSk7CisKKyAgICB3aW5kb3cg
PSBndGtfb2Zmc2NyZWVuX3dpbmRvd19uZXcoKTsKKyAgICB3ZWJfdmlldyA9IHdlYmtpdF93ZWJf
dmlld19uZXcoKTsKKworICAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIod2luZG93
KSwgd2ViX3ZpZXcpOworICAgIGd0a193aWRnZXRfc2hvd19hbGwod2luZG93KTsKKyAgICBnX3Np
Z25hbF9jb25uZWN0KHdlYl92aWV3LCAibm90aWZ5Ojpsb2FkLXN0YXR1cyIsIEdfQ0FMTEJBQ0so
aWRsZV9xdWl0X2xvb3BfY2IpLCBOVUxMKTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF91cmko
V0VCS0lUX1dFQl9WSUVXKHdlYl92aWV3KSwgYmFzZV91cmkpOworCisgICAgZ19tYWluX2xvb3Bf
cnVuKGxvb3ApOworCisgICAgZ3RrX3dpZGdldF9kZXN0cm95KHdpbmRvdyk7Cit9CisKIGludCBt
YWluKGludCBhcmdjLCBjaGFyKiogYXJndikKIHsKICAgICBTb3VwU2VydmVyKiBzZXJ2ZXI7CkBA
IC0zOTAsNiArNDEwLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgIGdf
dGVzdF9hZGRfZnVuYygiL3dlYmtpdC93ZWJ2aWV3L2Rlc3Ryb3kiLCB0ZXN0X3dlYmtpdF93ZWJf
dmlld19kZXN0cm95KTsKICAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvd2Vidmlldy9ncmFi
X2ZvY3VzIiwgdGVzdF93ZWJraXRfd2ViX3ZpZXdfZ3JhYl9mb2N1cyk7CiAgICAgZ190ZXN0X2Fk
ZF9mdW5jKCIvd2Via2l0L3dlYnZpZXcvd2luZG93LWZlYXR1cmVzIiwgdGVzdF93ZWJraXRfd2Vi
X3ZpZXdfd2luZG93X2ZlYXR1cmVzKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvd2Vi
dmlldy9vZmZzY3JlZW4td2luZG93IiwgdGVzdF93ZWJraXRfd2ViX3ZpZXdfb2Zmc2NyZWVuX3dp
bmRvdyk7CiAKICAgICByZXR1cm4gZ190ZXN0X3J1biAoKTsKIH0KLS0gCjEuNy43LjU=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124589</attachid>
            <date>2012-01-30 13:35:13 -0800</date>
            <delta_ts>2012-01-30 13:44:15 -0800</delta_ts>
            <desc>[GTK] WebKitWebView won&apos;t work in a GtkOffscreenWindow</desc>
            <filename>GTK-WebKitWebView-wont-work-in-a-GtkOffscreenWindo.patch</filename>
            <type>text/plain</type>
            <size>6836</size>
            <attacher name="Claudio Saavedra">csaavedra</attacher>
            
              <data encoding="base64">RnJvbSA4MWNlZDcyMTNlNDU1NDEzNWZhNzU5OGY2MmM0YjgwNmY1NGZiZDZmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDbGF1ZGlvIFNhYXZlZHJhIDxjc2FhdmVkcmFAaWdhbGlhLmNv
bT4KRGF0ZTogVHVlLCAyNCBKYW4gMjAxMiAxNzowMjo1NyArMDIwMApTdWJqZWN0OiBbUEFUQ0hd
IFtHVEtdIFdlYktpdFdlYlZpZXcgd29uJ3Qgd29yayBpbiBhIEd0a09mZnNjcmVlbldpbmRvdwoK
ICAgICAgICBbR1RLXSBXZWJLaXRXZWJWaWV3IHdvbid0IHdvcmsgaW4gYSBHdGtPZmZzY3JlZW5X
aW5kb3cKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY5
MTEKCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcDoKICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGll
bnQ6OndpbmRvd1JlY3QpOgogICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6c2V0V2luZG93
UmVjdCk6CiAgICAgICAgRG8gbm90IGNhbGwgR3RrV2luZG93IEFQSSBpbiBHdGtPZmZzY3JlZW5X
aW5kb3cKICAgICAgICAqIHRlc3RzL3Rlc3R3ZWJ2aWV3LmM6IEFkZCBhIHNpbXBsZSB0ZXN0IGZv
ciBvZmZzY3JlZW4gd2luZG93cy4KLS0tCiBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgMTMgKysrKysrKysrKysrKwogLi4uL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcCAgfCAgICA1ICsrKy0tCiBTb3VyY2Uv
V2ViS2l0L2d0ay90ZXN0cy90ZXN0d2Vidmlldy5jICAgICAgICAgICAgICB8ICAgMTkgKysrKysr
KysrKysrKysrKysrKwogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgIDExICsrKysrKysrKysrCiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRVSUNsaWVudC5jcHAgICB8ICAgIDQgKystLQogNSBmaWxlcyBjaGFuZ2VkLCA0OCBp
bnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCBkNDQ5NDY0
Li42ODFkMWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDEtMjQg
IENsYXVkaW8gU2FhdmVkcmEgIDxjc2FhdmVkcmFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RL
XSBXZWJLaXRXZWJWaWV3IHdvbid0IHdvcmsgaW4gYSBHdGtPZmZzY3JlZW5XaW5kb3cKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2OTExCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6Ondp
bmRvd1JlY3QpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnNldFdpbmRvd1JlY3Qp
OgorICAgICAgICBEbyBub3QgY2FsbCBHdGtXaW5kb3cgQVBJIGluIEd0a09mZnNjcmVlbldpbmRv
dworICAgICAgICAqIHRlc3RzL3Rlc3R3ZWJ2aWV3LmM6IEFkZCBhIHNpbXBsZSB0ZXN0IGZvciBv
ZmZzY3JlZW4gd2luZG93cy4KKwogMjAxMi0wMS0yMyAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1z
YW5jaGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gUmVmYWN0b3IgR1RLJ3MgYWNjZXNz
aWJpbGl0aXR5IGNvZGUgdG8gYmUgbW9yZSBtb2R1bGFyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAppbmRleCBiNDU0YWY0Li4z
YTg4ZjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEd0ay5jcHAKQEAgLTUsNiArNSw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgg
QWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAwOCBHdXN0YXZv
IE5vcm9uaGEgU2lsdmEgPGduc0Bnbm9tZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9r
aWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICogQ29weXJpZ2h0
IChDKSAyMDEyIElnYWxpYSBTLiBMLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtOTksNyArMTAw
LDcgQEAgdm9pZCBDaHJvbWVDbGllbnQ6OmNocm9tZURlc3Ryb3llZCgpCiBGbG9hdFJlY3QgQ2hy
b21lQ2xpZW50Ojp3aW5kb3dSZWN0KCkKIHsKICAgICBHdGtXaWRnZXQqIHdpbmRvdyA9IGd0a193
aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQobV93ZWJWaWV3KSk7Ci0gICAgaWYgKGd0a193
aWRnZXRfaXNfdG9wbGV2ZWwod2luZG93KSkgeworICAgIGlmIChndGtfd2lkZ2V0X2lzX3RvcGxl
dmVsKHdpbmRvdykgJiYgIUdUS19JU19PRkZTQ1JFRU5fV0lORE9XKHdpbmRvdykpIHsKICAgICAg
ICAgZ2ludCBsZWZ0LCB0b3AsIHdpZHRoLCBoZWlnaHQ7CiAgICAgICAgIGd0a193aW5kb3dfZ2V0
X3Bvc2l0aW9uKEdUS19XSU5ET1cod2luZG93KSwgJmxlZnQsICZ0b3ApOwogICAgICAgICBndGtf
d2luZG93X2dldF9zaXplKEdUS19XSU5ET1cod2luZG93KSwgJndpZHRoLCAmaGVpZ2h0KTsKQEAg
LTEyOCw3ICsxMjksNyBAQCB2b2lkIENocm9tZUNsaWVudDo6c2V0V2luZG93UmVjdChjb25zdCBG
bG9hdFJlY3QmIHJlY3QpCiAgICAgICAgIHJldHVybjsKIAogICAgIEd0a1dpZGdldCogd2luZG93
ID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVChtX3dlYlZpZXcpKTsKLSAgICBp
ZiAoZ3RrX3dpZGdldF9pc190b3BsZXZlbCh3aW5kb3cpKSB7CisgICAgaWYgKGd0a193aWRnZXRf
aXNfdG9wbGV2ZWwod2luZG93KSAmJiAhR1RLX0lTX09GRlNDUkVFTl9XSU5ET1cod2luZG93KSkg
ewogICAgICAgICBndGtfd2luZG93X21vdmUoR1RLX1dJTkRPVyh3aW5kb3cpLCBpbnRyZWN0Lngo
KSwgaW50cmVjdC55KCkpOwogICAgICAgICBndGtfd2luZG93X3Jlc2l6ZShHVEtfV0lORE9XKHdp
bmRvdyksIGludHJlY3Qud2lkdGgoKSwgaW50cmVjdC5oZWlnaHQoKSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ndGsvdGVzdHMvdGVzdHdlYnZpZXcuYyBiL1NvdXJjZS9XZWJL
aXQvZ3RrL3Rlc3RzL3Rlc3R3ZWJ2aWV3LmMKaW5kZXggMzM1ZmZkZC4uYmZiYWQyNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9ndGsvdGVzdHMvdGVzdHdlYnZpZXcuYworKysgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay90ZXN0cy90ZXN0d2Vidmlldy5jCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAwOCBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgogICogQ29weXJpZ2h0
IChDKSAyMDA5LCAyMDEwIENvbGxhYm9yYSBMdGQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdh
bGlhIFMuTC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzYzLDYgKzM2NCwyMyBAQCBzdGF0aWMg
dm9pZCB0ZXN0X3dlYmtpdF93ZWJfdmlld193aW5kb3dfZmVhdHVyZXMoKQogICAgIGd0a193aWRn
ZXRfZGVzdHJveSh3aW5kb3cpOwogfSAgICAKIAorc3RhdGljIHZvaWQgdGVzdF93ZWJraXRfd2Vi
X3ZpZXdfb2Zmc2NyZWVuX3dpbmRvdygpCit7CisgICAgbG9vcCA9IGdfbWFpbl9sb29wX25ldyhO
VUxMLCBUUlVFKTsKKworICAgIEd0a1dpZGdldCAqd2luZG93ID0gZ3RrX29mZnNjcmVlbl93aW5k
b3dfbmV3KCk7CisgICAgR3RrV2lkZ2V0ICp3ZWJfdmlldyA9IHdlYmtpdF93ZWJfdmlld19uZXco
KTsKKworICAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIod2luZG93KSwgd2ViX3Zp
ZXcpOworICAgIGd0a193aWRnZXRfc2hvd19hbGwod2luZG93KTsKKyAgICBnX3NpZ25hbF9jb25u
ZWN0KHdlYl92aWV3LCAibm90aWZ5Ojpsb2FkLXN0YXR1cyIsIEdfQ0FMTEJBQ0soaWRsZV9xdWl0
X2xvb3BfY2IpLCBOVUxMKTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF91cmkoV0VCS0lUX1dF
Ql9WSUVXKHdlYl92aWV3KSwgYmFzZV91cmkpOworCisgICAgZ19tYWluX2xvb3BfcnVuKGxvb3Ap
OworCisgICAgZ3RrX3dpZGdldF9kZXN0cm95KHdpbmRvdyk7Cit9CisKIGludCBtYWluKGludCBh
cmdjLCBjaGFyKiogYXJndikKIHsKICAgICBTb3VwU2VydmVyKiBzZXJ2ZXI7CkBAIC0zOTAsNiAr
NDA4LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgIGdfdGVzdF9hZGRf
ZnVuYygiL3dlYmtpdC93ZWJ2aWV3L2Rlc3Ryb3kiLCB0ZXN0X3dlYmtpdF93ZWJfdmlld19kZXN0
cm95KTsKICAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvd2Vidmlldy9ncmFiX2ZvY3VzIiwg
dGVzdF93ZWJraXRfd2ViX3ZpZXdfZ3JhYl9mb2N1cyk7CiAgICAgZ190ZXN0X2FkZF9mdW5jKCIv
d2Via2l0L3dlYnZpZXcvd2luZG93LWZlYXR1cmVzIiwgdGVzdF93ZWJraXRfd2ViX3ZpZXdfd2lu
ZG93X2ZlYXR1cmVzKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvd2Vidmlldy9vZmZz
Y3JlZW4td2luZG93IiwgdGVzdF93ZWJraXRfd2ViX3ZpZXdfb2Zmc2NyZWVuX3dpbmRvdyk7CiAK
ICAgICByZXR1cm4gZ190ZXN0X3J1biAoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyYjM3NDM5Li5iNmNi
NWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDEtMzAgIENsYXVkaW8gU2Fh
dmVkcmEgIDxjc2FhdmVkcmFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBXZWJLaXRXZWJW
aWV3IHdvbid0IHdvcmsgaW4gYSBHdGtPZmZzY3JlZW5XaW5kb3cKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2OTExCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRV
SUNsaWVudC5jcHA6CisgICAgICAgIChnZXRXaW5kb3dGcmFtZSk6IERvbid0IGNhbGwgR3RrV2lu
ZG93IEFQSSBvbiBhCisgICAgICAgIEd0a09mZnNjcmVlbldpbmRvdy4KKwogMjAxMi0wMS0yNiAg
Tm8nYW0gUm9zZW50aGFsICA8bm9hbS5yb3NlbnRoYWxAbm9raWEuY29tPiBhbmQgSm9jZWx5biBU
dXJjb3R0ZSAgPGpvY2VseW4udHVyY290dGVAbm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gV0tU
UjogVXNlIGEgc29mdHdhcmUgcmVuZGVyaW5nIHBpcGlsaW5lIHdoZW4gcnVubmluZyB0ZXN0cy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50
LmNwcAppbmRleCAwNTZlOGJhLi40MmQ3NWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDEx
LTIwMTIgSWdhbGlhIFMuTC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTExLDcgKzExMSw3IEBA
IHN0YXRpYyBXS1JlY3QgZ2V0V2luZG93RnJhbWUoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pCiB7CiAgICAgR2RrUmVjdGFuZ2xlIGdlb21ldHJ5ID0geyAwLCAwLCAwLCAw
IH07CiAgICAgR3RrV2lkZ2V0KiB3aW5kb3cgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtf
V0lER0VUKGNsaWVudEluZm8pKTsKLSAgICBpZiAoZ3RrX3dpZGdldF9pc190b3BsZXZlbCh3aW5k
b3cpICYmIGd0a193aWRnZXRfZ2V0X3Zpc2libGUod2luZG93KSkgeworICAgIGlmIChndGtfd2lk
Z2V0X2lzX3RvcGxldmVsKHdpbmRvdykgJiYgZ3RrX3dpZGdldF9nZXRfdmlzaWJsZSh3aW5kb3cp
ICYmICFHVEtfSVNfT0ZGU0NSRUVOX1dJTkRPVyAod2luZG93KSkgewogICAgICAgICBndGtfd2lu
ZG93X2dldF9wb3NpdGlvbihHVEtfV0lORE9XKHdpbmRvdyksICZnZW9tZXRyeS54LCAmZ2VvbWV0
cnkueSk7CiAgICAgICAgIGd0a193aW5kb3dfZ2V0X3NpemUoR1RLX1dJTkRPVyh3aW5kb3cpLCAm
Z2VvbWV0cnkud2lkdGgsICZnZW9tZXRyeS5oZWlnaHQpOwogICAgIH0KLS0gCjEuNy43LjY=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124593</attachid>
            <date>2012-01-30 13:55:17 -0800</date>
            <delta_ts>2012-01-31 11:48:41 -0800</delta_ts>
            <desc>[GTK] WebKitWebView won&apos;t work in a GtkOffscreenWindow</desc>
            <filename>GTK-WebKitWebView-wont-work-in-a-GtkOffscreenWindo.patch</filename>
            <type>text/plain</type>
            <size>6835</size>
            <attacher name="Claudio Saavedra">csaavedra</attacher>
            
              <data encoding="base64">RnJvbSBkMzM3MzljZTQ1MmFkOGZmZDk5MGVjYTdiMjg1NWUzYjExOWI4NjQzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBDbGF1ZGlvIFNhYXZlZHJhIDxjc2FhdmVkcmFAaWdhbGlhLmNv
bT4KRGF0ZTogVHVlLCAyNCBKYW4gMjAxMiAxNzowMjo1NyArMDIwMApTdWJqZWN0OiBbUEFUQ0hd
IFtHVEtdIFdlYktpdFdlYlZpZXcgd29uJ3Qgd29yayBpbiBhIEd0a09mZnNjcmVlbldpbmRvdwoK
ICAgICAgICBbR1RLXSBXZWJLaXRXZWJWaWV3IHdvbid0IHdvcmsgaW4gYSBHdGtPZmZzY3JlZW5X
aW5kb3cKICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY5
MTEKCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgogICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcDoKICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGll
bnQ6OndpbmRvd1JlY3QpOgogICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6c2V0V2luZG93
UmVjdCk6CiAgICAgICAgRG8gbm90IGNhbGwgR3RrV2luZG93IEFQSSBpbiBHdGtPZmZzY3JlZW5X
aW5kb3cKICAgICAgICAqIHRlc3RzL3Rlc3R3ZWJ2aWV3LmM6IEFkZCBhIHNpbXBsZSB0ZXN0IGZv
ciBvZmZzY3JlZW4gd2luZG93cy4KLS0tCiBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgMTMgKysrKysrKysrKysrKwogLi4uL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcCAgfCAgICA1ICsrKy0tCiBTb3VyY2Uv
V2ViS2l0L2d0ay90ZXN0cy90ZXN0d2Vidmlldy5jICAgICAgICAgICAgICB8ICAgMTkgKysrKysr
KysrKysrKysrKysrKwogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgIDExICsrKysrKysrKysrCiAuLi4vV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRVSUNsaWVudC5jcHAgICB8ICAgIDQgKystLQogNSBmaWxlcyBjaGFuZ2VkLCA0OCBp
bnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRleCBkNDQ5NDY0
Li42ODFkMWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDEtMjQg
IENsYXVkaW8gU2FhdmVkcmEgIDxjc2FhdmVkcmFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RL
XSBXZWJLaXRXZWJWaWV3IHdvbid0IHdvcmsgaW4gYSBHdGtPZmZzY3JlZW5XaW5kb3cKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2OTExCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9DaHJvbWVDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6Ondp
bmRvd1JlY3QpOgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnNldFdpbmRvd1JlY3Qp
OgorICAgICAgICBEbyBub3QgY2FsbCBHdGtXaW5kb3cgQVBJIGluIEd0a09mZnNjcmVlbldpbmRv
dworICAgICAgICAqIHRlc3RzL3Rlc3R3ZWJ2aWV3LmM6IEFkZCBhIHNpbXBsZSB0ZXN0IGZvciBv
ZmZzY3JlZW4gd2luZG93cy4KKwogMjAxMi0wMS0yMyAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1z
YW5jaGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS10gUmVmYWN0b3IgR1RLJ3MgYWNjZXNz
aWJpbGl0aXR5IGNvZGUgdG8gYmUgbW9yZSBtb2R1bGFyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwIGIvU291cmNlL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcAppbmRleCBiNDU0YWY0Li4z
YTg4ZjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0No
cm9tZUNsaWVudEd0ay5jcHAKQEAgLTUsNiArNSw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgg
QWxwIFRva2VyIDxhbHBAYXRva2VyLmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAwOCBHdXN0YXZv
IE5vcm9uaGEgU2lsdmEgPGduc0Bnbm9tZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgTm9r
aWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpLgorICogQ29weXJpZ2h0
IChDKSAyMDEyIElnYWxpYSBTLiBMLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtOTksNyArMTAw
LDcgQEAgdm9pZCBDaHJvbWVDbGllbnQ6OmNocm9tZURlc3Ryb3llZCgpCiBGbG9hdFJlY3QgQ2hy
b21lQ2xpZW50Ojp3aW5kb3dSZWN0KCkKIHsKICAgICBHdGtXaWRnZXQqIHdpbmRvdyA9IGd0a193
aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQobV93ZWJWaWV3KSk7Ci0gICAgaWYgKGd0a193
aWRnZXRfaXNfdG9wbGV2ZWwod2luZG93KSkgeworICAgIGlmIChndGtfd2lkZ2V0X2lzX3RvcGxl
dmVsKHdpbmRvdykgJiYgIUdUS19JU19PRkZTQ1JFRU5fV0lORE9XKHdpbmRvdykpIHsKICAgICAg
ICAgZ2ludCBsZWZ0LCB0b3AsIHdpZHRoLCBoZWlnaHQ7CiAgICAgICAgIGd0a193aW5kb3dfZ2V0
X3Bvc2l0aW9uKEdUS19XSU5ET1cod2luZG93KSwgJmxlZnQsICZ0b3ApOwogICAgICAgICBndGtf
d2luZG93X2dldF9zaXplKEdUS19XSU5ET1cod2luZG93KSwgJndpZHRoLCAmaGVpZ2h0KTsKQEAg
LTEyOCw3ICsxMjksNyBAQCB2b2lkIENocm9tZUNsaWVudDo6c2V0V2luZG93UmVjdChjb25zdCBG
bG9hdFJlY3QmIHJlY3QpCiAgICAgICAgIHJldHVybjsKIAogICAgIEd0a1dpZGdldCogd2luZG93
ID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVChtX3dlYlZpZXcpKTsKLSAgICBp
ZiAoZ3RrX3dpZGdldF9pc190b3BsZXZlbCh3aW5kb3cpKSB7CisgICAgaWYgKGd0a193aWRnZXRf
aXNfdG9wbGV2ZWwod2luZG93KSAmJiAhR1RLX0lTX09GRlNDUkVFTl9XSU5ET1cod2luZG93KSkg
ewogICAgICAgICBndGtfd2luZG93X21vdmUoR1RLX1dJTkRPVyh3aW5kb3cpLCBpbnRyZWN0Lngo
KSwgaW50cmVjdC55KCkpOwogICAgICAgICBndGtfd2luZG93X3Jlc2l6ZShHVEtfV0lORE9XKHdp
bmRvdyksIGludHJlY3Qud2lkdGgoKSwgaW50cmVjdC5oZWlnaHQoKSk7CiAgICAgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ndGsvdGVzdHMvdGVzdHdlYnZpZXcuYyBiL1NvdXJjZS9XZWJL
aXQvZ3RrL3Rlc3RzL3Rlc3R3ZWJ2aWV3LmMKaW5kZXggMzM1ZmZkZC4uYmZiYWQyNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9ndGsvdGVzdHMvdGVzdHdlYnZpZXcuYworKysgYi9Tb3VyY2Uv
V2ViS2l0L2d0ay90ZXN0cy90ZXN0d2Vidmlldy5jCkBAIC0xLDYgKzEsNyBAQAogLyoKICAqIENv
cHlyaWdodCAoQykgMjAwOCBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgogICogQ29weXJpZ2h0
IChDKSAyMDA5LCAyMDEwIENvbGxhYm9yYSBMdGQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdh
bGlhIFMuTC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzYzLDYgKzM2NCwyMyBAQCBzdGF0aWMg
dm9pZCB0ZXN0X3dlYmtpdF93ZWJfdmlld193aW5kb3dfZmVhdHVyZXMoKQogICAgIGd0a193aWRn
ZXRfZGVzdHJveSh3aW5kb3cpOwogfSAgICAKIAorc3RhdGljIHZvaWQgdGVzdF93ZWJraXRfd2Vi
X3ZpZXdfb2Zmc2NyZWVuX3dpbmRvdygpCit7CisgICAgbG9vcCA9IGdfbWFpbl9sb29wX25ldyhO
VUxMLCBUUlVFKTsKKworICAgIEd0a1dpZGdldCAqd2luZG93ID0gZ3RrX29mZnNjcmVlbl93aW5k
b3dfbmV3KCk7CisgICAgR3RrV2lkZ2V0ICp3ZWJfdmlldyA9IHdlYmtpdF93ZWJfdmlld19uZXco
KTsKKworICAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIod2luZG93KSwgd2ViX3Zp
ZXcpOworICAgIGd0a193aWRnZXRfc2hvd19hbGwod2luZG93KTsKKyAgICBnX3NpZ25hbF9jb25u
ZWN0KHdlYl92aWV3LCAibm90aWZ5Ojpsb2FkLXN0YXR1cyIsIEdfQ0FMTEJBQ0soaWRsZV9xdWl0
X2xvb3BfY2IpLCBOVUxMKTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF91cmkoV0VCS0lUX1dF
Ql9WSUVXKHdlYl92aWV3KSwgYmFzZV91cmkpOworCisgICAgZ19tYWluX2xvb3BfcnVuKGxvb3Ap
OworCisgICAgZ3RrX3dpZGdldF9kZXN0cm95KHdpbmRvdyk7Cit9CisKIGludCBtYWluKGludCBh
cmdjLCBjaGFyKiogYXJndikKIHsKICAgICBTb3VwU2VydmVyKiBzZXJ2ZXI7CkBAIC0zOTAsNiAr
NDA4LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgIGdfdGVzdF9hZGRf
ZnVuYygiL3dlYmtpdC93ZWJ2aWV3L2Rlc3Ryb3kiLCB0ZXN0X3dlYmtpdF93ZWJfdmlld19kZXN0
cm95KTsKICAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvd2Vidmlldy9ncmFiX2ZvY3VzIiwg
dGVzdF93ZWJraXRfd2ViX3ZpZXdfZ3JhYl9mb2N1cyk7CiAgICAgZ190ZXN0X2FkZF9mdW5jKCIv
d2Via2l0L3dlYnZpZXcvd2luZG93LWZlYXR1cmVzIiwgdGVzdF93ZWJraXRfd2ViX3ZpZXdfd2lu
ZG93X2ZlYXR1cmVzKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvd2Vidmlldy9vZmZz
Y3JlZW4td2luZG93IiwgdGVzdF93ZWJraXRfd2ViX3ZpZXdfb2Zmc2NyZWVuX3dpbmRvdyk7CiAK
ICAgICByZXR1cm4gZ190ZXN0X3J1biAoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAyYjM3NDM5Li5iNmNi
NWYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDEtMzAgIENsYXVkaW8gU2Fh
dmVkcmEgIDxjc2FhdmVkcmFAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBXZWJLaXRXZWJW
aWV3IHdvbid0IHdvcmsgaW4gYSBHdGtPZmZzY3JlZW5XaW5kb3cKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2OTExCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRV
SUNsaWVudC5jcHA6CisgICAgICAgIChnZXRXaW5kb3dGcmFtZSk6IERvbid0IGNhbGwgR3RrV2lu
ZG93IEFQSSBvbiBhCisgICAgICAgIEd0a09mZnNjcmVlbldpbmRvdy4KKwogMjAxMi0wMS0yNiAg
Tm8nYW0gUm9zZW50aGFsICA8bm9hbS5yb3NlbnRoYWxAbm9raWEuY29tPiBhbmQgSm9jZWx5biBU
dXJjb3R0ZSAgPGpvY2VseW4udHVyY290dGVAbm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gV0tU
UjogVXNlIGEgc29mdHdhcmUgcmVuZGVyaW5nIHBpcGlsaW5lIHdoZW4gcnVubmluZyB0ZXN0cy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50
LmNwcAppbmRleCAwNTZlOGJhLi5hOGFmNWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorICogQ29weXJpZ2h0IChDKSAyMDEx
LTIwMTIgSWdhbGlhIFMuTC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsg
eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTExLDcgKzExMSw3IEBA
IHN0YXRpYyBXS1JlY3QgZ2V0V2luZG93RnJhbWUoV0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pCiB7CiAgICAgR2RrUmVjdGFuZ2xlIGdlb21ldHJ5ID0geyAwLCAwLCAwLCAw
IH07CiAgICAgR3RrV2lkZ2V0KiB3aW5kb3cgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtf
V0lER0VUKGNsaWVudEluZm8pKTsKLSAgICBpZiAoZ3RrX3dpZGdldF9pc190b3BsZXZlbCh3aW5k
b3cpICYmIGd0a193aWRnZXRfZ2V0X3Zpc2libGUod2luZG93KSkgeworICAgIGlmIChndGtfd2lk
Z2V0X2lzX3RvcGxldmVsKHdpbmRvdykgJiYgZ3RrX3dpZGdldF9nZXRfdmlzaWJsZSh3aW5kb3cp
ICYmICFHVEtfSVNfT0ZGU0NSRUVOX1dJTkRPVyh3aW5kb3cpKSB7CiAgICAgICAgIGd0a193aW5k
b3dfZ2V0X3Bvc2l0aW9uKEdUS19XSU5ET1cod2luZG93KSwgJmdlb21ldHJ5LngsICZnZW9tZXRy
eS55KTsKICAgICAgICAgZ3RrX3dpbmRvd19nZXRfc2l6ZShHVEtfV0lORE9XKHdpbmRvdyksICZn
ZW9tZXRyeS53aWR0aCwgJmdlb21ldHJ5LmhlaWdodCk7CiAgICAgfQotLSAKMS43LjcuNg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124788</attachid>
            <date>2012-01-31 11:48:47 -0800</date>
            <delta_ts>2012-02-01 00:08:06 -0800</delta_ts>
            <desc>More extensive version of Claudio&apos;s patch</desc>
            <filename>bug-76911-20120131114846.patch</filename>
            <type>text/plain</type>
            <size>17791</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2Mjg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWI5OWNmM2U3NDdiOGQw
ZTgxZGM1MTVjMjMzZjg5NjM3NTQ3MzBhOS4uOTIwNzAzZDVkNDBlYTAyMDJiM2E2YzAyNTdjODlm
MzI2NTYyMzRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTAxLTMxICBDbGF1
ZGlvIFNhYXZlZHJhICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+IGFuZCBNYXJ0aW4gUm9iaW5zb24g
IDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBXZWJLaXRXZWJWaWV3IHdv
bid0IHdvcmsgaW4gYSBHdGtPZmZzY3JlZW5XaW5kb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2OTExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Omd0a1dpZGdldElzVmFsaWRUb3BsZXZlbCk6IEFkZGVkIHRoaXMg
aGVscGVyLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuaDoKKyAgICAgICAg
KFdlYkNvcmUpOiBBZGRlZCBoZWxwZXIgZGVjbGFyYXRpb24uCisKIDIwMTItMDEtMzAgIEFkcmll
bm5lIFdhbGtlciAgPGVubmVAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbY2hyb21pdW1dIEFsd2F5
cyBwcmUtcmVzZXJ2ZSBzY3JvbGxiYXIgYW5kIHNjcm9sbCBjb3JuZXIgdGV4dHVyZXMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0No
YW5nZUxvZwppbmRleCBkNDQ5NDY0ZmY3MTRjNWY3ZTJhNjVkOGVhZjExMjgyNzBjZjA3NGY4Li5i
YjgxYmU4ZjlhOWY3MjljZDliYmFhYmM1NWIzZDNjMmIxNDQyNjNiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjUgQEAKKzIwMTItMDEtMzEgIENsYXVkaW8gU2FhdmVkcmEgIDxjc2FhdmVk
cmFAaWdhbGlhLmNvbT4gYW5kIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29t
PgorCisgICAgICAgIFtHVEtdIFdlYktpdFdlYlZpZXcgd29uJ3Qgd29yayBpbiBhIEd0a09mZnNj
cmVlbldpbmRvdworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NzY5MTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkNocm9tZUNsaWVudDo6d2luZG93UmVjdCk6IFVzZSB0aGUgbmV3IGd0a1dpZGdldElzVmFsaWRU
b3BsZXZlbCBoZWxwZXIuCisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6c2V0V2luZG93
UmVjdCk6IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnVuZm9jdXMpOiBE
aXR0by4KKyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpydW5PcGVuUGFuZWwpOiBEaXR0
by4KKyAgICAgICAgKiB0ZXN0cy90ZXN0d2Vidmlldy5jOiBBZGRlZCBhIHRlc3QgdG8gZW5zdXJl
IHRoYXQgbG9hZGluZyBhIHBhZ2UgaW4gYW4gb2Zmc2NyZWVuIHdpbmRvdyBkb2VzIG5vdCBjcmFz
aC4KKyAgICAgICAgKiB3ZWJraXQvd2Via2l0Z2xvYmFscy5jcHA6CisgICAgICAgIChjdXJyZW50
VG9wbGV2ZWxDYWxsYmFjayk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcDoK
KyAgICAgICAgKHdlYmtpdF93ZWJfZnJhbWVfcHJpbnRfZnVsbCk6CisgICAgICAgICh3ZWJraXRf
d2ViX2ZyYW1lX3ByaW50KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6Cisg
ICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZm9jdXNfaW5fZXZlbnQpOgorICAgICAgICAod2Via2l0
X3dlYl92aWV3X3NjcmlwdF9kaWFsb2cpOgorCiAyMDEyLTAxLTIzICBNYXJpbyBTYW5jaGV6IFBy
YWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBSZWZhY3RvciBHVEsn
cyBhY2Nlc3NpYmlsaXRpdHkgY29kZSB0byBiZSBtb3JlIG1vZHVsYXIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA5
MjAxNjdjZGI1Yjk0OWI0ZmZlNWI2ZjUzMzk1MjQyNGIwYTUxYTRmLi4wNTZiODJjMDIxM2ZlYjMw
OGZkZTVjYjUzMTFiMTY4MTk3YzgwNDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIw
MTItMDEtMzEgIENsYXVkaW8gU2FhdmVkcmEgIDxjc2FhdmVkcmFAaWdhbGlhLmNvbT4gYW5kIE1h
cnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIFdl
YktpdFdlYlZpZXcgd29uJ3Qgd29yayBpbiBhIEd0a09mZnNjcmVlbldpbmRvdworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY5MTEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFVJQ2xpZW50LmNwcDoKKyAgICAgICAgKGdldFdpbmRvd0ZyYW1lKTogVXNlIHRoZSBu
ZXcgaGVscGVyLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3Bw
OgorICAgICAgICAod2Via2l0V2ViVmlld0NyZWF0ZUphdmFTY3JpcHREaWFsb2cpOiBEaXR0bwor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcDoKKyAgICAg
ICAgKHdlYmtpdFdlYlZpZXdCYXNlUmVhbGl6ZSk6IERpdHRvLgorICAgICAgICAod2Via2l0V2Vi
Vmlld0Jhc2VTaXplQWxsb2NhdGUpOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNl
Rm9jdXNJbkV2ZW50KTogRGl0dG8uCisKIDIwMTItMDEtMzAgIEpvY2VseW4gVHVyY290dGUgIDxq
b2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdIERpc2Nvbm5lY3QgdGhl
IExheWVyVHJlZUhvc3QgZnJvbSBsYXllcnMgd2hlbiB0aGV5IGdldCByZW1vdmVkIGZyb20gdGhl
aXIgcGFyZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0
aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmNw
cAppbmRleCAyY2Y2OWM5ZDAzMDEwNzdkNDAyOTI4MzAzNTQ2MDZmNWM2MGFkNTRiLi4xMjc2NDBj
YjQxNDMwMDQxOWEwMTNmMjA4NzU2MjMwYzRjYTdhZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmNwcApAQCAtNDIsNCArNDIsOSBAQCBJbnRQb2ludCBj
b252ZXJ0V2lkZ2V0UG9pbnRUb1NjcmVlblBvaW50KEd0a1dpZGdldCogd2lkZ2V0LCBjb25zdCBJ
bnRQb2ludCYgcG9pbgogICAgIHJldHVybiBJbnRQb2ludCh3aW5kb3dPcmlnaW5YICsgeEluV2lu
ZG93LCB3aW5kb3dPcmlnaW5ZICsgeUluV2luZG93KTsKIH0KIAorYm9vbCBndGtXaWRnZXRJc1Zh
bGlkVG9wbGV2ZWwoR3RrV2lkZ2V0KiB3aWRnZXQpCit7CisgICAgcmV0dXJuIGd0a193aWRnZXRf
aXNfdG9wX2xldmVsKHdpZGdldCkgJiYgR1RLX0lTX1dJTkRPVyh3aWRnZXQpICYmICFHVEtfSVNf
T0ZGU0NSRUVOX1dJTkRPVyh3aWRnZXQpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmgKaW5kZXggYTMzODU4ZmEx
Zjc4MzAwOGViODQzNjEwNTIyZGIzYTk5MGM2NGQzMy4uMTRhYzVhYzA0ODJlNDBlZjA5YTBjYzMz
MWRmODdjYjg5NmEwNzYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Rr
L0d0a1V0aWxpdGllcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9HdGtVdGls
aXRpZXMuaApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIElnYWxp
YSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgSWdhbGlhIFMuTC4KICAqCiAgKiAg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTI0LDYgKzI0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
SW50UG9pbnQ7CiAKIEludFBvaW50IGNvbnZlcnRXaWRnZXRQb2ludFRvU2NyZWVuUG9pbnQoR3Rr
V2lkZ2V0KiwgY29uc3QgSW50UG9pbnQmKTsKK2Jvb2wgZ3RrV2lkZ2V0SXNWYWxpZFRvcGxldmVs
KEd0a1dpZGdldCopOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRHdGsuY3BwCmluZGV4IGI0
NTRhZjQ3ZGJlMDA1OTM4MzhiYTM0YWEyNDM0Y2JkYjQ4ZDA4NjkuLjgyZTU3NjkwZjAwNTI3Y2Q4
NzY1NTFkZjBjYzAzZTg5YzQ0MzE0NGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcApAQCAtNSw2ICs1LDcgQEAKICAqIENv
cHlyaWdodCAoQykgMjAwOCBBbHAgVG9rZXIgPGFscEBhdG9rZXIuY29tPgogICogQ29weXJpZ2h0
IChDKSAyMDA4IEd1c3Rhdm8gTm9yb25oYSBTaWx2YSA8Z25zQGdub21lLm9yZz4KICAqIENvcHly
aWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuIEwuCiAgKgogICogIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCkBAIC05OSw3ICsxMDAsNyBAQCB2b2lkIENocm9tZUNsaWVudDo6Y2hyb21lRGVzdHJveWVk
KCkKIEZsb2F0UmVjdCBDaHJvbWVDbGllbnQ6OndpbmRvd1JlY3QoKQogewogICAgIEd0a1dpZGdl
dCogd2luZG93ID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVChtX3dlYlZpZXcp
KTsKLSAgICBpZiAoZ3RrX3dpZGdldF9pc190b3BsZXZlbCh3aW5kb3cpKSB7CisgICAgaWYgKGd0
a1dpZGdldElzVmFsaWRUb3BsZXZlbCh3aW5kb3cpKSB7CiAgICAgICAgIGdpbnQgbGVmdCwgdG9w
LCB3aWR0aCwgaGVpZ2h0OwogICAgICAgICBndGtfd2luZG93X2dldF9wb3NpdGlvbihHVEtfV0lO
RE9XKHdpbmRvdyksICZsZWZ0LCAmdG9wKTsKICAgICAgICAgZ3RrX3dpbmRvd19nZXRfc2l6ZShH
VEtfV0lORE9XKHdpbmRvdyksICZ3aWR0aCwgJmhlaWdodCk7CkBAIC0xMjgsNyArMTI5LDcgQEAg
dm9pZCBDaHJvbWVDbGllbnQ6OnNldFdpbmRvd1JlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0KQog
ICAgICAgICByZXR1cm47CiAKICAgICBHdGtXaWRnZXQqIHdpbmRvdyA9IGd0a193aWRnZXRfZ2V0
X3RvcGxldmVsKEdUS19XSURHRVQobV93ZWJWaWV3KSk7Ci0gICAgaWYgKGd0a193aWRnZXRfaXNf
dG9wbGV2ZWwod2luZG93KSkgeworICAgIGlmIChndGtXaWRnZXRJc1ZhbGlkVG9wbGV2ZWwod2lu
ZG93KSkgewogICAgICAgICBndGtfd2luZG93X21vdmUoR1RLX1dJTkRPVyh3aW5kb3cpLCBpbnRy
ZWN0LngoKSwgaW50cmVjdC55KCkpOwogICAgICAgICBndGtfd2luZG93X3Jlc2l6ZShHVEtfV0lO
RE9XKHdpbmRvdyksIGludHJlY3Qud2lkdGgoKSwgaW50cmVjdC5oZWlnaHQoKSk7CiAgICAgfQpA
QCAtMTUzLDcgKzE1NCw3IEBAIHZvaWQgQ2hyb21lQ2xpZW50Ojpmb2N1cygpCiB2b2lkIENocm9t
ZUNsaWVudDo6dW5mb2N1cygpCiB7CiAgICAgR3RrV2lkZ2V0KiB3aW5kb3cgPSBndGtfd2lkZ2V0
X2dldF90b3BsZXZlbChHVEtfV0lER0VUKG1fd2ViVmlldykpOwotICAgIGlmIChndGtfd2lkZ2V0
X2lzX3RvcGxldmVsKHdpbmRvdykpCisgICAgaWYgKGd0a1dpZGdldElzVmFsaWRUb3BsZXZlbCh3
aW5kb3cpKQogICAgICAgICBndGtfd2luZG93X3NldF9mb2N1cyhHVEtfV0lORE9XKHdpbmRvdyks
IE5VTEwpOwogfQogCkBAIC03NzUsOCArNzc2LDEyIEBAIHZvaWQgQ2hyb21lQ2xpZW50OjpydW5P
cGVuUGFuZWwoRnJhbWUqLCBQYXNzUmVmUHRyPEZpbGVDaG9vc2VyPiBwcnBGaWxlQ2hvb3NlcikK
IHsKICAgICBSZWZQdHI8RmlsZUNob29zZXI+IGNob29zZXIgPSBwcnBGaWxlQ2hvb3NlcjsKIAor
ICAgIEd0a1dpZGdldCogdG9wbGV2ZWwgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lE
R0VUKG1fd2ViVmlldykpOworICAgIGlmICghZ3RrV2lkZ2V0SXNWYWxpZFRvcGxldmVsKHRvcGxl
dmVsKSkKKyAgICAgICAgdG9wbGV2ZWwgPSAwOworCiAgICAgR3RrV2lkZ2V0KiBkaWFsb2cgPSBn
dGtfZmlsZV9jaG9vc2VyX2RpYWxvZ19uZXcoXygiVXBsb2FkIEZpbGUiKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfV0lORE9XKGd0a193
aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQobV93ZWJWaWV3KSkpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19XSU5ET1codG9wbGV2
ZWwpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEdUS19GSUxFX0NIT09TRVJfQUNUSU9OX09QRU4sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX1NUT0NLX0NBTkNFTCwgR1RLX1JFU1BPTlNF
X0NBTkNFTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHVEtfU1RPQ0tfT1BFTiwgR1RLX1JFU1BPTlNFX0FDQ0VQVCwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3R3ZWJ2aWV3LmMgYi9Tb3VyY2UvV2ViS2l0L2d0ay90
ZXN0cy90ZXN0d2Vidmlldy5jCmluZGV4IDMzNWZmZGQyMjdkNGNmYWQxZGIwZDExYTc4ZmU1OWJk
YWY0YmZiNDUuLmRhM2Y3YzlmNjNjNzNiNTE2YzQzMjE3NjdmNzhmZGE5YTUwM2QzOWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3R3ZWJ2aWV3LmMKKysrIGIvU291cmNl
L1dlYktpdC9ndGsvdGVzdHMvdGVzdHdlYnZpZXcuYwpAQCAtMSw2ICsxLDcgQEAKIC8qCiAgKiBD
b3B5cmlnaHQgKEMpIDIwMDggSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKICAqIENvcHlyaWdo
dCAoQykgMjAwOSwgMjAxMCBDb2xsYWJvcmEgTHRkLgorICogQ29weXJpZ2h0IChDKSAyMDEyIEln
YWxpYSBTLkwuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTM2Myw2ICszNjQsMjQgQEAgc3RhdGlj
IHZvaWQgdGVzdF93ZWJraXRfd2ViX3ZpZXdfd2luZG93X2ZlYXR1cmVzKCkKICAgICBndGtfd2lk
Z2V0X2Rlc3Ryb3kod2luZG93KTsKIH0gICAgCiAKK3N0YXRpYyB2b2lkIHRlc3Rfd2Via2l0X3dl
Yl92aWV3X29mZnNjcmVlbl93aW5kb3coKQoreworICAgIGxvb3AgPSBnX21haW5fbG9vcF9uZXco
TlVMTCwgVFJVRSk7CisKKyAgICBHdGtXaWRnZXQgKndpbmRvdyA9IGd0a19vZmZzY3JlZW5fd2lu
ZG93X25ldygpOworICAgIEd0a1dpZGdldCAqd2ViX3ZpZXcgPSB3ZWJraXRfd2ViX3ZpZXdfbmV3
KCk7CisKKyAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHdpbmRvdyksIHdlYl92
aWV3KTsKKyAgICBndGtfd2lkZ2V0X3Nob3dfYWxsKHdpbmRvdyk7CisgICAgZ19zaWduYWxfY29u
bmVjdCh3ZWJfdmlldywgIm5vdGlmeTo6bG9hZC1zdGF0dXMiLCBHX0NBTExCQUNLKGlkbGVfcXVp
dF9sb29wX2NiKSwgTlVMTCk7CisgICAgd2Via2l0X3dlYl92aWV3X2xvYWRfdXJpKFdFQktJVF9X
RUJfVklFVyh3ZWJfdmlldyksIGJhc2VfdXJpKTsKKworICAgIGdfbWFpbl9sb29wX3J1bihsb29w
KTsKKworICAgIGd0a193aWRnZXRfZGVzdHJveSh3aW5kb3cpOworICAgIGdfbWFpbl9sb29wX3Vu
cmVmKGxvb3ApOworfQorCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCiB7CiAgICAg
U291cFNlcnZlciogc2VydmVyOwpAQCAtMzkwLDYgKzQwOSw3IEBAIGludCBtYWluKGludCBhcmdj
LCBjaGFyKiogYXJndikKICAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvd2Vidmlldy9kZXN0
cm95IiwgdGVzdF93ZWJraXRfd2ViX3ZpZXdfZGVzdHJveSk7CiAgICAgZ190ZXN0X2FkZF9mdW5j
KCIvd2Via2l0L3dlYnZpZXcvZ3JhYl9mb2N1cyIsIHRlc3Rfd2Via2l0X3dlYl92aWV3X2dyYWJf
Zm9jdXMpOwogICAgIGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC93ZWJ2aWV3L3dpbmRvdy1mZWF0
dXJlcyIsIHRlc3Rfd2Via2l0X3dlYl92aWV3X3dpbmRvd19mZWF0dXJlcyk7CisgICAgZ190ZXN0
X2FkZF9mdW5jKCIvd2Via2l0L3dlYnZpZXcvb2Zmc2NyZWVuLXdpbmRvdyIsIHRlc3Rfd2Via2l0
X3dlYl92aWV3X29mZnNjcmVlbl93aW5kb3cpOwogCiAgICAgcmV0dXJuIGdfdGVzdF9ydW4gKCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0Z2xvYmFscy5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0Z2xvYmFscy5jcHAKaW5kZXggNzE0
MzNjODkzZGM4ODMyNzYxYzVmZWY3NWFhNzFkMWVlMDcxMzFjZS4uZjU2Y2YyYjc4NmM1MzdiMDQ4
ZjZhYzYwNzNhYjYwODFiZTcyZmE5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdGdsb2JhbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXRnbG9iYWxzLmNwcApAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2Fj
aGVTdG9yYWdlLmgiCiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiRnJhbWVOZXR3b3Jr
aW5nQ29udGV4dEd0ay5oIgorI2luY2x1ZGUgIkd0a1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIkdP
d25QdHIuaCIKICNpbmNsdWRlICJHUmVmUHRyLmgiCiAjaW5jbHVkZSAiSWNvbkRhdGFiYXNlLmgi
CkBAIC0yMjUsMTAgKzIyNiw3IEBAIHN0YXRpYyBHdGtXaWRnZXQqIGN1cnJlbnRUb3BsZXZlbENh
bGxiYWNrKFdlYktpdFNvdXBBdXRoRGlhbG9nKiBmZWF0dXJlLCBTb3VwTWVzCiAgICAgICAgIHJl
dHVybiBOVUxMOwogCiAgICAgR3RrV2lkZ2V0KiB0b3BsZXZlbCA9ICBndGtfd2lkZ2V0X2dldF90
b3BsZXZlbChHVEtfV0lER0VUKGNvbnRleHQtPmNvcmVGcmFtZSgpLT5wYWdlKCktPmNocm9tZSgp
LT5wbGF0Zm9ybVBhZ2VDbGllbnQoKSkpOwotICAgIGlmIChndGtfd2lkZ2V0X2lzX3RvcGxldmVs
KHRvcGxldmVsKSkKLSAgICAgICAgcmV0dXJuIHRvcGxldmVsOwotICAgIGVsc2UKLSAgICAgICAg
cmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIGd0a1dpZGdldElzVmFsaWRUb3BsZXZlbCh0b3BsZXZl
bCkgPyB0b3BsZXZlbCA6IDA7CiB9CiAKIC8qKgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJmcmFtZS5jcHAKaW5kZXggNDdiODg4MTg5ODYxMzM4N2ZlZTk5ZWIxZGE2MDZhOGYz
MmZiNTRiZC4uY2JlODliM2YzMmExNDQwZmI3ZmJkMTc4NDc1MmFiMjJiMGYzMjUxZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwCkBAIC00MCw2ICs0MCw3
IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiR0NDb250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCisjaW5jbHVkZSAiR3RrVXRpbGl0aWVzLmgiCiAj
aW5jbHVkZSAiR3RrVmVyc2lvbmluZy5oIgogI2luY2x1ZGUgIkhUTUxGcmFtZU93bmVyRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgpAQCAtODEzLDggKzgxNCw3IEBAIEd0a1By
aW50T3BlcmF0aW9uUmVzdWx0IHdlYmtpdF93ZWJfZnJhbWVfcHJpbnRfZnVsbChXZWJLaXRXZWJG
cmFtZSogZnJhbWUsIEd0a1ByCiAgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoR1RLX0lTX1BSSU5U
X09QRVJBVElPTihvcGVyYXRpb24pLCBHVEtfUFJJTlRfT1BFUkFUSU9OX1JFU1VMVF9FUlJPUik7
CiAKICAgICBHdGtXaWRnZXQqIHRvcExldmVsID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RL
X1dJREdFVCh3ZWJraXRfd2ViX2ZyYW1lX2dldF93ZWJfdmlldyhmcmFtZSkpKTsKLQotICAgIGlm
ICghZ3RrX3dpZGdldF9pc190b3BsZXZlbCh0b3BMZXZlbCkpCisgICAgaWYgKCFndGtXaWRnZXRJ
c1ZhbGlkVG9wbGV2ZWwodG9wTGV2ZWwpKQogICAgICAgICB0b3BMZXZlbCA9IDA7CiAKICAgICBG
cmFtZSogY29yZUZyYW1lID0gY29yZShmcmFtZSk7CkBAIC04NTMsNyArODUzLDcgQEAgdm9pZCB3
ZWJraXRfd2ViX2ZyYW1lX3ByaW50KFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKIAogICAgIGlmIChl
cnJvcikgewogICAgICAgICBHdGtXaWRnZXQqIHdpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3RvcGxl
dmVsKEdUS19XSURHRVQocHJpdi0+d2ViVmlldykpOwotICAgICAgICBHdGtXaWRnZXQqIGRpYWxv
ZyA9IGd0a19tZXNzYWdlX2RpYWxvZ19uZXcoZ3RrX3dpZGdldF9pc190b3BsZXZlbCh3aW5kb3cp
ID8gR1RLX1dJTkRPVyh3aW5kb3cpIDogMCwKKyAgICAgICAgR3RrV2lkZ2V0KiBkaWFsb2cgPSBn
dGtfbWVzc2FnZV9kaWFsb2dfbmV3KGd0a1dpZGdldElzVmFsaWRUb3BsZXZlbCh3aW5kb3cpID8g
R1RLX1dJTkRPVyh3aW5kb3cpIDogMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEdUS19ESUFMT0dfREVTVFJPWV9XSVRIX1BBUkVOVCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19NRVNTQUdF
X0VSUk9SLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgR1RLX0JVVFRPTlNfQ0xPU0UsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
dmlldy5jcHAKaW5kZXggYWE0MzJjNWQ0MzBmMDU0MGViNDE1NmYyMzYxYzdkNTA0NTZkMDdmYS4u
Y2Y3YzAxNmUwNDNhNmY3MzcyZWVkMjJlMDE3ZGYxNDUyYjBiNDlkMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtOTAwLDcgKzkwMCw3IEBAIHN0YXRp
YyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfZm9jdXNfaW5fZXZlbnQoR3RrV2lkZ2V0KiB3aWRn
ZXQsIEdka0V2ZW50Rm9jdXMqCiAgICAgLy8gVE9ETzogSW1wcm92ZSBmb2N1cyBoYW5kbGluZyBh
cyBzdWdnZXN0ZWQgaW4KICAgICAvLyBodHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjkxMAogICAgIEd0a1dpZGdldCogdG9wbGV2ZWwgPSBndGtfd2lkZ2V0X2dldF90b3Bs
ZXZlbCh3aWRnZXQpOwotICAgIGlmIChndGtfd2lkZ2V0X2lzX3RvcGxldmVsKHRvcGxldmVsKSAm
JiBndGtfd2luZG93X2hhc190b3BsZXZlbF9mb2N1cyhHVEtfV0lORE9XKHRvcGxldmVsKSkpIHsK
KyAgICBpZiAoZ3RrV2lkZ2V0SXNWYWxpZFRvcGxldmVsKHRvcGxldmVsKSkgewogICAgICAgICBX
ZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdpZGdldCk7CiAgICAgICAg
IEZvY3VzQ29udHJvbGxlciogZm9jdXNDb250cm9sbGVyID0gY29yZSh3ZWJWaWV3KS0+Zm9jdXND
b250cm9sbGVyKCk7CiAKQEAgLTExMDIsNyArMTEwMiwxMiBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Vi
a2l0X3dlYl92aWV3X3NjcmlwdF9kaWFsb2coV2ViS2l0V2ViVmlldyogd2ViVmlldywgV2ViS2l0
V2ViRgogICAgIH0KIAogICAgIHdpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19X
SURHRVQod2ViVmlldykpOwotICAgIGRpYWxvZyA9IGd0a19tZXNzYWdlX2RpYWxvZ19uZXcoZ3Rr
X3dpZGdldF9pc190b3BsZXZlbCh3aW5kb3cpID8gR1RLX1dJTkRPVyh3aW5kb3cpIDogMCwgR1RL
X0RJQUxPR19ERVNUUk9ZX1dJVEhfUEFSRU5ULCBtZXNzYWdlVHlwZSwgYnV0dG9ucywgIiVzIiwg
bWVzc2FnZSk7CisgICAgZGlhbG9nID0gZ3RrX21lc3NhZ2VfZGlhbG9nX25ldyhndGtXaWRnZXRJ
c1ZhbGlkVG9wbGV2ZWwod2luZG93KSA/IEdUS19XSU5ET1cod2luZG93KSA6IDAsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfRElBTE9HX0RFU1RST1lfV0lUSF9QQVJF
TlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlVHlwZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1dHRvbnMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWVzc2FnZSk7CiAgICAgZ2NoYXIqIHRpdGxlID0gZ19zdHJjb25jYXQoIkphdmFT
Y3JpcHQgLSAiLCB3ZWJraXRfd2ViX2ZyYW1lX2dldF91cmkoZnJhbWUpLCBOVUxMKTsKICAgICBn
dGtfd2luZG93X3NldF90aXRsZShHVEtfV0lORE9XKGRpYWxvZyksIHRpdGxlKTsKICAgICBnX2Zy
ZWUodGl0bGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0VUlDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0VUlDbGllbnQuY3BwCmluZGV4IDA1NmU4YmE3YWE4MjM1NWMwOGYzMDA3YmY3ZjdiZTAzZmM3
NDM4ZTguLjFmZjMzNjMzZjE4YjNkZDRiNzFiYTk4ZjU2NWFjMmExOWQyMDJkZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAK
QEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgSWdhbGlhIFMuTC4KICAqCiAgKiBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YwpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIldlYktpdFdlYlZpZXdQcml2YXRlLmgiCiAj
aW5jbHVkZSAiV2ViS2l0V2luZG93UHJvcGVydGllc1ByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJQ
YWdlUHJveHkuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0d0a1V0aWxpdGllcy5oPgogCiB1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwogCkBAIC0xMTEsNyArMTEyLDcgQEAgc3RhdGljIFdLUmVjdCBnZXRX
aW5kb3dGcmFtZShXS1BhZ2VSZWYgcGFnZSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKIHsKICAg
ICBHZGtSZWN0YW5nbGUgZ2VvbWV0cnkgPSB7IDAsIDAsIDAsIDAgfTsKICAgICBHdGtXaWRnZXQq
IHdpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQoY2xpZW50SW5mbykp
OwotICAgIGlmIChndGtfd2lkZ2V0X2lzX3RvcGxldmVsKHdpbmRvdykgJiYgZ3RrX3dpZGdldF9n
ZXRfdmlzaWJsZSh3aW5kb3cpKSB7CisgICAgaWYgKGd0a1dpZGdldElzVmFsaWRUb3BsZXZlbCh3
aW5kb3cpKSB7CiAgICAgICAgIGd0a193aW5kb3dfZ2V0X3Bvc2l0aW9uKEdUS19XSU5ET1cod2lu
ZG93KSwgJmdlb21ldHJ5LngsICZnZW9tZXRyeS55KTsKICAgICAgICAgZ3RrX3dpbmRvd19nZXRf
c2l6ZShHVEtfV0lORE9XKHdpbmRvdyksICZnZW9tZXRyeS53aWR0aCwgJmdlb21ldHJ5LmhlaWdo
dCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRXZWJWaWV3LmNwcAppbmRleCBlOGJjYWVlZGE3ZWU0NWNkYjRkNjAyMDRiYzFjNjhhODE4MmYw
YjVhLi41OWRjNjkzZDQyMzE4MmE1MjEyZWUwYTljNTk0OTFlMTQ4MzgyMWExIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAt
MzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJQ
YWdlUHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdJY29uLmg+CisjaW5jbHVkZSA8V2Vi
Q29yZS9HdGtVdGlsaXRpZXMuaD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2luY2x1
ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRy
Lmg+CkBAIC0xMDksNyArMTEwLDcgQEAgc3RhdGljIEd0a1dpZGdldCogd2Via2l0V2ViVmlld0Ny
ZWF0ZShXZWJLaXRXZWJWaWV3KikKIHN0YXRpYyBHdGtXaWRnZXQqIHdlYmtpdFdlYlZpZXdDcmVh
dGVKYXZhU2NyaXB0RGlhbG9nKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEd0a01lc3NhZ2VUeXBl
IHR5cGUsIEd0a0J1dHRvbnNUeXBlIGJ1dHRvbnMsIGludCBkZWZhdWx0UmVzcG9uc2UsIGNvbnN0
IGNoYXIqIG1lc3NhZ2UpCiB7CiAgICAgR3RrV2lkZ2V0KiBwYXJlbnQgPSBndGtfd2lkZ2V0X2dl
dF90b3BsZXZlbChHVEtfV0lER0VUKHdlYlZpZXcpKTsKLSAgICBHdGtXaWRnZXQqIGRpYWxvZyA9
IGd0a19tZXNzYWdlX2RpYWxvZ19uZXcoZ3RrX3dpZGdldF9pc190b3BsZXZlbChwYXJlbnQpID8g
R1RLX1dJTkRPVyhwYXJlbnQpIDogMCwKKyAgICBHdGtXaWRnZXQqIGRpYWxvZyA9IGd0a19tZXNz
YWdlX2RpYWxvZ19uZXcoZ3RrV2lkZ2V0SXNWYWxpZFRvcGxldmVsKHBhcmVudCkgPyBHVEtfV0lO
RE9XKHBhcmVudCkgOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBHVEtfRElBTE9HX0RFU1RST1lfV0lUSF9QQVJFTlQsIHR5cGUsIGJ1dHRvbnMsICIl
cyIsIG1lc3NhZ2UpOwogICAgIEdPd25QdHI8Y2hhcj4gdGl0bGUoZ19zdHJkdXBfcHJpbnRmKCJK
YXZhU2NyaXB0IC0gJXMiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaSh3ZWJWaWV3KSkpOwogICAg
IGd0a193aW5kb3dfc2V0X3RpdGxlKEdUS19XSU5ET1coZGlhbG9nKSwgdGl0bGUuZ2V0KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
d0Jhc2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
d0Jhc2UuY3BwCmluZGV4IDdkNzVhOGZjNTBkN2Q3ZDlkODgwMTVjYzRlMDQ5MzFiNzMwYWZhMzYu
LjUzNTY5NDg0OWRhYTVmNzAwNDFlN2FlZWFhY2I0NzdhNmMwOGU1NjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAK
QEAgLTE0Miw3ICsxNDIsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVJlYWxpemUo
R3RrV2lkZ2V0KiB3aWRnZXQpCiAgICAgZ3RrX2ltX2NvbnRleHRfc2V0X2NsaWVudF93aW5kb3co
cHJpdi0+aW1Db250ZXh0LmdldCgpLCB3aW5kb3cpOwogCiAgICAgR3RrV2lkZ2V0KiB0b3BsZXZl
bCA9IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKHdpZGdldCk7Ci0gICAgaWYgKGd0a193aWRnZXRf
aXNfdG9wbGV2ZWwodG9wbGV2ZWwpICYmIEdUS19JU19XSU5ET1codG9wbGV2ZWwpKSB7CisgICAg
aWYgKGd0a1dpZGdldElzVmFsaWRUb3BsZXZlbCh0b3BsZXZlbCkpIHsKICAgICAgICAgd2Via2l0
V2ViVmlld0Jhc2VOb3RpZnlSZXNpemVyU2l6ZUZvcldpbmRvdyh3ZWJWaWV3LCBHVEtfV0lORE9X
KHRvcGxldmVsKSk7CiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QodG9wbGV2ZWwsICJub3RpZnk6
OnJlc2l6ZS1ncmlwLXZpc2libGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJB
Q0sodG9wbGV2ZWxXaW5kb3dSZXNpemVHcmlwVmlzaWJpbGl0eUNoYW5nZWQpLCB3ZWJWaWV3KTsK
QEAgLTIxNCw3ICsyMTQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNpemVBbGxv
Y2F0ZShHdGtXaWRnZXQqIHdpZGdldCwgR3RrQWxsb2NhdGlvbiogYWxsbwogICAgIHByaXYtPnBh
Z2VQcm94eS0+ZHJhd2luZ0FyZWEoKS0+c2V0U2l6ZShJbnRTaXplKGFsbG9jYXRpb24tPndpZHRo
LCBhbGxvY2F0aW9uLT5oZWlnaHQpLCBJbnRTaXplKCkpOwogCiAgICAgR3RrV2lkZ2V0KiB0b3Bs
ZXZlbCA9IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKHdpZGdldCk7Ci0gICAgaWYgKGd0a193aWRn
ZXRfaXNfdG9wbGV2ZWwodG9wbGV2ZWwpICYmIEdUS19JU19XSU5ET1codG9wbGV2ZWwpKQorICAg
IGlmIChndGtXaWRnZXRJc1ZhbGlkVG9wbGV2ZWwodG9wbGV2ZWwpKQogICAgICAgICB3ZWJraXRX
ZWJWaWV3QmFzZU5vdGlmeVJlc2l6ZXJTaXplRm9yV2luZG93KHdlYlZpZXdCYXNlLCBHVEtfV0lO
RE9XKHRvcGxldmVsKSk7CiB9CiAKQEAgLTIyNCw3ICsyMjQsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4g
d2Via2l0V2ViVmlld0Jhc2VGb2N1c0luRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50
Rm9jdXMqCiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2Ut
PnByaXY7CiAKICAgICBHdGtXaWRnZXQqIHRvcGxldmVsID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2
ZWwod2lkZ2V0KTsKLSAgICBpZiAoZ3RrX3dpZGdldF9pc190b3BsZXZlbCh0b3BsZXZlbCkgJiYg
Z3RrX3dpbmRvd19oYXNfdG9wbGV2ZWxfZm9jdXMoR1RLX1dJTkRPVyh0b3BsZXZlbCkpKSB7Cisg
ICAgaWYgKGd0a1dpZGdldElzVmFsaWRUb3BsZXZlbCh0b3BsZXZlbCkpIHsKICAgICAgICAgZ3Rr
X2ltX2NvbnRleHRfZm9jdXNfaW4ocHJpdi0+aW1Db250ZXh0LmdldCgpKTsKICAgICAgICAgaWYg
KCFwcml2LT5pc1BhZ2VBY3RpdmUpIHsKICAgICAgICAgICAgIHByaXYtPmlzUGFnZUFjdGl2ZSA9
IFRSVUU7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124894</attachid>
            <date>2012-02-01 00:08:20 -0800</date>
            <delta_ts>2012-02-01 12:45:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76911-20120201000819.patch</filename>
            <type>text/plain</type>
            <size>18071</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NDI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGNkMWNiOWQzNDQyZjkw
MTc0ZTVmMTU1N2MzMTFmNzNjOTQ3YWExMy4uYmFkNDk0MzdiN2QzOTE0ZWI3MjViNzU1NzI0MzQ0
OGYyNGZmZGY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTAxLTMxICBDbGF1
ZGlvIFNhYXZlZHJhICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+IGFuZCBNYXJ0aW4gUm9iaW5zb24g
IDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBXZWJLaXRXZWJWaWV3IHdv
bid0IHdvcmsgaW4gYSBHdGtPZmZzY3JlZW5XaW5kb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2OTExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OndpZGdldElzT25zY3JlZW5Ub3BsZXZlbFdpbmRvdyk6IEFkZGVk
IHRoaXMgaGVscGVyLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuaDoKKyAg
ICAgICAgKFdlYkNvcmUpOiBBZGRlZCBoZWxwZXIgZGVjbGFyYXRpb24uCisKIDIwMTItMDEtMzEg
IEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkLiBGaXggYnVpbGQgYnJlYWsgYWZ0ZXIgcjEwNjM3My4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRl
eCBkNDQ5NDY0ZmY3MTRjNWY3ZTJhNjVkOGVhZjExMjgyNzBjZjA3NGY4Li42MDFhZTEwNjM2NTll
MjIyZTgxNWE1OGVlZWZmOWZiZjc1Y2ZiOGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjUgQEAKKzIwMTItMDEtMzEgIENsYXVkaW8gU2FhdmVkcmEgIDxjc2FhdmVkcmFAaWdhbGlhLmNv
bT4gYW5kIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAg
IFtHVEtdIFdlYktpdFdlYlZpZXcgd29uJ3Qgd29yayBpbiBhIEd0a09mZnNjcmVlbldpbmRvdwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY5MTEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVu
dDo6d2luZG93UmVjdCk6IFVzZSB0aGUgbmV3IHdpZGdldElzT25zY3JlZW5Ub3BsZXZlbFdpbmRv
dyBoZWxwZXIuCisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6c2V0V2luZG93UmVjdCk6
IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnVuZm9jdXMpOiBEaXR0by4K
KyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpydW5PcGVuUGFuZWwpOiBEaXR0by4KKyAg
ICAgICAgKiB0ZXN0cy90ZXN0d2Vidmlldy5jOiBBZGRlZCBhIHRlc3QgdG8gZW5zdXJlIHRoYXQg
bG9hZGluZyBhIHBhZ2UgaW4gYW4gb2Zmc2NyZWVuIHdpbmRvdyBkb2VzIG5vdCBjcmFzaC4KKyAg
ICAgICAgKiB3ZWJraXQvd2Via2l0Z2xvYmFscy5jcHA6CisgICAgICAgIChjdXJyZW50VG9wbGV2
ZWxDYWxsYmFjayk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcDoKKyAgICAg
ICAgKHdlYmtpdF93ZWJfZnJhbWVfcHJpbnRfZnVsbCk6CisgICAgICAgICh3ZWJraXRfd2ViX2Zy
YW1lX3ByaW50KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAgICAg
ICh3ZWJraXRfd2ViX3ZpZXdfZm9jdXNfaW5fZXZlbnQpOgorICAgICAgICAod2Via2l0X3dlYl92
aWV3X3NjcmlwdF9kaWFsb2cpOgorCiAyMDEyLTAxLTIzICBNYXJpbyBTYW5jaGV6IFByYWRhICA8
bXNhbmNoZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBSZWZhY3RvciBHVEsncyBhY2Nl
c3NpYmlsaXRpdHkgY29kZSB0byBiZSBtb3JlIG1vZHVsYXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjNjljMjBk
YjkzODFlZjIzM2YwNWEyZDlkMjNmNTc0NjIzYmE3NTgwLi45MDM2Mjg0NGVhY2YzNjM1NGYwNmJj
ZWY4NjAzNzBkNjZmNjMxNWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDEt
MzEgIENsYXVkaW8gU2FhdmVkcmEgIDxjc2FhdmVkcmFAaWdhbGlhLmNvbT4gYW5kIE1hcnRpbiBS
b2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIFdlYktpdFdl
YlZpZXcgd29uJ3Qgd29yayBpbiBhIEd0a09mZnNjcmVlbldpbmRvdworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY5MTEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFVJQ2xpZW50LmNwcDoKKyAgICAgICAgKGdldFdpbmRvd0ZyYW1lKTogVXNlIHRoZSBuZXcgaGVs
cGVyLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOgorICAg
ICAgICAod2Via2l0V2ViVmlld0NyZWF0ZUphdmFTY3JpcHREaWFsb2cpOiBEaXR0bworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcDoKKyAgICAgICAgKHdl
YmtpdFdlYlZpZXdCYXNlUmVhbGl6ZSk6IERpdHRvLgorICAgICAgICAod2Via2l0V2ViVmlld0Jh
c2VTaXplQWxsb2NhdGUpOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlRm9jdXNJ
bkV2ZW50KTogRGl0dG8uCisKIDIwMTItMDEtMzEgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBh
cHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAoV2ViS2l0Mik6IGV2ZW50LmtleUNvZGUg
aXMgYWx3YXlzIHplcm8gd2hlbiB0eXBpbmcgaW4gUnVzc2lhbgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmNwcAppbmRleCAyY2Y2OWM5ZDAzMDEwNzdkNDAyOTI4
MzAzNTQ2MDZmNWM2MGFkNTRiLi4yNDY2ODc5NThkM2Q2ODc3MGVjZDU4YmZhNjU1ZTJmNjUyZjcw
YWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmNwcApA
QCAtNDIsNCArNDIsOSBAQCBJbnRQb2ludCBjb252ZXJ0V2lkZ2V0UG9pbnRUb1NjcmVlblBvaW50
KEd0a1dpZGdldCogd2lkZ2V0LCBjb25zdCBJbnRQb2ludCYgcG9pbgogICAgIHJldHVybiBJbnRQ
b2ludCh3aW5kb3dPcmlnaW5YICsgeEluV2luZG93LCB3aW5kb3dPcmlnaW5ZICsgeUluV2luZG93
KTsKIH0KIAorYm9vbCB3aWRnZXRJc09uc2NyZWVuVG9wbGV2ZWxXaW5kb3coR3RrV2lkZ2V0KiB3
aWRnZXQpCit7CisgICAgcmV0dXJuIGd0a193aWRnZXRfaXNfdG9wbGV2ZWwod2lkZ2V0KSAmJiBH
VEtfSVNfV0lORE9XKHdpZGdldCkgJiYgIUdUS19JU19PRkZTQ1JFRU5fV0lORE9XKHdpZGdldCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9HdGtVdGlsaXRpZXMuaAppbmRleCBhMzM4NThmYTFmNzgzMDA4ZWI4NDM2MTA1MjJkYjNhOTkw
YzY0ZDMzLi5iOWJkZGU2NTk4ZjAyZDMzNTdhMDBhNzEzMzg5NmJhYzU0YzJkYTJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMSwgMjAxMiBJZ2FsaWEgUy5MLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMjQsNiArMjQs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbnRQb2ludDsKIAogSW50UG9pbnQgY29u
dmVydFdpZGdldFBvaW50VG9TY3JlZW5Qb2ludChHdGtXaWRnZXQqLCBjb25zdCBJbnRQb2ludCYp
OworYm9vbCB3aWRnZXRJc09uc2NyZWVuVG9wbGV2ZWxXaW5kb3coR3RrV2lkZ2V0Kik7CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKaW5kZXggYjQ1NGFmNDdkYmUwMDU5MzgzOGJh
MzRhYTI0MzRjYmRiNDhkMDg2OS4uYjBhMTMxZTcyOTU5NTU5YjUwMWRjMTFjMDIyMzI2OWVlYjNj
NWI3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRHdGsuY3BwCkBAIC01LDYgKzUsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA4IEFs
cCBUb2tlciA8YWxwQGF0b2tlci5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggR3VzdGF2byBO
b3JvbmhhIFNpbHZhIDxnbnNAZ25vbWUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lh
IENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KKyAqIENvcHlyaWdodCAo
QykgMjAxMiBJZ2FsaWEgUy4gTC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTk5LDcgKzEwMCw3
IEBAIHZvaWQgQ2hyb21lQ2xpZW50OjpjaHJvbWVEZXN0cm95ZWQoKQogRmxvYXRSZWN0IENocm9t
ZUNsaWVudDo6d2luZG93UmVjdCgpCiB7CiAgICAgR3RrV2lkZ2V0KiB3aW5kb3cgPSBndGtfd2lk
Z2V0X2dldF90b3BsZXZlbChHVEtfV0lER0VUKG1fd2ViVmlldykpOwotICAgIGlmIChndGtfd2lk
Z2V0X2lzX3RvcGxldmVsKHdpbmRvdykpIHsKKyAgICBpZiAod2lkZ2V0SXNPbnNjcmVlblRvcGxl
dmVsV2luZG93KHdpbmRvdykpIHsKICAgICAgICAgZ2ludCBsZWZ0LCB0b3AsIHdpZHRoLCBoZWln
aHQ7CiAgICAgICAgIGd0a193aW5kb3dfZ2V0X3Bvc2l0aW9uKEdUS19XSU5ET1cod2luZG93KSwg
JmxlZnQsICZ0b3ApOwogICAgICAgICBndGtfd2luZG93X2dldF9zaXplKEdUS19XSU5ET1cod2lu
ZG93KSwgJndpZHRoLCAmaGVpZ2h0KTsKQEAgLTEyOCw3ICsxMjksNyBAQCB2b2lkIENocm9tZUNs
aWVudDo6c2V0V2luZG93UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIEd0a1dpZGdldCogd2luZG93ID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RL
X1dJREdFVChtX3dlYlZpZXcpKTsKLSAgICBpZiAoZ3RrX3dpZGdldF9pc190b3BsZXZlbCh3aW5k
b3cpKSB7CisgICAgaWYgKHdpZGdldElzT25zY3JlZW5Ub3BsZXZlbFdpbmRvdyh3aW5kb3cpKSB7
CiAgICAgICAgIGd0a193aW5kb3dfbW92ZShHVEtfV0lORE9XKHdpbmRvdyksIGludHJlY3QueCgp
LCBpbnRyZWN0LnkoKSk7CiAgICAgICAgIGd0a193aW5kb3dfcmVzaXplKEdUS19XSU5ET1cod2lu
ZG93KSwgaW50cmVjdC53aWR0aCgpLCBpbnRyZWN0LmhlaWdodCgpKTsKICAgICB9CkBAIC0xNTMs
NyArMTU0LDcgQEAgdm9pZCBDaHJvbWVDbGllbnQ6OmZvY3VzKCkKIHZvaWQgQ2hyb21lQ2xpZW50
Ojp1bmZvY3VzKCkKIHsKICAgICBHdGtXaWRnZXQqIHdpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3Rv
cGxldmVsKEdUS19XSURHRVQobV93ZWJWaWV3KSk7Ci0gICAgaWYgKGd0a193aWRnZXRfaXNfdG9w
bGV2ZWwod2luZG93KSkKKyAgICBpZiAod2lkZ2V0SXNPbnNjcmVlblRvcGxldmVsV2luZG93KHdp
bmRvdykpCiAgICAgICAgIGd0a193aW5kb3dfc2V0X2ZvY3VzKEdUS19XSU5ET1cod2luZG93KSwg
TlVMTCk7CiB9CiAKQEAgLTc3NSw4ICs3NzYsMTIgQEAgdm9pZCBDaHJvbWVDbGllbnQ6OnJ1bk9w
ZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+IHBycEZpbGVDaG9vc2VyKQog
ewogICAgIFJlZlB0cjxGaWxlQ2hvb3Nlcj4gY2hvb3NlciA9IHBycEZpbGVDaG9vc2VyOwogCisg
ICAgR3RrV2lkZ2V0KiB0b3BsZXZlbCA9IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURH
RVQobV93ZWJWaWV3KSk7CisgICAgaWYgKCF3aWRnZXRJc09uc2NyZWVuVG9wbGV2ZWxXaW5kb3co
dG9wbGV2ZWwpKQorICAgICAgICB0b3BsZXZlbCA9IDA7CisKICAgICBHdGtXaWRnZXQqIGRpYWxv
ZyA9IGd0a19maWxlX2Nob29zZXJfZGlhbG9nX25ldyhfKCJVcGxvYWQgRmlsZSIpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19XSU5ET1co
Z3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVChtX3dlYlZpZXcpKSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1RLX1dJTkRPVyh0
b3BsZXZlbCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgR1RLX0ZJTEVfQ0hPT1NFUl9BQ1RJT05fT1BFTiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfU1RPQ0tfQ0FOQ0VMLCBHVEtfUkVT
UE9OU0VfQ0FOQ0VMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdUS19TVE9DS19PUEVOLCBHVEtfUkVTUE9OU0VfQUNDRVBULApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9ndGsvdGVzdHMvdGVzdHdlYnZpZXcuYyBiL1NvdXJjZS9XZWJLaXQv
Z3RrL3Rlc3RzL3Rlc3R3ZWJ2aWV3LmMKaW5kZXggMzM1ZmZkZDIyN2Q0Y2ZhZDFkYjBkMTFhNzhm
ZTU5YmRhZjRiZmI0NS4uNDFjZjMwOGY2OWQzODUzNzg3NGQ0OTBjMjkxYzlhMjI4NDNmZTA5NCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvdGVzdHMvdGVzdHdlYnZpZXcuYworKysgYi9T
b3VyY2UvV2ViS2l0L2d0ay90ZXN0cy90ZXN0d2Vidmlldy5jCkBAIC0xLDYgKzEsNyBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAwOCBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgogICogQ29w
eXJpZ2h0IChDKSAyMDA5LCAyMDEwIENvbGxhYm9yYSBMdGQuCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTIgSWdhbGlhIFMuTC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzYzLDYgKzM2NCwyNCBAQCBz
dGF0aWMgdm9pZCB0ZXN0X3dlYmtpdF93ZWJfdmlld193aW5kb3dfZmVhdHVyZXMoKQogICAgIGd0
a193aWRnZXRfZGVzdHJveSh3aW5kb3cpOwogfSAgICAKIAorc3RhdGljIHZvaWQgdGVzdF93ZWJr
aXRfd2ViX3ZpZXdfaW5fb2Zmc2NyZWVuX3dpbmRvd19kb2VzX25vdF9jcmFzaCgpCit7CisgICAg
bG9vcCA9IGdfbWFpbl9sb29wX25ldyhOVUxMLCBUUlVFKTsKKworICAgIEd0a1dpZGdldCAqd2lu
ZG93ID0gZ3RrX29mZnNjcmVlbl93aW5kb3dfbmV3KCk7CisgICAgR3RrV2lkZ2V0ICp3ZWJfdmll
dyA9IHdlYmtpdF93ZWJfdmlld19uZXcoKTsKKworICAgIGd0a19jb250YWluZXJfYWRkKEdUS19D
T05UQUlORVIod2luZG93KSwgd2ViX3ZpZXcpOworICAgIGd0a193aWRnZXRfc2hvd19hbGwod2lu
ZG93KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KHdlYl92aWV3LCAibm90aWZ5Ojpsb2FkLXN0YXR1
cyIsIEdfQ0FMTEJBQ0soaWRsZV9xdWl0X2xvb3BfY2IpLCBOVUxMKTsKKyAgICB3ZWJraXRfd2Vi
X3ZpZXdfbG9hZF91cmkoV0VCS0lUX1dFQl9WSUVXKHdlYl92aWV3KSwgYmFzZV91cmkpOworCisg
ICAgZ19tYWluX2xvb3BfcnVuKGxvb3ApOworCisgICAgZ3RrX3dpZGdldF9kZXN0cm95KHdpbmRv
dyk7CisgICAgZ19tYWluX2xvb3BfdW5yZWYobG9vcCk7Cit9CisKIGludCBtYWluKGludCBhcmdj
LCBjaGFyKiogYXJndikKIHsKICAgICBTb3VwU2VydmVyKiBzZXJ2ZXI7CkBAIC0zOTAsNiArNDA5
LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgIGdfdGVzdF9hZGRfZnVu
YygiL3dlYmtpdC93ZWJ2aWV3L2Rlc3Ryb3kiLCB0ZXN0X3dlYmtpdF93ZWJfdmlld19kZXN0cm95
KTsKICAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvd2Vidmlldy9ncmFiX2ZvY3VzIiwgdGVz
dF93ZWJraXRfd2ViX3ZpZXdfZ3JhYl9mb2N1cyk7CiAgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Vi
a2l0L3dlYnZpZXcvd2luZG93LWZlYXR1cmVzIiwgdGVzdF93ZWJraXRfd2ViX3ZpZXdfd2luZG93
X2ZlYXR1cmVzKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvd2Vidmlldy93ZWJ2aWV3
LWluLW9mZnNjcmVlbi13aW5kb3ctZG9lcy1ub3QtY3Jhc2giLCB0ZXN0X3dlYmtpdF93ZWJfdmll
d19pbl9vZmZzY3JlZW5fd2luZG93X2RvZXNfbm90X2NyYXNoKTsKIAogICAgIHJldHVybiBnX3Rl
c3RfcnVuICgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dGdsb2JhbHMuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdGdsb2JhbHMuY3Bw
CmluZGV4IDcxNDMzYzg5M2RjODgzMjc2MWM1ZmVmNzVhYTcxZDFlZTA3MTMxY2UuLjM5NjdjNjM3
NmM0YjZiNWI4MjAyMzQzZWQ5ZWM4MjRmMjNmYjIxY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXRnbG9iYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0Z2xvYmFscy5jcHAKQEAgLTI0LDYgKzI0LDcgQEAKICNpbmNsdWRlICJBcHBs
aWNhdGlvbkNhY2hlU3RvcmFnZS5oIgogI2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkZy
YW1lTmV0d29ya2luZ0NvbnRleHRHdGsuaCIKKyNpbmNsdWRlICJHdGtVdGlsaXRpZXMuaCIKICNp
bmNsdWRlICJHT3duUHRyLmgiCiAjaW5jbHVkZSAiR1JlZlB0ci5oIgogI2luY2x1ZGUgIkljb25E
YXRhYmFzZS5oIgpAQCAtMjI1LDEwICsyMjYsNyBAQCBzdGF0aWMgR3RrV2lkZ2V0KiBjdXJyZW50
VG9wbGV2ZWxDYWxsYmFjayhXZWJLaXRTb3VwQXV0aERpYWxvZyogZmVhdHVyZSwgU291cE1lcwog
ICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIEd0a1dpZGdldCogdG9wbGV2ZWwgPSAgZ3RrX3dp
ZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVChjb250ZXh0LT5jb3JlRnJhbWUoKS0+cGFnZSgp
LT5jaHJvbWUoKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkpKTsKLSAgICBpZiAoZ3RrX3dpZGdldF9p
c190b3BsZXZlbCh0b3BsZXZlbCkpCi0gICAgICAgIHJldHVybiB0b3BsZXZlbDsKLSAgICBlbHNl
Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiB3aWRnZXRJc09uc2NyZWVuVG9wbGV2
ZWxXaW5kb3codG9wbGV2ZWwpID8gdG9wbGV2ZWwgOiAwOwogfQogCiAvKioKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwCmluZGV4IDQ3Yjg4ODE4OTg2MTMzODdm
ZWU5OWViMWRhNjA2YThmMzJmYjU0YmQuLmQ3Y2RjYTI1ZTEzNzlhM2YyNjBkOTI2YmNlZjBiZjlh
ZGU2ZTAxMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJm
cmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNw
cApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkdD
Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkd0
a1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIkd0a1ZlcnNpb25pbmcuaCIKICNpbmNsdWRlICJIVE1M
RnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKQEAgLTgxMyw4
ICs4MTQsNyBAQCBHdGtQcmludE9wZXJhdGlvblJlc3VsdCB3ZWJraXRfd2ViX2ZyYW1lX3ByaW50
X2Z1bGwoV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBHdGtQcgogICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKEdUS19JU19QUklOVF9PUEVSQVRJT04ob3BlcmF0aW9uKSwgR1RLX1BSSU5UX09QRVJBVElP
Tl9SRVNVTFRfRVJST1IpOwogCiAgICAgR3RrV2lkZ2V0KiB0b3BMZXZlbCA9IGd0a193aWRnZXRf
Z2V0X3RvcGxldmVsKEdUS19XSURHRVQod2Via2l0X3dlYl9mcmFtZV9nZXRfd2ViX3ZpZXcoZnJh
bWUpKSk7Ci0KLSAgICBpZiAoIWd0a193aWRnZXRfaXNfdG9wbGV2ZWwodG9wTGV2ZWwpKQorICAg
IGlmICghd2lkZ2V0SXNPbnNjcmVlblRvcGxldmVsV2luZG93KHRvcExldmVsKSkKICAgICAgICAg
dG9wTGV2ZWwgPSAwOwogCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUoZnJhbWUpOwpAQCAt
ODUzLDcgKzg1Myw3IEBAIHZvaWQgd2Via2l0X3dlYl9mcmFtZV9wcmludChXZWJLaXRXZWJGcmFt
ZSogZnJhbWUpCiAKICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgR3RrV2lkZ2V0KiB3aW5kb3cg
PSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lER0VUKHByaXYtPndlYlZpZXcpKTsKLSAg
ICAgICAgR3RrV2lkZ2V0KiBkaWFsb2cgPSBndGtfbWVzc2FnZV9kaWFsb2dfbmV3KGd0a193aWRn
ZXRfaXNfdG9wbGV2ZWwod2luZG93KSA/IEdUS19XSU5ET1cod2luZG93KSA6IDAsCisgICAgICAg
IEd0a1dpZGdldCogZGlhbG9nID0gZ3RrX21lc3NhZ2VfZGlhbG9nX25ldyh3aWRnZXRJc09uc2Ny
ZWVuVG9wbGV2ZWxXaW5kb3cod2luZG93KSA/IEdUS19XSU5ET1cod2luZG93KSA6IDAsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfRElBTE9H
X0RFU1RST1lfV0lUSF9QQVJFTlQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBHVEtfTUVTU0FHRV9FUlJPUiwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19CVVRUT05TX0NMT1NFLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwIGIvU291cmNl
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCmluZGV4IGFhNDMyYzVkNDMwZjA1
NDBlYjQxNTZmMjM2MWM3ZDUwNDU2ZDA3ZmEuLmEzZTM5NWY1ZDY2ZGNiM2RiY2U0NGI2NmJmY2Nm
N2ViODY5ZmFkNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3
ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5j
cHAKQEAgLTkwMCw3ICs5MDAsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0X3dlYl92aWV3X2Zv
Y3VzX2luX2V2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEZvY3VzKgogICAgIC8vIFRP
RE86IEltcHJvdmUgZm9jdXMgaGFuZGxpbmcgYXMgc3VnZ2VzdGVkIGluCiAgICAgLy8gaHR0cDov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5MTAKICAgICBHdGtXaWRnZXQqIHRv
cGxldmVsID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwod2lkZ2V0KTsKLSAgICBpZiAoZ3RrX3dp
ZGdldF9pc190b3BsZXZlbCh0b3BsZXZlbCkgJiYgZ3RrX3dpbmRvd19oYXNfdG9wbGV2ZWxfZm9j
dXMoR1RLX1dJTkRPVyh0b3BsZXZlbCkpKSB7CisgICAgaWYgKHdpZGdldElzT25zY3JlZW5Ub3Bs
ZXZlbFdpbmRvdyh0b3BsZXZlbCkgJiYgZ3RrX3dpbmRvd19oYXNfdG9wbGV2ZWxfZm9jdXMoR1RL
X1dJTkRPVyh0b3BsZXZlbCkpKSB7CiAgICAgICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBX
RUJLSVRfV0VCX1ZJRVcod2lkZ2V0KTsKICAgICAgICAgRm9jdXNDb250cm9sbGVyKiBmb2N1c0Nv
bnRyb2xsZXIgPSBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIoKTsKIApAQCAtMTEwMiw3
ICsxMTAyLDEyIEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3ZpZXdfc2NyaXB0X2RpYWxv
ZyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRXZWJGCiAgICAgfQogCiAgICAgd2luZG93
ID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVCh3ZWJWaWV3KSk7Ci0gICAgZGlh
bG9nID0gZ3RrX21lc3NhZ2VfZGlhbG9nX25ldyhndGtfd2lkZ2V0X2lzX3RvcGxldmVsKHdpbmRv
dykgPyBHVEtfV0lORE9XKHdpbmRvdykgOiAwLCBHVEtfRElBTE9HX0RFU1RST1lfV0lUSF9QQVJF
TlQsIG1lc3NhZ2VUeXBlLCBidXR0b25zLCAiJXMiLCBtZXNzYWdlKTsKKyAgICBkaWFsb2cgPSBn
dGtfbWVzc2FnZV9kaWFsb2dfbmV3KHdpZGdldElzT25zY3JlZW5Ub3BsZXZlbFdpbmRvdyh3aW5k
b3cpID8gR1RLX1dJTkRPVyh3aW5kb3cpIDogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIEdUS19ESUFMT0dfREVTVFJPWV9XSVRIX1BBUkVOVCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VUeXBlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnV0dG9ucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICIlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlKTsK
ICAgICBnY2hhciogdGl0bGUgPSBnX3N0cmNvbmNhdCgiSmF2YVNjcmlwdCAtICIsIHdlYmtpdF93
ZWJfZnJhbWVfZ2V0X3VyaShmcmFtZSksIE5VTEwpOwogICAgIGd0a193aW5kb3dfc2V0X3RpdGxl
KEdUS19XSU5ET1coZGlhbG9nKSwgdGl0bGUpOwogICAgIGdfZnJlZSh0aXRsZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRVSUNsaWVudC5jcHAKaW5k
ZXggMDU2ZThiYTdhYTgyMzU1YzA4ZjMwMDdiZjdmN2JlMDNmYzc0MzhlOC4uYTY1OWFkMzE0OWZk
MjdiOTBlODNhN2I3YjQ3N2JlOWU0ZmZmMGY2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykgMjAx
MSwgMjAxMiBJZ2FsaWEgUy5MLgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNSw2ICsyNSw3IEBA
CiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld1ByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJLaXRXaW5k
b3dQcm9wZXJ0aWVzUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorI2luY2x1
ZGUgPFdlYkNvcmUvR3RrVXRpbGl0aWVzLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAK
QEAgLTExMSw3ICsxMTIsNyBAQCBzdGF0aWMgV0tSZWN0IGdldFdpbmRvd0ZyYW1lKFdLUGFnZVJl
ZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewogICAgIEdka1JlY3RhbmdsZSBnZW9t
ZXRyeSA9IHsgMCwgMCwgMCwgMCB9OwogICAgIEd0a1dpZGdldCogd2luZG93ID0gZ3RrX3dpZGdl
dF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVChjbGllbnRJbmZvKSk7Ci0gICAgaWYgKGd0a193aWRn
ZXRfaXNfdG9wbGV2ZWwod2luZG93KSAmJiBndGtfd2lkZ2V0X2dldF92aXNpYmxlKHdpbmRvdykp
IHsKKyAgICBpZiAoV2ViQ29yZTo6d2lkZ2V0SXNPbnNjcmVlblRvcGxldmVsV2luZG93KHdpbmRv
dykgJiYgZ3RrX3dpZGdldF9nZXRfdmlzaWJsZSh3aW5kb3cpKSB7CiAgICAgICAgIGd0a193aW5k
b3dfZ2V0X3Bvc2l0aW9uKEdUS19XSU5ET1cod2luZG93KSwgJmdlb21ldHJ5LngsICZnZW9tZXRy
eS55KTsKICAgICAgICAgZ3RrX3dpbmRvd19nZXRfc2l6ZShHVEtfV0lORE9XKHdpbmRvdyksICZn
ZW9tZXRyeS53aWR0aCwgJmdlb21ldHJ5LmhlaWdodCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlldy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCBlOGJjYWVl
ZGE3ZWU0NWNkYjRkNjAyMDRiYzFjNjhhODE4MmYwYjVhLi5mY2FhMmRiMWQxMTQ2NjI1ZWViYzZj
YjllMWJlMzAwYTEyMzNlN2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIldl
YktpdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlIDxXZWJD
b3JlL0RyYWdJY29uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HdGtVdGlsaXRpZXMuaD4KICNpbmNs
dWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2luY2x1ZGUgPHd0Zi9nb2JqZWN0L0dPd25QdHIuaD4K
ICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CkBAIC0xMDksNyArMTEwLDcgQEAgc3Rh
dGljIEd0a1dpZGdldCogd2Via2l0V2ViVmlld0NyZWF0ZShXZWJLaXRXZWJWaWV3KikKIHN0YXRp
YyBHdGtXaWRnZXQqIHdlYmtpdFdlYlZpZXdDcmVhdGVKYXZhU2NyaXB0RGlhbG9nKFdlYktpdFdl
YlZpZXcqIHdlYlZpZXcsIEd0a01lc3NhZ2VUeXBlIHR5cGUsIEd0a0J1dHRvbnNUeXBlIGJ1dHRv
bnMsIGludCBkZWZhdWx0UmVzcG9uc2UsIGNvbnN0IGNoYXIqIG1lc3NhZ2UpCiB7CiAgICAgR3Rr
V2lkZ2V0KiBwYXJlbnQgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lER0VUKHdlYlZp
ZXcpKTsKLSAgICBHdGtXaWRnZXQqIGRpYWxvZyA9IGd0a19tZXNzYWdlX2RpYWxvZ19uZXcoZ3Rr
X3dpZGdldF9pc190b3BsZXZlbChwYXJlbnQpID8gR1RLX1dJTkRPVyhwYXJlbnQpIDogMCwKKyAg
ICBHdGtXaWRnZXQqIGRpYWxvZyA9IGd0a19tZXNzYWdlX2RpYWxvZ19uZXcod2lkZ2V0SXNPbnNj
cmVlblRvcGxldmVsV2luZG93KHBhcmVudCkgPyBHVEtfV0lORE9XKHBhcmVudCkgOiAwLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfRElBTE9HX0RF
U1RST1lfV0lUSF9QQVJFTlQsIHR5cGUsIGJ1dHRvbnMsICIlcyIsIG1lc3NhZ2UpOwogICAgIEdP
d25QdHI8Y2hhcj4gdGl0bGUoZ19zdHJkdXBfcHJpbnRmKCJKYXZhU2NyaXB0IC0gJXMiLCB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X3VyaSh3ZWJWaWV3KSkpOwogICAgIGd0a193aW5kb3dfc2V0X3RpdGxl
KEdUS19XSU5ET1coZGlhbG9nKSwgdGl0bGUuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2UuY3BwCmluZGV4IDdkNzVh
OGZjNTBkN2Q3ZDlkODgwMTVjYzRlMDQ5MzFiNzMwYWZhMzYuLmQ5Y2NhYTMyYWQ3ZTVkMjEyYjJk
YTM0NGExNjA3OWQ3ZTBhYjM2ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKQEAgLTE0Miw3ICsxNDIsNyBAQCBz
dGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVJlYWxpemUoR3RrV2lkZ2V0KiB3aWRnZXQpCiAg
ICAgZ3RrX2ltX2NvbnRleHRfc2V0X2NsaWVudF93aW5kb3cocHJpdi0+aW1Db250ZXh0LmdldCgp
LCB3aW5kb3cpOwogCiAgICAgR3RrV2lkZ2V0KiB0b3BsZXZlbCA9IGd0a193aWRnZXRfZ2V0X3Rv
cGxldmVsKHdpZGdldCk7Ci0gICAgaWYgKGd0a193aWRnZXRfaXNfdG9wbGV2ZWwodG9wbGV2ZWwp
ICYmIEdUS19JU19XSU5ET1codG9wbGV2ZWwpKSB7CisgICAgaWYgKHdpZGdldElzT25zY3JlZW5U
b3BsZXZlbFdpbmRvdyh0b3BsZXZlbCkpIHsKICAgICAgICAgd2Via2l0V2ViVmlld0Jhc2VOb3Rp
ZnlSZXNpemVyU2l6ZUZvcldpbmRvdyh3ZWJWaWV3LCBHVEtfV0lORE9XKHRvcGxldmVsKSk7CiAg
ICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QodG9wbGV2ZWwsICJub3RpZnk6OnJlc2l6ZS1ncmlwLXZp
c2libGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJBQ0sodG9wbGV2ZWxXaW5k
b3dSZXNpemVHcmlwVmlzaWJpbGl0eUNoYW5nZWQpLCB3ZWJWaWV3KTsKQEAgLTIxNCw3ICsyMTQs
NyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNpemVBbGxvY2F0ZShHdGtXaWRnZXQq
IHdpZGdldCwgR3RrQWxsb2NhdGlvbiogYWxsbwogICAgIHByaXYtPnBhZ2VQcm94eS0+ZHJhd2lu
Z0FyZWEoKS0+c2V0U2l6ZShJbnRTaXplKGFsbG9jYXRpb24tPndpZHRoLCBhbGxvY2F0aW9uLT5o
ZWlnaHQpLCBJbnRTaXplKCkpOwogCiAgICAgR3RrV2lkZ2V0KiB0b3BsZXZlbCA9IGd0a193aWRn
ZXRfZ2V0X3RvcGxldmVsKHdpZGdldCk7Ci0gICAgaWYgKGd0a193aWRnZXRfaXNfdG9wbGV2ZWwo
dG9wbGV2ZWwpICYmIEdUS19JU19XSU5ET1codG9wbGV2ZWwpKQorICAgIGlmICh3aWRnZXRJc09u
c2NyZWVuVG9wbGV2ZWxXaW5kb3codG9wbGV2ZWwpKQogICAgICAgICB3ZWJraXRXZWJWaWV3QmFz
ZU5vdGlmeVJlc2l6ZXJTaXplRm9yV2luZG93KHdlYlZpZXdCYXNlLCBHVEtfV0lORE9XKHRvcGxl
dmVsKSk7CiB9CiAKQEAgLTIyNCw3ICsyMjQsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Via2l0V2Vi
Vmlld0Jhc2VGb2N1c0luRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdka0V2ZW50Rm9jdXMqCiAg
ICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmlld0Jhc2UtPnByaXY7CiAK
ICAgICBHdGtXaWRnZXQqIHRvcGxldmVsID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwod2lkZ2V0
KTsKLSAgICBpZiAoZ3RrX3dpZGdldF9pc190b3BsZXZlbCh0b3BsZXZlbCkgJiYgZ3RrX3dpbmRv
d19oYXNfdG9wbGV2ZWxfZm9jdXMoR1RLX1dJTkRPVyh0b3BsZXZlbCkpKSB7CisgICAgaWYgKHdp
ZGdldElzT25zY3JlZW5Ub3BsZXZlbFdpbmRvdyh0b3BsZXZlbCkgJiYgZ3RrX3dpbmRvd19oYXNf
dG9wbGV2ZWxfZm9jdXMoR1RLX1dJTkRPVyh0b3BsZXZlbCkpKSB7CiAgICAgICAgIGd0a19pbV9j
b250ZXh0X2ZvY3VzX2luKHByaXYtPmltQ29udGV4dC5nZXQoKSk7CiAgICAgICAgIGlmICghcHJp
di0+aXNQYWdlQWN0aXZlKSB7CiAgICAgICAgICAgICBwcml2LT5pc1BhZ2VBY3RpdmUgPSBUUlVF
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>124994</attachid>
            <date>2012-02-01 12:45:34 -0800</date>
            <delta_ts>2012-02-02 08:28:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-76911-20120201124533.patch</filename>
            <type>text/plain</type>
            <size>18086</size>
            <attacher name="Martin Robinson">mrobinson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NDI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGNkMWNiOWQzNDQyZjkw
MTc0ZTVmMTU1N2MzMTFmNzNjOTQ3YWExMy4uYmFkNDk0MzdiN2QzOTE0ZWI3MjViNzU1NzI0MzQ0
OGYyNGZmZGY2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTAxLTMxICBDbGF1
ZGlvIFNhYXZlZHJhICA8Y3NhYXZlZHJhQGlnYWxpYS5jb20+IGFuZCBNYXJ0aW4gUm9iaW5zb24g
IDxtcm9iaW5zb25AaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBXZWJLaXRXZWJWaWV3IHdv
bid0IHdvcmsgaW4gYSBHdGtPZmZzY3JlZW5XaW5kb3cKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2OTExCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OndpZGdldElzT25zY3JlZW5Ub3BsZXZlbFdpbmRvdyk6IEFkZGVk
IHRoaXMgaGVscGVyLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuaDoKKyAg
ICAgICAgKFdlYkNvcmUpOiBBZGRlZCBoZWxwZXIgZGVjbGFyYXRpb24uCisKIDIwMTItMDEtMzEg
IEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkLiBGaXggYnVpbGQgYnJlYWsgYWZ0ZXIgcjEwNjM3My4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRl
eCBkNDQ5NDY0ZmY3MTRjNWY3ZTJhNjVkOGVhZjExMjgyNzBjZjA3NGY4Li42MDFhZTEwNjM2NTll
MjIyZTgxNWE1OGVlZWZmOWZiZjc1Y2ZiOGE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0
ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjUgQEAKKzIwMTItMDEtMzEgIENsYXVkaW8gU2FhdmVkcmEgIDxjc2FhdmVkcmFAaWdhbGlhLmNv
bT4gYW5kIE1hcnRpbiBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAg
IFtHVEtdIFdlYktpdFdlYlZpZXcgd29uJ3Qgd29yayBpbiBhIEd0a09mZnNjcmVlbldpbmRvdwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY5MTEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVu
dDo6d2luZG93UmVjdCk6IFVzZSB0aGUgbmV3IHdpZGdldElzT25zY3JlZW5Ub3BsZXZlbFdpbmRv
dyBoZWxwZXIuCisgICAgICAgIChXZWJLaXQ6OkNocm9tZUNsaWVudDo6c2V0V2luZG93UmVjdCk6
IERpdHRvLgorICAgICAgICAoV2ViS2l0OjpDaHJvbWVDbGllbnQ6OnVuZm9jdXMpOiBEaXR0by4K
KyAgICAgICAgKFdlYktpdDo6Q2hyb21lQ2xpZW50OjpydW5PcGVuUGFuZWwpOiBEaXR0by4KKyAg
ICAgICAgKiB0ZXN0cy90ZXN0d2Vidmlldy5jOiBBZGRlZCBhIHRlc3QgdG8gZW5zdXJlIHRoYXQg
bG9hZGluZyBhIHBhZ2UgaW4gYW4gb2Zmc2NyZWVuIHdpbmRvdyBkb2VzIG5vdCBjcmFzaC4KKyAg
ICAgICAgKiB3ZWJraXQvd2Via2l0Z2xvYmFscy5jcHA6CisgICAgICAgIChjdXJyZW50VG9wbGV2
ZWxDYWxsYmFjayk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYmZyYW1lLmNwcDoKKyAgICAg
ICAgKHdlYmtpdF93ZWJfZnJhbWVfcHJpbnRfZnVsbCk6CisgICAgICAgICh3ZWJraXRfd2ViX2Zy
YW1lX3ByaW50KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAgICAg
ICh3ZWJraXRfd2ViX3ZpZXdfZm9jdXNfaW5fZXZlbnQpOgorICAgICAgICAod2Via2l0X3dlYl92
aWV3X3NjcmlwdF9kaWFsb2cpOgorCiAyMDEyLTAxLTIzICBNYXJpbyBTYW5jaGV6IFByYWRhICA8
bXNhbmNoZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBSZWZhY3RvciBHVEsncyBhY2Nl
c3NpYmlsaXRpdHkgY29kZSB0byBiZSBtb3JlIG1vZHVsYXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBjNjljMjBk
YjkzODFlZjIzM2YwNWEyZDlkMjNmNTc0NjIzYmE3NTgwLi45MDM2Mjg0NGVhY2YzNjM1NGYwNmJj
ZWY4NjAzNzBkNjZmNjMxNWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTItMDEt
MzEgIENsYXVkaW8gU2FhdmVkcmEgIDxjc2FhdmVkcmFAaWdhbGlhLmNvbT4gYW5kIE1hcnRpbiBS
b2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgorCisgICAgICAgIFtHVEtdIFdlYktpdFdl
YlZpZXcgd29uJ3Qgd29yayBpbiBhIEd0a09mZnNjcmVlbldpbmRvdworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzY5MTEKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dFVJQ2xpZW50LmNwcDoKKyAgICAgICAgKGdldFdpbmRvd0ZyYW1lKTogVXNlIHRoZSBuZXcgaGVs
cGVyLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXcuY3BwOgorICAg
ICAgICAod2Via2l0V2ViVmlld0NyZWF0ZUphdmFTY3JpcHREaWFsb2cpOiBEaXR0bworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcDoKKyAgICAgICAgKHdl
YmtpdFdlYlZpZXdCYXNlUmVhbGl6ZSk6IERpdHRvLgorICAgICAgICAod2Via2l0V2ViVmlld0Jh
c2VTaXplQWxsb2NhdGUpOiBEaXR0by4KKyAgICAgICAgKHdlYmtpdFdlYlZpZXdCYXNlRm9jdXNJ
bkV2ZW50KTogRGl0dG8uCisKIDIwMTItMDEtMzEgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBh
cHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAoV2ViS2l0Mik6IGV2ZW50LmtleUNvZGUg
aXMgYWx3YXlzIHplcm8gd2hlbiB0eXBpbmcgaW4gUnVzc2lhbgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmNwcAppbmRleCAyY2Y2OWM5ZDAzMDEwNzdkNDAyOTI4
MzAzNTQ2MDZmNWM2MGFkNTRiLi4yNDY2ODc5NThkM2Q2ODc3MGVjZDU4YmZhNjU1ZTJmNjUyZjcw
YWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVz
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmNwcApA
QCAtNDIsNCArNDIsOSBAQCBJbnRQb2ludCBjb252ZXJ0V2lkZ2V0UG9pbnRUb1NjcmVlblBvaW50
KEd0a1dpZGdldCogd2lkZ2V0LCBjb25zdCBJbnRQb2ludCYgcG9pbgogICAgIHJldHVybiBJbnRQ
b2ludCh3aW5kb3dPcmlnaW5YICsgeEluV2luZG93LCB3aW5kb3dPcmlnaW5ZICsgeUluV2luZG93
KTsKIH0KIAorYm9vbCB3aWRnZXRJc09uc2NyZWVuVG9wbGV2ZWxXaW5kb3coR3RrV2lkZ2V0KiB3
aWRnZXQpCit7CisgICAgcmV0dXJuIGd0a193aWRnZXRfaXNfdG9wbGV2ZWwod2lkZ2V0KSAmJiBH
VEtfSVNfV0lORE9XKHdpZGdldCkgJiYgIUdUS19JU19PRkZTQ1JFRU5fV0lORE9XKHdpZGdldCk7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2d0ay9HdGtVdGlsaXRpZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0
ay9HdGtVdGlsaXRpZXMuaAppbmRleCBhMzM4NThmYTFmNzgzMDA4ZWI4NDM2MTA1MjJkYjNhOTkw
YzY0ZDMzLi5iOWJkZGU2NTk4ZjAyZDMzNTdhMDBhNzEzMzg5NmJhYzU0YzJkYTJiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVXRpbGl0aWVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1V0aWxpdGllcy5oCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSwgSWdhbGlhIFMuTC4KKyAqIENvcHlyaWdodCAoQykg
MjAxMSwgMjAxMiBJZ2FsaWEgUy5MLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0
d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMjQsNiArMjQs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBJbnRQb2ludDsKIAogSW50UG9pbnQgY29u
dmVydFdpZGdldFBvaW50VG9TY3JlZW5Qb2ludChHdGtXaWRnZXQqLCBjb25zdCBJbnRQb2ludCYp
OworYm9vbCB3aWRnZXRJc09uc2NyZWVuVG9wbGV2ZWxXaW5kb3coR3RrV2lkZ2V0Kik7CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0Nocm9tZUNsaWVudEd0ay5jcHAKaW5kZXggYjQ1NGFmNDdkYmUwMDU5MzgzOGJh
MzRhYTI0MzRjYmRiNDhkMDg2OS4uMTM3YjkxOGFkMWI0NDA5ZDdlNDcxYWRmZDIyYTIyZmRmN2Vl
MDZhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9DaHJv
bWVDbGllbnRHdGsuY3BwCkBAIC01LDYgKzUsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA4IEFs
cCBUb2tlciA8YWxwQGF0b2tlci5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggR3VzdGF2byBO
b3JvbmhhIFNpbHZhIDxnbnNAZ25vbWUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDEwIE5va2lh
IENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKS4KKyAqIENvcHlyaWdodCAo
QykgMjAxMiBJZ2FsaWEgUy4gTC4KICAqCiAgKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTk5LDcgKzEwMCw3
IEBAIHZvaWQgQ2hyb21lQ2xpZW50OjpjaHJvbWVEZXN0cm95ZWQoKQogRmxvYXRSZWN0IENocm9t
ZUNsaWVudDo6d2luZG93UmVjdCgpCiB7CiAgICAgR3RrV2lkZ2V0KiB3aW5kb3cgPSBndGtfd2lk
Z2V0X2dldF90b3BsZXZlbChHVEtfV0lER0VUKG1fd2ViVmlldykpOwotICAgIGlmIChndGtfd2lk
Z2V0X2lzX3RvcGxldmVsKHdpbmRvdykpIHsKKyAgICBpZiAod2lkZ2V0SXNPbnNjcmVlblRvcGxl
dmVsV2luZG93KHdpbmRvdykpIHsKICAgICAgICAgZ2ludCBsZWZ0LCB0b3AsIHdpZHRoLCBoZWln
aHQ7CiAgICAgICAgIGd0a193aW5kb3dfZ2V0X3Bvc2l0aW9uKEdUS19XSU5ET1cod2luZG93KSwg
JmxlZnQsICZ0b3ApOwogICAgICAgICBndGtfd2luZG93X2dldF9zaXplKEdUS19XSU5ET1cod2lu
ZG93KSwgJndpZHRoLCAmaGVpZ2h0KTsKQEAgLTEyOCw3ICsxMjksNyBAQCB2b2lkIENocm9tZUNs
aWVudDo6c2V0V2luZG93UmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3QpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIEd0a1dpZGdldCogd2luZG93ID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RL
X1dJREdFVChtX3dlYlZpZXcpKTsKLSAgICBpZiAoZ3RrX3dpZGdldF9pc190b3BsZXZlbCh3aW5k
b3cpKSB7CisgICAgaWYgKHdpZGdldElzT25zY3JlZW5Ub3BsZXZlbFdpbmRvdyh3aW5kb3cpKSB7
CiAgICAgICAgIGd0a193aW5kb3dfbW92ZShHVEtfV0lORE9XKHdpbmRvdyksIGludHJlY3QueCgp
LCBpbnRyZWN0LnkoKSk7CiAgICAgICAgIGd0a193aW5kb3dfcmVzaXplKEdUS19XSU5ET1cod2lu
ZG93KSwgaW50cmVjdC53aWR0aCgpLCBpbnRyZWN0LmhlaWdodCgpKTsKICAgICB9CkBAIC0xNTMs
NyArMTU0LDcgQEAgdm9pZCBDaHJvbWVDbGllbnQ6OmZvY3VzKCkKIHZvaWQgQ2hyb21lQ2xpZW50
Ojp1bmZvY3VzKCkKIHsKICAgICBHdGtXaWRnZXQqIHdpbmRvdyA9IGd0a193aWRnZXRfZ2V0X3Rv
cGxldmVsKEdUS19XSURHRVQobV93ZWJWaWV3KSk7Ci0gICAgaWYgKGd0a193aWRnZXRfaXNfdG9w
bGV2ZWwod2luZG93KSkKKyAgICBpZiAod2lkZ2V0SXNPbnNjcmVlblRvcGxldmVsV2luZG93KHdp
bmRvdykpCiAgICAgICAgIGd0a193aW5kb3dfc2V0X2ZvY3VzKEdUS19XSU5ET1cod2luZG93KSwg
TlVMTCk7CiB9CiAKQEAgLTc3NSw4ICs3NzYsMTIgQEAgdm9pZCBDaHJvbWVDbGllbnQ6OnJ1bk9w
ZW5QYW5lbChGcmFtZSosIFBhc3NSZWZQdHI8RmlsZUNob29zZXI+IHBycEZpbGVDaG9vc2VyKQog
ewogICAgIFJlZlB0cjxGaWxlQ2hvb3Nlcj4gY2hvb3NlciA9IHBycEZpbGVDaG9vc2VyOwogCisg
ICAgR3RrV2lkZ2V0KiB0b3BsZXZlbCA9IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURH
RVQobV93ZWJWaWV3KSk7CisgICAgaWYgKCF3aWRnZXRJc09uc2NyZWVuVG9wbGV2ZWxXaW5kb3co
dG9wbGV2ZWwpKQorICAgICAgICB0b3BsZXZlbCA9IDA7CisKICAgICBHdGtXaWRnZXQqIGRpYWxv
ZyA9IGd0a19maWxlX2Nob29zZXJfZGlhbG9nX25ldyhfKCJVcGxvYWQgRmlsZSIpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19XSU5ET1co
Z3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVChtX3dlYlZpZXcpKSksCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wbGV2ZWwgPyBH
VEtfV0lORE9XKHRvcGxldmVsKSA6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgR1RLX0ZJTEVfQ0hPT1NFUl9BQ1RJT05fT1BFTiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfU1RPQ0tf
Q0FOQ0VMLCBHVEtfUkVTUE9OU0VfQ0FOQ0VMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19TVE9DS19PUEVOLCBHVEtfUkVTUE9OU0VfQUND
RVBULApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvdGVzdHMvdGVzdHdlYnZpZXcuYyBi
L1NvdXJjZS9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3R3ZWJ2aWV3LmMKaW5kZXggMzM1ZmZkZDIyN2Q0
Y2ZhZDFkYjBkMTFhNzhmZTU5YmRhZjRiZmI0NS4uNDFjZjMwOGY2OWQzODUzNzg3NGQ0OTBjMjkx
YzlhMjI4NDNmZTA5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvdGVzdHMvdGVzdHdl
YnZpZXcuYworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay90ZXN0cy90ZXN0d2Vidmlldy5jCkBAIC0x
LDYgKzEsNyBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOCBIb2xnZXIgSGFucyBQZXRlciBG
cmV5dGhlcgogICogQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwIENvbGxhYm9yYSBMdGQuCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTIgSWdhbGlhIFMuTC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQg
dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMzYz
LDYgKzM2NCwyNCBAQCBzdGF0aWMgdm9pZCB0ZXN0X3dlYmtpdF93ZWJfdmlld193aW5kb3dfZmVh
dHVyZXMoKQogICAgIGd0a193aWRnZXRfZGVzdHJveSh3aW5kb3cpOwogfSAgICAKIAorc3RhdGlj
IHZvaWQgdGVzdF93ZWJraXRfd2ViX3ZpZXdfaW5fb2Zmc2NyZWVuX3dpbmRvd19kb2VzX25vdF9j
cmFzaCgpCit7CisgICAgbG9vcCA9IGdfbWFpbl9sb29wX25ldyhOVUxMLCBUUlVFKTsKKworICAg
IEd0a1dpZGdldCAqd2luZG93ID0gZ3RrX29mZnNjcmVlbl93aW5kb3dfbmV3KCk7CisgICAgR3Rr
V2lkZ2V0ICp3ZWJfdmlldyA9IHdlYmtpdF93ZWJfdmlld19uZXcoKTsKKworICAgIGd0a19jb250
YWluZXJfYWRkKEdUS19DT05UQUlORVIod2luZG93KSwgd2ViX3ZpZXcpOworICAgIGd0a193aWRn
ZXRfc2hvd19hbGwod2luZG93KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KHdlYl92aWV3LCAibm90
aWZ5Ojpsb2FkLXN0YXR1cyIsIEdfQ0FMTEJBQ0soaWRsZV9xdWl0X2xvb3BfY2IpLCBOVUxMKTsK
KyAgICB3ZWJraXRfd2ViX3ZpZXdfbG9hZF91cmkoV0VCS0lUX1dFQl9WSUVXKHdlYl92aWV3KSwg
YmFzZV91cmkpOworCisgICAgZ19tYWluX2xvb3BfcnVuKGxvb3ApOworCisgICAgZ3RrX3dpZGdl
dF9kZXN0cm95KHdpbmRvdyk7CisgICAgZ19tYWluX2xvb3BfdW5yZWYobG9vcCk7Cit9CisKIGlu
dCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKIHsKICAgICBTb3VwU2VydmVyKiBzZXJ2ZXI7
CkBAIC0zOTAsNiArNDA5LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAg
IGdfdGVzdF9hZGRfZnVuYygiL3dlYmtpdC93ZWJ2aWV3L2Rlc3Ryb3kiLCB0ZXN0X3dlYmtpdF93
ZWJfdmlld19kZXN0cm95KTsKICAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvd2Vidmlldy9n
cmFiX2ZvY3VzIiwgdGVzdF93ZWJraXRfd2ViX3ZpZXdfZ3JhYl9mb2N1cyk7CiAgICAgZ190ZXN0
X2FkZF9mdW5jKCIvd2Via2l0L3dlYnZpZXcvd2luZG93LWZlYXR1cmVzIiwgdGVzdF93ZWJraXRf
d2ViX3ZpZXdfd2luZG93X2ZlYXR1cmVzKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQv
d2Vidmlldy93ZWJ2aWV3LWluLW9mZnNjcmVlbi13aW5kb3ctZG9lcy1ub3QtY3Jhc2giLCB0ZXN0
X3dlYmtpdF93ZWJfdmlld19pbl9vZmZzY3JlZW5fd2luZG93X2RvZXNfbm90X2NyYXNoKTsKIAog
ICAgIHJldHVybiBnX3Rlc3RfcnVuICgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdGdsb2JhbHMuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdGdsb2JhbHMuY3BwCmluZGV4IDcxNDMzYzg5M2RjODgzMjc2MWM1ZmVmNzVhYTcxZDFlZTA3
MTMxY2UuLjM5NjdjNjM3NmM0YjZiNWI4MjAyMzQzZWQ5ZWM4MjRmMjNmYjIxY2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRnbG9iYWxzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0Z2xvYmFscy5jcHAKQEAgLTI0LDYgKzI0LDcgQEAK
ICNpbmNsdWRlICJBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZS5oIgogI2luY2x1ZGUgIkNocm9tZS5o
IgogI2luY2x1ZGUgIkZyYW1lTmV0d29ya2luZ0NvbnRleHRHdGsuaCIKKyNpbmNsdWRlICJHdGtV
dGlsaXRpZXMuaCIKICNpbmNsdWRlICJHT3duUHRyLmgiCiAjaW5jbHVkZSAiR1JlZlB0ci5oIgog
I2luY2x1ZGUgIkljb25EYXRhYmFzZS5oIgpAQCAtMjI1LDEwICsyMjYsNyBAQCBzdGF0aWMgR3Rr
V2lkZ2V0KiBjdXJyZW50VG9wbGV2ZWxDYWxsYmFjayhXZWJLaXRTb3VwQXV0aERpYWxvZyogZmVh
dHVyZSwgU291cE1lcwogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIEd0a1dpZGdldCogdG9w
bGV2ZWwgPSAgZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVChjb250ZXh0LT5jb3Jl
RnJhbWUoKS0+cGFnZSgpLT5jaHJvbWUoKS0+cGxhdGZvcm1QYWdlQ2xpZW50KCkpKTsKLSAgICBp
ZiAoZ3RrX3dpZGdldF9pc190b3BsZXZlbCh0b3BsZXZlbCkpCi0gICAgICAgIHJldHVybiB0b3Bs
ZXZlbDsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiB3aWRnZXRJ
c09uc2NyZWVuVG9wbGV2ZWxXaW5kb3codG9wbGV2ZWwpID8gdG9wbGV2ZWwgOiAwOwogfQogCiAv
KioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwCmluZGV4IDQ3
Yjg4ODE4OTg2MTMzODdmZWU5OWViMWRhNjA2YThmMzJmYjU0YmQuLmQ3Y2RjYTI1ZTEzNzlhM2Yy
NjBkOTI2YmNlZjBiZjlhZGU2ZTAxMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJmcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHdlYmZyYW1lLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIkZyYW1lVmlldy5o
IgogI2luY2x1ZGUgIkdDQ29udHJvbGxlci5oIgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5o
IgorI2luY2x1ZGUgIkd0a1V0aWxpdGllcy5oIgogI2luY2x1ZGUgIkd0a1ZlcnNpb25pbmcuaCIK
ICNpbmNsdWRlICJIVE1MRnJhbWVPd25lckVsZW1lbnQuaCIKICNpbmNsdWRlICJKU0RPTUJpbmRp
bmcuaCIKQEAgLTgxMyw4ICs4MTQsNyBAQCBHdGtQcmludE9wZXJhdGlvblJlc3VsdCB3ZWJraXRf
d2ViX2ZyYW1lX3ByaW50X2Z1bGwoV2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBHdGtQcgogICAgIGdf
cmV0dXJuX3ZhbF9pZl9mYWlsKEdUS19JU19QUklOVF9PUEVSQVRJT04ob3BlcmF0aW9uKSwgR1RL
X1BSSU5UX09QRVJBVElPTl9SRVNVTFRfRVJST1IpOwogCiAgICAgR3RrV2lkZ2V0KiB0b3BMZXZl
bCA9IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKEdUS19XSURHRVQod2Via2l0X3dlYl9mcmFtZV9n
ZXRfd2ViX3ZpZXcoZnJhbWUpKSk7Ci0KLSAgICBpZiAoIWd0a193aWRnZXRfaXNfdG9wbGV2ZWwo
dG9wTGV2ZWwpKQorICAgIGlmICghd2lkZ2V0SXNPbnNjcmVlblRvcGxldmVsV2luZG93KHRvcExl
dmVsKSkKICAgICAgICAgdG9wTGV2ZWwgPSAwOwogCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNv
cmUoZnJhbWUpOwpAQCAtODUzLDcgKzg1Myw3IEBAIHZvaWQgd2Via2l0X3dlYl9mcmFtZV9wcmlu
dChXZWJLaXRXZWJGcmFtZSogZnJhbWUpCiAKICAgICBpZiAoZXJyb3IpIHsKICAgICAgICAgR3Rr
V2lkZ2V0KiB3aW5kb3cgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lER0VUKHByaXYt
PndlYlZpZXcpKTsKLSAgICAgICAgR3RrV2lkZ2V0KiBkaWFsb2cgPSBndGtfbWVzc2FnZV9kaWFs
b2dfbmV3KGd0a193aWRnZXRfaXNfdG9wbGV2ZWwod2luZG93KSA/IEdUS19XSU5ET1cod2luZG93
KSA6IDAsCisgICAgICAgIEd0a1dpZGdldCogZGlhbG9nID0gZ3RrX21lc3NhZ2VfZGlhbG9nX25l
dyh3aWRnZXRJc09uc2NyZWVuVG9wbGV2ZWxXaW5kb3cod2luZG93KSA/IEdUS19XSU5ET1cod2lu
ZG93KSA6IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBHVEtfRElBTE9HX0RFU1RST1lfV0lUSF9QQVJFTlQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHVEtfTUVTU0FHRV9FUlJPUiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19CVVRUT05T
X0NMT1NFLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZp
ZXcuY3BwIGIvU291cmNlL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCmluZGV4
IGFhNDMyYzVkNDMwZjA1NDBlYjQxNTZmMjM2MWM3ZDUwNDU2ZDA3ZmEuLmEzZTM5NWY1ZDY2ZGNi
M2RiY2U0NGI2NmJmY2NmN2ViODY5ZmFkNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2Vidmlldy5jcHAKQEAgLTkwMCw3ICs5MDAsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gd2Vi
a2l0X3dlYl92aWV3X2ZvY3VzX2luX2V2ZW50KEd0a1dpZGdldCogd2lkZ2V0LCBHZGtFdmVudEZv
Y3VzKgogICAgIC8vIFRPRE86IEltcHJvdmUgZm9jdXMgaGFuZGxpbmcgYXMgc3VnZ2VzdGVkIGlu
CiAgICAgLy8gaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY5MTAKICAg
ICBHdGtXaWRnZXQqIHRvcGxldmVsID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwod2lkZ2V0KTsK
LSAgICBpZiAoZ3RrX3dpZGdldF9pc190b3BsZXZlbCh0b3BsZXZlbCkgJiYgZ3RrX3dpbmRvd19o
YXNfdG9wbGV2ZWxfZm9jdXMoR1RLX1dJTkRPVyh0b3BsZXZlbCkpKSB7CisgICAgaWYgKHdpZGdl
dElzT25zY3JlZW5Ub3BsZXZlbFdpbmRvdyh0b3BsZXZlbCkgJiYgZ3RrX3dpbmRvd19oYXNfdG9w
bGV2ZWxfZm9jdXMoR1RLX1dJTkRPVyh0b3BsZXZlbCkpKSB7CiAgICAgICAgIFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2lkZ2V0KTsKICAgICAgICAgRm9jdXNDb250
cm9sbGVyKiBmb2N1c0NvbnRyb2xsZXIgPSBjb3JlKHdlYlZpZXcpLT5mb2N1c0NvbnRyb2xsZXIo
KTsKIApAQCAtMTEwMiw3ICsxMTAyLDEyIEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJraXRfd2ViX3Zp
ZXdfc2NyaXB0X2RpYWxvZyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBXZWJLaXRXZWJGCiAgICAg
fQogCiAgICAgd2luZG93ID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVCh3ZWJW
aWV3KSk7Ci0gICAgZGlhbG9nID0gZ3RrX21lc3NhZ2VfZGlhbG9nX25ldyhndGtfd2lkZ2V0X2lz
X3RvcGxldmVsKHdpbmRvdykgPyBHVEtfV0lORE9XKHdpbmRvdykgOiAwLCBHVEtfRElBTE9HX0RF
U1RST1lfV0lUSF9QQVJFTlQsIG1lc3NhZ2VUeXBlLCBidXR0b25zLCAiJXMiLCBtZXNzYWdlKTsK
KyAgICBkaWFsb2cgPSBndGtfbWVzc2FnZV9kaWFsb2dfbmV3KHdpZGdldElzT25zY3JlZW5Ub3Bs
ZXZlbFdpbmRvdyh3aW5kb3cpID8gR1RLX1dJTkRPVyh3aW5kb3cpIDogMCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEdUS19ESUFMT0dfREVTVFJPWV9XSVRIX1BBUkVOVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2VUeXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0dG9ucywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICIlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtZXNzYWdlKTsKICAgICBnY2hhciogdGl0bGUgPSBnX3N0cmNvbmNhdCgiSmF2YVNjcmlw
dCAtICIsIHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3VyaShmcmFtZSksIE5VTEwpOwogICAgIGd0a193
aW5kb3dfc2V0X3RpdGxlKEdUS19XSU5ET1coZGlhbG9nKSwgdGl0bGUpOwogICAgIGdfZnJlZSh0
aXRsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJL
aXRVSUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRV
SUNsaWVudC5jcHAKaW5kZXggMDU2ZThiYTdhYTgyMzU1YzA4ZjMwMDdiZjdmN2JlMDNmYzc0Mzhl
OC4uYTY1OWFkMzE0OWZkMjdiOTBlODNhN2I3YjQ3N2JlOWU0ZmZmMGY2NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0VUlDbGllbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFVJQ2xpZW50LmNwcApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMSwgMjAxMiBJZ2FsaWEgUy5MLgogICoKICAqIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBA
IC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlld1ByaXZhdGUuaCIKICNpbmNs
dWRlICJXZWJLaXRXaW5kb3dQcm9wZXJ0aWVzUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYlBhZ2VQ
cm94eS5oIgorI2luY2x1ZGUgPFdlYkNvcmUvR3RrVXRpbGl0aWVzLmg+CiAKIHVzaW5nIG5hbWVz
cGFjZSBXZWJLaXQ7CiAKQEAgLTExMSw3ICsxMTIsNyBAQCBzdGF0aWMgV0tSZWN0IGdldFdpbmRv
d0ZyYW1lKFdLUGFnZVJlZiBwYWdlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewogICAgIEdk
a1JlY3RhbmdsZSBnZW9tZXRyeSA9IHsgMCwgMCwgMCwgMCB9OwogICAgIEd0a1dpZGdldCogd2lu
ZG93ID0gZ3RrX3dpZGdldF9nZXRfdG9wbGV2ZWwoR1RLX1dJREdFVChjbGllbnRJbmZvKSk7Ci0g
ICAgaWYgKGd0a193aWRnZXRfaXNfdG9wbGV2ZWwod2luZG93KSAmJiBndGtfd2lkZ2V0X2dldF92
aXNpYmxlKHdpbmRvdykpIHsKKyAgICBpZiAoV2ViQ29yZTo6d2lkZ2V0SXNPbnNjcmVlblRvcGxl
dmVsV2luZG93KHdpbmRvdykgJiYgZ3RrX3dpZGdldF9nZXRfdmlzaWJsZSh3aW5kb3cpKSB7CiAg
ICAgICAgIGd0a193aW5kb3dfZ2V0X3Bvc2l0aW9uKEdUS19XSU5ET1cod2luZG93KSwgJmdlb21l
dHJ5LngsICZnZW9tZXRyeS55KTsKICAgICAgICAgZ3RrX3dpbmRvd19nZXRfc2l6ZShHVEtfV0lO
RE9XKHdpbmRvdyksICZnZW9tZXRyeS53aWR0aCwgJmdlb21ldHJ5LmhlaWdodCk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNw
cAppbmRleCBlOGJjYWVlZGE3ZWU0NWNkYjRkNjAyMDRiYzFjNjhhODE4MmYwYjVhLi5mY2FhMmRi
MWQxMTQ2NjI1ZWViYzZjYjllMWJlMzAwYTEyMzNlN2ZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMzYsNiArMzYsNyBA
QAogI2luY2x1ZGUgIldlYktpdFByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdJY29uLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9HdGtVdGls
aXRpZXMuaD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2luY2x1ZGUgPHd0Zi9nb2Jq
ZWN0L0dPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvZ29iamVjdC9HUmVmUHRyLmg+CkBAIC0xMDks
NyArMTEwLDcgQEAgc3RhdGljIEd0a1dpZGdldCogd2Via2l0V2ViVmlld0NyZWF0ZShXZWJLaXRX
ZWJWaWV3KikKIHN0YXRpYyBHdGtXaWRnZXQqIHdlYmtpdFdlYlZpZXdDcmVhdGVKYXZhU2NyaXB0
RGlhbG9nKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIEd0a01lc3NhZ2VUeXBlIHR5cGUsIEd0a0J1
dHRvbnNUeXBlIGJ1dHRvbnMsIGludCBkZWZhdWx0UmVzcG9uc2UsIGNvbnN0IGNoYXIqIG1lc3Nh
Z2UpCiB7CiAgICAgR3RrV2lkZ2V0KiBwYXJlbnQgPSBndGtfd2lkZ2V0X2dldF90b3BsZXZlbChH
VEtfV0lER0VUKHdlYlZpZXcpKTsKLSAgICBHdGtXaWRnZXQqIGRpYWxvZyA9IGd0a19tZXNzYWdl
X2RpYWxvZ19uZXcoZ3RrX3dpZGdldF9pc190b3BsZXZlbChwYXJlbnQpID8gR1RLX1dJTkRPVyhw
YXJlbnQpIDogMCwKKyAgICBHdGtXaWRnZXQqIGRpYWxvZyA9IGd0a19tZXNzYWdlX2RpYWxvZ19u
ZXcod2lkZ2V0SXNPbnNjcmVlblRvcGxldmVsV2luZG93KHBhcmVudCkgPyBHVEtfV0lORE9XKHBh
cmVudCkgOiAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBHVEtfRElBTE9HX0RFU1RST1lfV0lUSF9QQVJFTlQsIHR5cGUsIGJ1dHRvbnMsICIlcyIsIG1l
c3NhZ2UpOwogICAgIEdPd25QdHI8Y2hhcj4gdGl0bGUoZ19zdHJkdXBfcHJpbnRmKCJKYXZhU2Ny
aXB0IC0gJXMiLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VyaSh3ZWJWaWV3KSkpOwogICAgIGd0a193
aW5kb3dfc2V0X3RpdGxlKEdUS19XSU5ET1coZGlhbG9nKSwgdGl0bGUuZ2V0KCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2Uu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViVmlld0Jhc2Uu
Y3BwCmluZGV4IDdkNzVhOGZjNTBkN2Q3ZDlkODgwMTVjYzRlMDQ5MzFiNzMwYWZhMzYuLmQ5Y2Nh
YTMyYWQ3ZTVkMjEyYjJkYTM0NGExNjA3OWQ3ZTBhYjM2ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5jcHAKQEAgLTE0
Miw3ICsxNDIsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVJlYWxpemUoR3RrV2lk
Z2V0KiB3aWRnZXQpCiAgICAgZ3RrX2ltX2NvbnRleHRfc2V0X2NsaWVudF93aW5kb3cocHJpdi0+
aW1Db250ZXh0LmdldCgpLCB3aW5kb3cpOwogCiAgICAgR3RrV2lkZ2V0KiB0b3BsZXZlbCA9IGd0
a193aWRnZXRfZ2V0X3RvcGxldmVsKHdpZGdldCk7Ci0gICAgaWYgKGd0a193aWRnZXRfaXNfdG9w
bGV2ZWwodG9wbGV2ZWwpICYmIEdUS19JU19XSU5ET1codG9wbGV2ZWwpKSB7CisgICAgaWYgKHdp
ZGdldElzT25zY3JlZW5Ub3BsZXZlbFdpbmRvdyh0b3BsZXZlbCkpIHsKICAgICAgICAgd2Via2l0
V2ViVmlld0Jhc2VOb3RpZnlSZXNpemVyU2l6ZUZvcldpbmRvdyh3ZWJWaWV3LCBHVEtfV0lORE9X
KHRvcGxldmVsKSk7CiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3QodG9wbGV2ZWwsICJub3RpZnk6
OnJlc2l6ZS1ncmlwLXZpc2libGUiLAogICAgICAgICAgICAgICAgICAgICAgICAgIEdfQ0FMTEJB
Q0sodG9wbGV2ZWxXaW5kb3dSZXNpemVHcmlwVmlzaWJpbGl0eUNoYW5nZWQpLCB3ZWJWaWV3KTsK
QEAgLTIxNCw3ICsyMTQsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRXZWJWaWV3QmFzZVNpemVBbGxv
Y2F0ZShHdGtXaWRnZXQqIHdpZGdldCwgR3RrQWxsb2NhdGlvbiogYWxsbwogICAgIHByaXYtPnBh
Z2VQcm94eS0+ZHJhd2luZ0FyZWEoKS0+c2V0U2l6ZShJbnRTaXplKGFsbG9jYXRpb24tPndpZHRo
LCBhbGxvY2F0aW9uLT5oZWlnaHQpLCBJbnRTaXplKCkpOwogCiAgICAgR3RrV2lkZ2V0KiB0b3Bs
ZXZlbCA9IGd0a193aWRnZXRfZ2V0X3RvcGxldmVsKHdpZGdldCk7Ci0gICAgaWYgKGd0a193aWRn
ZXRfaXNfdG9wbGV2ZWwodG9wbGV2ZWwpICYmIEdUS19JU19XSU5ET1codG9wbGV2ZWwpKQorICAg
IGlmICh3aWRnZXRJc09uc2NyZWVuVG9wbGV2ZWxXaW5kb3codG9wbGV2ZWwpKQogICAgICAgICB3
ZWJraXRXZWJWaWV3QmFzZU5vdGlmeVJlc2l6ZXJTaXplRm9yV2luZG93KHdlYlZpZXdCYXNlLCBH
VEtfV0lORE9XKHRvcGxldmVsKSk7CiB9CiAKQEAgLTIyNCw3ICsyMjQsNyBAQCBzdGF0aWMgZ2Jv
b2xlYW4gd2Via2l0V2ViVmlld0Jhc2VGb2N1c0luRXZlbnQoR3RrV2lkZ2V0KiB3aWRnZXQsIEdk
a0V2ZW50Rm9jdXMqCiAgICAgV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRlKiBwcml2ID0gd2ViVmll
d0Jhc2UtPnByaXY7CiAKICAgICBHdGtXaWRnZXQqIHRvcGxldmVsID0gZ3RrX3dpZGdldF9nZXRf
dG9wbGV2ZWwod2lkZ2V0KTsKLSAgICBpZiAoZ3RrX3dpZGdldF9pc190b3BsZXZlbCh0b3BsZXZl
bCkgJiYgZ3RrX3dpbmRvd19oYXNfdG9wbGV2ZWxfZm9jdXMoR1RLX1dJTkRPVyh0b3BsZXZlbCkp
KSB7CisgICAgaWYgKHdpZGdldElzT25zY3JlZW5Ub3BsZXZlbFdpbmRvdyh0b3BsZXZlbCkgJiYg
Z3RrX3dpbmRvd19oYXNfdG9wbGV2ZWxfZm9jdXMoR1RLX1dJTkRPVyh0b3BsZXZlbCkpKSB7CiAg
ICAgICAgIGd0a19pbV9jb250ZXh0X2ZvY3VzX2luKHByaXYtPmltQ29udGV4dC5nZXQoKSk7CiAg
ICAgICAgIGlmICghcHJpdi0+aXNQYWdlQWN0aXZlKSB7CiAgICAgICAgICAgICBwcml2LT5pc1Bh
Z2VBY3RpdmUgPSBUUlVFOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>