<?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>117631</bug_id>
          
          <creation_ts>2013-06-14 01:57:30 -0700</creation_ts>
          <short_desc>[GTK] Provide search functionality to MiniBrowser</short_desc>
          <delta_ts>2013-10-10 06:17:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Andres Gomez Garcia">agomez</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gustavo</cc>
    
    <cc>kling</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pnormand</cc>
    
    <cc>rego</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>900461</commentid>
    <comment_count>0</comment_count>
    <who name="Andres Gomez Garcia">agomez</who>
    <bug_when>2013-06-14 01:57:30 -0700</bug_when>
    <thetext>Add search to MiniBrowser, useful when testing some bugs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900469</commentid>
    <comment_count>1</comment_count>
      <attachid>204686</attachid>
    <who name="Andres Gomez Garcia">agomez</who>
    <bug_when>2013-06-14 02:14:21 -0700</bug_when>
    <thetext>Created attachment 204686
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>900471</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-14 02:16:27 -0700</bug_when>
    <thetext>Attachment 204686 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/MiniBrowser/gtk/BrowserSearchBar.c&apos;, u&apos;Tools/MiniBrowser/gtk/BrowserSearchBar.h&apos;, u&apos;Tools/MiniBrowser/gtk/BrowserWindow.c&apos;, u&apos;Tools/MiniBrowser/gtk/GNUmakefile.am&apos;]&quot; exit_code: 1
Tools/MiniBrowser/gtk/BrowserSearchBar.h:48:  Extra space before ( in function call  [whitespace/parens] [4]
Tools/MiniBrowser/gtk/BrowserSearchBar.c:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Tools/MiniBrowser/gtk/BrowserSearchBar.c:188:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Tools/MiniBrowser/gtk/BrowserSearchBar.c:189:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Tools/MiniBrowser/gtk/BrowserSearchBar.c:190:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Tools/MiniBrowser/gtk/BrowserSearchBar.c:191:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Tools/MiniBrowser/gtk/BrowserSearchBar.c:192:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Tools/MiniBrowser/gtk/BrowserSearchBar.c:193:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 8 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>900478</commentid>
    <comment_count>3</comment_count>
    <who name="Andres Gomez Garcia">agomez</who>
    <bug_when>2013-06-14 02:59:39 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Attachment 204686 [details] did not pass style-queue:
...
&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.h:48:  Extra space before ( in function call  [whitespace/parens] [4]

GObject signal definition. Without that space will be awful.

&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]

MiniBrowser doesn&apos;t use the config.h. Harmless false positive, not to be reported as a check-webkit-style bug.

&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:188:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:189:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:190:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:191:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:192:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:193:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]

GObject signal addition following GTK+ style. IMHO, a harmless false positive, not to be reported as a check-webkit-style bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>901845</commentid>
    <comment_count>4</comment_count>
      <attachid>204686</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-06-19 10:40:45 -0700</bug_when>
    <thetext>Comment on attachment 204686
Patch

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

r- mainly because of the coding style

&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:29
&gt; +#define BROWSER_SEARCH_BAR_GET_PRIVATE(object) (G_TYPE_INSTANCE_GET_PRIVATE((object), BROWSER_TYPE_SEARCH_BAR, BrowserSearchBarPrivate))

Don&apos;t do this, call G_TYPE_INSTANCE_GET_PRIVATE directly in _init since it&apos;s the only place where this is used.

&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:41
&gt; +    LastSignal

We don&apos;t follow the style for the signals enum, use CLOSE, LAST_SIGNAL

&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:51
&gt; +struct _BrowserSearchBar {
&gt; +    GtkBox parent;
&gt; +
&gt; +    /*&lt; private &gt;*/
&gt; +    BrowserSearchBarPrivate *priv;
&gt; +};

Since you are defining the struct in the c file and nobody is going to inherit from this object, you can get rid of the private struct.

&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:56
&gt; +/* private functions */

Comments should start with capital and finish with period, but I would just remove this comment here.

&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:58
&gt; +static void do_search(BrowserSearchBar *searchBar)

this should be doSearch, use the wk coding style for non-generated private methods.

&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:67
&gt; +    WebKitFindOptions options = WEBKIT_FIND_OPTIONS_NONE;

This is unused if you return early in the if below, so move this after it.

&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:80
&gt; +static void search_close_button_clicked_cb(GtkButton *button, BrowserSearchBar *searchBar)

Wrong coding style here too, and the same for all other private functions that are not generrated. Also use Callback instead of the abbreviation cb

&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:85
&gt; +static void search_entry_icon_released_cb(GtkEntry *entry, GtkEntryIconPosition icon_pos, GdkEvent  *event, BrowserSearchBar *searchBar)

icon_pos -&gt;iconPosition, or simply omit it if it&apos;s unused. Extra space in GdkEvent  *event.

&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:117
&gt; +static void search_entry_activated_cb(GtkEntry *entry, BrowserSearchBar *searchBar)
&gt; +{
&gt; +    browser_search_bar_search_next(searchBar);
&gt; +}
&gt; +
&gt; +static void search_prev_button_clicked_cb(GtkButton *button, BrowserSearchBar *searchBar)
&gt; +{
&gt; +    browser_search_bar_search_previous(searchBar);
&gt; +}
&gt; +
&gt; +static void search_next_button_clicked_cb(GtkButton *button, BrowserSearchBar *searchBar)
&gt; +{
&gt; +    browser_search_bar_search_next(searchBar);
&gt; +}

You can probably avoid all these using g_signal_connect_swapped and passing browser_search_bar_search_next/previous as callbacks.

&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:130
&gt; +    GtkWidget *hBox;
&gt; +    GtkWidget *closeButton;
&gt; +    GtkWidget *label;
&gt; +    GtkWidget *prevButton;
&gt; +    GtkWidget *nextButton;

Do not add a declarations block.

&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:199
&gt; +/* public functions */

Same comment about the comment.

&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:208
&gt; +    g_weak_ref_init(&amp;priv-&gt;weak, controller);

Why using this weak reaf instead of just getting a reference? I think you don&apos;t even need to keep a reference, since the find controller will always be available while the web view is alive

&gt; Tools/MiniBrowser/gtk/BrowserWindow.c:477
&gt; +        browser_search_bar_request_close(BROWSER_SEARCH_BAR((window-&gt;searchBar)));

Extra parentheses there in BROWSER_SEARCH_BAR((window-&gt;searchBar)). Why don&apos;t you simply close the search bar here? this calls request_close, that emits close signal, that ends up calling searchBarCloseCallback that calls browser_search_bar_close(). It seems to me that we can just call browser_search_bar_close</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902130</commentid>
    <comment_count>5</comment_count>
    <who name="Andres Gomez Garcia">agomez</who>
    <bug_when>2013-06-20 06:45:02 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 204686 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=204686&amp;action=review
&gt; 
&gt; r- mainly because of the coding style
&gt; 

&gt; Since you are defining the struct in the c file and nobody is going to inherit from this object, you can get rid of the private struct.

Totally removed.

&gt; &gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:208
&gt; &gt; +    g_weak_ref_init(&amp;priv-&gt;weak, controller);
&gt; 
&gt; Why using this weak reaf instead of just getting a reference? I think you don&apos;t even need to keep a reference, since the find controller will always be available while the web view is alive
&gt; 
&gt; &gt; Tools/MiniBrowser/gtk/BrowserWindow.c:477
&gt; &gt; +        browser_search_bar_request_close(BROWSER_SEARCH_BAR((window-&gt;searchBar)));
&gt; 
&gt; Extra parentheses there in BROWSER_SEARCH_BAR((window-&gt;searchBar)). Why don&apos;t you simply close the search bar here? this calls request_close, that emits close signal, that ends up calling searchBarCloseCallback that calls browser_search_bar_close(). It seems to me that we can just call browser_search_bar_close

Yeah, I think I was doing too much defensive programming ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902132</commentid>
    <comment_count>6</comment_count>
      <attachid>205085</attachid>
    <who name="Andres Gomez Garcia">agomez</who>
    <bug_when>2013-06-20 06:47:44 -0700</bug_when>
    <thetext>Created attachment 205085
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902133</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-06-20 06:48:46 -0700</bug_when>
    <thetext>Attachment 205085 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/MiniBrowser/gtk/BrowserSearchBar.c&apos;, u&apos;Tools/MiniBrowser/gtk/BrowserSearchBar.h&apos;, u&apos;Tools/MiniBrowser/gtk/BrowserWindow.c&apos;, u&apos;Tools/MiniBrowser/gtk/GNUmakefile.am&apos;]&quot; exit_code: 1
Tools/MiniBrowser/gtk/BrowserSearchBar.c:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
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>902134</commentid>
    <comment_count>8</comment_count>
    <who name="Andres Gomez Garcia">agomez</who>
    <bug_when>2013-06-20 06:49:31 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Attachment 205085 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/MiniBrowser/gtk/BrowserSearchBar.c&apos;, u&apos;Tools/MiniBrowser/gtk/BrowserSearchBar.h&apos;, u&apos;Tools/MiniBrowser/gtk/BrowserWindow.c&apos;, u&apos;Tools/MiniBrowser/gtk/GNUmakefile.am&apos;]&quot; exit_code: 1
&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
&gt; Total errors found: 1 in 5 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

As I said in comment #3, MiniBrowser doesn&apos;t use the config.h. Harmless false positive, not to be reported as a check-webkit-style bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908317</commentid>
    <comment_count>9</comment_count>
      <attachid>205085</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-07-15 00:42:14 -0700</bug_when>
    <thetext>Comment on attachment 205085
Patch

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

Looks good to me in general, there are just a few minor details. Thanks!

&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:60
&gt; +static void searchEntryIconReleasedCallback(BrowserSearchBar *searchBar)

I would call this searchEntryClearIconReleasedCallback to make more obvious this is the callback of the clear icon.

&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:146
&gt; +

There&apos;s an extra line here.

&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.h:52
&gt; +void browser_search_bar_search_next(BrowserSearchBar *);
&gt; +void browser_search_bar_search_previous(BrowserSearchBar *);

These are not used outside BrowserSearchBar, make them private.

&gt; Tools/MiniBrowser/gtk/BrowserWindow.c:310
&gt; +    browser_search_bar_close(BROWSER_SEARCH_BAR((window-&gt;searchBar)));

Extra parentheses there. BROWSER_SEARCH_BAR((

&gt; Tools/MiniBrowser/gtk/BrowserWindow.c:324
&gt; +        browser_search_bar_open(BROWSER_SEARCH_BAR((window-&gt;searchBar)));

And here too

&gt; Tools/MiniBrowser/gtk/BrowserWindow.c:583
&gt; +    window-&gt;searchBarVisible = FALSE;

You don&apos;t need this, this is already FALSE at this point.

&gt; Tools/MiniBrowser/gtk/BrowserWindow.c:627
&gt; +    window-&gt;searchBar = GTK_WIDGET(browser_search_bar_new(window-&gt;webView));

browser_search_bar_new returns a GtkWidget *, you don&apos;t need the cast.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908412</commentid>
    <comment_count>10</comment_count>
    <who name="Andres Gomez Garcia">agomez</who>
    <bug_when>2013-07-15 08:31:46 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; &gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:60
&gt; &gt; +static void searchEntryIconReleasedCallback(BrowserSearchBar *searchBar)
&gt; 
&gt; I would call this searchEntryClearIconReleasedCallback to make more obvious this is the callback of the clear icon.

I&apos;ve added now the primary icon so I&apos;ve kept the callback name.
 
&gt; &gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:146
&gt; &gt; +
&gt; 
&gt; There&apos;s an extra line here.

Corrected.

&gt; &gt; Tools/MiniBrowser/gtk/BrowserSearchBar.h:52
&gt; &gt; +void browser_search_bar_search_next(BrowserSearchBar *);
&gt; &gt; +void browser_search_bar_search_previous(BrowserSearchBar *);
&gt; 
&gt; These are not used outside BrowserSearchBar, make them private.

Done.

&gt; &gt; Tools/MiniBrowser/gtk/BrowserWindow.c:310
&gt; &gt; +    browser_search_bar_close(BROWSER_SEARCH_BAR((window-&gt;searchBar)));
&gt; 
&gt; Extra parentheses there. BROWSER_SEARCH_BAR((
&gt; 
&gt; &gt; Tools/MiniBrowser/gtk/BrowserWindow.c:324
&gt; &gt; +        browser_search_bar_open(BROWSER_SEARCH_BAR((window-&gt;searchBar)));
&gt; 
&gt; And here too

Done.

&gt; &gt; Tools/MiniBrowser/gtk/BrowserWindow.c:583
&gt; &gt; +    window-&gt;searchBarVisible = FALSE;
&gt; 
&gt; You don&apos;t need this, this is already FALSE at this point.

Done.

&gt; &gt; Tools/MiniBrowser/gtk/BrowserWindow.c:627
&gt; &gt; +    window-&gt;searchBar = GTK_WIDGET(browser_search_bar_new(window-&gt;webView));
&gt; 
&gt; browser_search_bar_new returns a GtkWidget *, you don&apos;t need the cast.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908421</commentid>
    <comment_count>11</comment_count>
      <attachid>206667</attachid>
    <who name="Andres Gomez Garcia">agomez</who>
    <bug_when>2013-07-15 09:02:32 -0700</bug_when>
    <thetext>Created attachment 206667
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>908423</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-15 09:03:54 -0700</bug_when>
    <thetext>Attachment 206667 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/MiniBrowser/gtk/BrowserSearchBar.c&apos;, u&apos;Tools/MiniBrowser/gtk/BrowserSearchBar.h&apos;, u&apos;Tools/MiniBrowser/gtk/BrowserWindow.c&apos;, u&apos;Tools/MiniBrowser/gtk/GNUmakefile.am&apos;]&quot; exit_code: 1
Tools/MiniBrowser/gtk/BrowserSearchBar.c:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
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>908424</commentid>
    <comment_count>13</comment_count>
    <who name="Andres Gomez Garcia">agomez</who>
    <bug_when>2013-07-15 09:07:18 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; Attachment 206667 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/MiniBrowser/gtk/BrowserSearchBar.c&apos;, u&apos;Tools/MiniBrowser/gtk/BrowserSearchBar.h&apos;, u&apos;Tools/MiniBrowser/gtk/BrowserWindow.c&apos;, u&apos;Tools/MiniBrowser/gtk/GNUmakefile.am&apos;]&quot; exit_code: 1
&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
&gt; Total errors found: 1 in 5 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

See comment #8.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909685</commentid>
    <comment_count>14</comment_count>
      <attachid>206667</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-07-18 02:54:16 -0700</bug_when>
    <thetext>Comment on attachment 206667
Patch

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

Looks good, but I&apos;ve noticed some weird things after trying it out.

&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:45
&gt; +    if (!g_strcmp0(text, &quot;&quot;))
&gt; +        return;

I guess we should finish the search operation in this case.

&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:77
&gt; +    case GTK_ENTRY_ICON_PRIMARY:
&gt; +        searchNext(searchBar);
&gt; +        break;

This is very weird, what I expect of a primary button like this one is a menu with search options, not just another button to jump to the next search result. So, I would simply remove it, it duplicates the next button functionality and makes the entry more cluttered.

&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:82
&gt; +        gtk_entry_set_text(GTK_ENTRY(searchBar-&gt;entry), &quot;&quot;);
&gt; +
&gt; +        WebKitFindController *controller = webkit_web_view_get_find_controller(searchBar-&gt;webView);
&gt; +        webkit_find_controller_search_finish(controller);

Do we really need this? I think setting the entry text should be enough, since the changed signal will be emitted

&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:123
&gt; +    GtkWidget *closeButton = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
&gt; +    gtk_box_pack_start(GTK_BOX(hBox), closeButton, FALSE, FALSE, 0);

The find bar is open, but also closed with the button in the toolbar, I would not duplicate the functionality. I agree it&apos;s confusing because the button in the toolbar works as a toggle button but it&apos;s not a toggle button. So I would either convert the tool button into a toggle button and remove this one or leave this one (using only the icon and moving it to the right of the find bar) and make the tool button do nothing when the find bar is already shown.

&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:138
&gt; +    GtkWidget *prevButton = gtk_button_new_from_stock(GTK_STOCK_GO_BACK);
&gt; +    gtk_box_pack_start(GTK_BOX(hBox), prevButton, FALSE, FALSE, 0);
&gt; +
&gt; +    GtkWidget *nextButton = gtk_button_new_from_stock(GTK_STOCK_GO_FORWARD);
&gt; +    gtk_box_pack_start(GTK_BOX(hBox), nextButton, FALSE, FALSE, 0);

Using stock icons for these is a bit confusing, you see a huge buttons saying Back/Forward, I would use buttons without labels and up/down icons instead of back/forward.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>909718</commentid>
    <comment_count>15</comment_count>
      <attachid>206667</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-07-18 06:00:18 -0700</bug_when>
    <thetext>Comment on attachment 206667
Patch

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

&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:182
&gt; +    gtk_widget_show(GTK_WIDGET(searchBar));

Forgot to mention that it would be nice if the search entry is focused when the search bar is shown</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910984</commentid>
    <comment_count>16</comment_count>
      <attachid>207320</attachid>
    <who name="Andres Gomez Garcia">agomez</who>
    <bug_when>2013-07-23 04:40:33 -0700</bug_when>
    <thetext>Created attachment 207320
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910985</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-07-23 04:41:51 -0700</bug_when>
    <thetext>Attachment 207320 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/MiniBrowser/gtk/BrowserSearchBar.c&apos;, u&apos;Tools/MiniBrowser/gtk/BrowserSearchBar.h&apos;, u&apos;Tools/MiniBrowser/gtk/BrowserWindow.c&apos;, u&apos;Tools/MiniBrowser/gtk/GNUmakefile.am&apos;]&quot; exit_code: 1
Tools/MiniBrowser/gtk/BrowserSearchBar.c:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
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>910987</commentid>
    <comment_count>18</comment_count>
    <who name="Andres Gomez Garcia">agomez</who>
    <bug_when>2013-07-23 04:45:23 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; &gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:45
&gt; &gt; +    if (!g_strcmp0(text, &quot;&quot;))
&gt; &gt; +        return;
&gt; 
&gt; I guess we should finish the search operation in this case.

Done.

&gt; &gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:77
&gt; &gt; +    case GTK_ENTRY_ICON_PRIMARY:
&gt; &gt; +        searchNext(searchBar);
&gt; &gt; +        break;
&gt; 
&gt; This is very weird, what I expect of a primary button like this one is a menu with search options, not just another button to jump to the next search result. So, I would simply remove it, it duplicates the next button functionality and makes the entry more cluttered.

As I&apos;ve redesigned the whole thing, now it pops up a context menu.

&gt; &gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:82
&gt; &gt; +        gtk_entry_set_text(GTK_ENTRY(searchBar-&gt;entry), &quot;&quot;);
&gt; &gt; +
&gt; &gt; +        WebKitFindController *controller = webkit_web_view_get_find_controller(searchBar-&gt;webView);
&gt; &gt; +        webkit_find_controller_search_finish(controller);
&gt; 
&gt; Do we really need this? I think setting the entry text should be enough, since the changed signal will be emitted

Done.

 
&gt; &gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:123
&gt; &gt; +    GtkWidget *closeButton = gtk_button_new_from_stock(GTK_STOCK_CLOSE);
&gt; &gt; +    gtk_box_pack_start(GTK_BOX(hBox), closeButton, FALSE, FALSE, 0);
&gt; 
&gt; The find bar is open, but also closed with the button in the toolbar, I would not duplicate the functionality. I agree it&apos;s confusing because the button in the toolbar works as a toggle button but it&apos;s not a toggle button. So I would either convert the tool button into a toggle button and remove this one or leave this one (using only the icon and moving it to the right of the find bar) and make the tool button do nothing when the find bar is already shown.

Done.
 
&gt; &gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:138
&gt; &gt; +    GtkWidget *prevButton = gtk_button_new_from_stock(GTK_STOCK_GO_BACK);
&gt; &gt; +    gtk_box_pack_start(GTK_BOX(hBox), prevButton, FALSE, FALSE, 0);
&gt; &gt; +
&gt; &gt; +    GtkWidget *nextButton = gtk_button_new_from_stock(GTK_STOCK_GO_FORWARD);
&gt; &gt; +    gtk_box_pack_start(GTK_BOX(hBox), nextButton, FALSE, FALSE, 0);
&gt; 
&gt; Using stock icons for these is a bit confusing, you see a huge buttons saying Back/Forward, I would use buttons without labels and up/down icons instead of back/forward.

Done.

(In reply to comment #15)
&gt; &gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:182
&gt; &gt; +    gtk_widget_show(GTK_WIDGET(searchBar));
&gt; 
&gt; Forgot to mention that it would be nice if the search entry is focused when the search bar is shown

Done.

---

I&apos;ve redesigned the UI. Now, the search bar is at the top with the entry in the middle and small up/down buttons and small close button at the right side.

The search entry has two icons to clear and to show a pop up menu with extended search options.

In addition, I&apos;ve added several keyboard accelerators.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>910988</commentid>
    <comment_count>19</comment_count>
    <who name="Andres Gomez Garcia">agomez</who>
    <bug_when>2013-07-23 04:45:51 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Attachment 207320 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/MiniBrowser/gtk/BrowserSearchBar.c&apos;, u&apos;Tools/MiniBrowser/gtk/BrowserSearchBar.h&apos;, u&apos;Tools/MiniBrowser/gtk/BrowserWindow.c&apos;, u&apos;Tools/MiniBrowser/gtk/GNUmakefile.am&apos;]&quot; exit_code: 1
&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
&gt; Total errors found: 1 in 5 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

See comment #8.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911894</commentid>
    <comment_count>20</comment_count>
      <attachid>207320</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-07-26 00:40:45 -0700</bug_when>
    <thetext>Comment on attachment 207320
Patch

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

Search bar look a lot nicer now, but I think it should be packed after the main toolbar. There are some other minor issues to fix, we are pretty close, thanks!

&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:48
&gt; +    if (!g_strcmp0(text, &quot;&quot;)) {

You can use gtk_entry_get_text_length here to know if there&apos;s something and only get the text below when needed.

&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:69
&gt; +    WebKitFindController *controller = webkit_web_view_get_find_controller(searchBar-&gt;webView);
&gt; +    webkit_find_controller_search_next(controller);

This could be a single line

&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:75
&gt; +    WebKitFindController *controller = webkit_web_view_get_find_controller(searchBar-&gt;webView);
&gt; +    webkit_find_controller_search_previous(controller);

Ditto.

&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:83
&gt; +static void searchEntryIconReleasedCallback(BrowserSearchBar *searchBar, GtkEntryIconPosition iconPos, GdkEvent *event)

iconPos -&gt; iconPosition.

&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:87
&gt; +        if (event-&gt;type == GDK_BUTTON_RELEASE) {

This is always TRUE, this signal is emitted only on button-release-event

&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:130
&gt; +    gtk_style_context_add_class(gtk_widget_get_style_context(GTK_WIDGET(searchBar)), GTK_STYLE_CLASS_TOOLBAR);

Why not inheriting from GtkToolbar instead of GtkBox + Toolbar style class?

&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:151
&gt; +    gtk_button_set_relief(GTK_BUTTON(searchBar-&gt;prevButton), GTK_RELIEF_NONE);

You should also make this button not focusable, so that current focused widget doesn&apos;t lose the focus when clicking this buttons. Use gtk_button_set_focus_on_click

&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:157
&gt; +    gtk_button_set_relief(GTK_BUTTON(searchBar-&gt;nextButton), GTK_RELIEF_NONE);

Ditto.

&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:194
&gt; +    g_object_unref(BROWSER_SEARCH_BAR(object)-&gt;webView);
&gt; +    g_object_unref(BROWSER_SEARCH_BAR(object)-&gt;optionsMenu);

Don&apos;t do the cast twice, use a local variable.

&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:218
&gt; +    g_return_if_fail(searchBar);

Use BROWSER_IS_SEARCH_BAR

&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:230
&gt; +    g_return_if_fail(searchBar);

Ditto.

&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:239
&gt; +    g_return_if_fail(searchBar);

Ditto.

&gt; Tools/MiniBrowser/gtk/BrowserWindow.c:483
&gt; +    if (window-&gt;searchBarVisible)
&gt; +        browser_search_bar_open(BROWSER_SEARCH_BAR(window-&gt;searchBar));

I think you can call open unconditionally, so that if the search bar is already open, the entry will be focused.

&gt; Tools/MiniBrowser/gtk/BrowserWindow.c:544
&gt; +    g_object_unref(window-&gt;accelGroup);

Now that the accel group is used out of this function, I don&apos;t think it&apos;s a good idea to release your reference so early, you should do it in the browser window dispose/finalize.

&gt; Tools/MiniBrowser/gtk/BrowserWindow.c:583
&gt; +    window-&gt;searchItem = GTK_WIDGET(item);

Why do we need to keep this pointer? where is it used?

&gt; Tools/MiniBrowser/gtk/BrowserWindow.c:633
&gt; +    browser_search_bar_add_accelerators(window-&gt;searchBar, window-&gt;accelGroup);

You need a cast here, since window-&gt;searchBar is a GtkWidget and browser_search_bar_add_accelerators expects a BrowserSearchBar

&gt; Tools/MiniBrowser/gtk/BrowserWindow.c:635
&gt; +    gtk_box_reorder_child(GTK_BOX(window-&gt;mainBox), window-&gt;searchBar, 0);

Why showing the search bar over the main toolbar instead of below? It looks really weird.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>915057</commentid>
    <comment_count>21</comment_count>
    <who name="Andres Gomez Garcia">agomez</who>
    <bug_when>2013-08-07 01:27:23 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; &gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:48
&gt; &gt; +    if (!g_strcmp0(text, &quot;&quot;)) {
&gt; 
&gt; You can use gtk_entry_get_text_length here to know if there&apos;s something and only get the text below when needed.

Done.

&gt; &gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:69
&gt; &gt; +    WebKitFindController *controller = webkit_web_view_get_find_controller(searchBar-&gt;webView);
&gt; &gt; +    webkit_find_controller_search_next(controller);
&gt; 
&gt; This could be a single line
&gt; 
&gt; &gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:75
&gt; &gt; +    WebKitFindController *controller = webkit_web_view_get_find_controller(searchBar-&gt;webView);
&gt; &gt; +    webkit_find_controller_search_previous(controller);
&gt; 
&gt; Ditto.

Done.

&gt; &gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:83
&gt; &gt; +static void searchEntryIconReleasedCallback(BrowserSearchBar *searchBar, GtkEntryIconPosition iconPos, GdkEvent *event)
&gt; 
&gt; iconPos -&gt; iconPosition.

Done.
 
&gt; &gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:87
&gt; &gt; +        if (event-&gt;type == GDK_BUTTON_RELEASE) {
&gt; 
&gt; This is always TRUE, this signal is emitted only on button-release-event

Removed, but also split in 2 different callbacks. Now, the Primary button menu is called in &quot;button-press&quot; instead of in &quot;button-release&quot;. It is nicer since the menu will appear just in its proper position.

&gt; &gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:130
&gt; &gt; +    gtk_style_context_add_class(gtk_widget_get_style_context(GTK_WIDGET(searchBar)), GTK_STYLE_CLASS_TOOLBAR);
&gt; 
&gt; Why not inheriting from GtkToolbar instead of GtkBox + Toolbar style class?

GtkToolbar was not really providing anything but the bargain of having to add a single toolitem to add the rest of the stuff. a GtkBox was more flexible for other uses of the SearchBar. In any case, as we are only using it in Minibrowser, seems fair just to use a toolbar.

Done.

&gt; &gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:151
&gt; &gt; +    gtk_button_set_relief(GTK_BUTTON(searchBar-&gt;prevButton), GTK_RELIEF_NONE);
&gt; 
&gt; You should also make this button not focusable, so that current focused widget doesn&apos;t lose the focus when clicking this buttons. Use gtk_button_set_focus_on_click
&gt;
&gt; &gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:157
&gt; &gt; +    gtk_button_set_relief(GTK_BUTTON(searchBar-&gt;nextButton), GTK_RELIEF_NONE);
&gt; 
&gt; Ditto.

Done.

&gt; &gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:194
&gt; &gt; +    g_object_unref(BROWSER_SEARCH_BAR(object)-&gt;webView);
&gt; &gt; +    g_object_unref(BROWSER_SEARCH_BAR(object)-&gt;optionsMenu);
&gt; 
&gt; Don&apos;t do the cast twice, use a local variable.

Done.

&gt; &gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:218
&gt; &gt; +    g_return_if_fail(searchBar);
&gt; 
&gt; Use BROWSER_IS_SEARCH_BAR
&gt; 
&gt; &gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:230
&gt; &gt; +    g_return_if_fail(searchBar);
&gt; 
&gt; Ditto.
&gt;
&gt; &gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:239
&gt; &gt; +    g_return_if_fail(searchBar);
&gt; 
&gt; Ditto.

Done.

&gt; &gt; Tools/MiniBrowser/gtk/BrowserWindow.c:483
&gt; &gt; +    if (window-&gt;searchBarVisible)
&gt; &gt; +        browser_search_bar_open(BROWSER_SEARCH_BAR(window-&gt;searchBar));
&gt; 
&gt; I think you can call open unconditionally, so that if the search bar is already open, the entry will be focused.

Done.

&gt; &gt; Tools/MiniBrowser/gtk/BrowserWindow.c:544
&gt; &gt; +    g_object_unref(window-&gt;accelGroup);
&gt; 
&gt; Now that the accel group is used out of this function, I don&apos;t think it&apos;s a good idea to release your reference so early, you should do it in the browser window dispose/finalize.

This is not really necessary since the window already holds a reference that is unref-ed on the finalize of the parent class.

In any case, let&apos;s keep the additional reference until the finalize for extra safety reasons ...

&gt; &gt; Tools/MiniBrowser/gtk/BrowserWindow.c:583
&gt; &gt; +    window-&gt;searchItem = GTK_WIDGET(item);
&gt; 
&gt; Why do we need to keep this pointer? where is it used?

Garbage from previous patches ... removed.

&gt; &gt; Tools/MiniBrowser/gtk/BrowserWindow.c:633
&gt; &gt; +    browser_search_bar_add_accelerators(window-&gt;searchBar, window-&gt;accelGroup);
&gt; 
&gt; You need a cast here, since window-&gt;searchBar is a GtkWidget and browser_search_bar_add_accelerators expects a BrowserSearchBar

Done.

&gt; &gt; Tools/MiniBrowser/gtk/BrowserWindow.c:635
&gt; &gt; +    gtk_box_reorder_child(GTK_BOX(window-&gt;mainBox), window-&gt;searchBar, 0);
&gt; 
&gt; Why showing the search bar over the main toolbar instead of below? It looks really weird.

My fault when checking Ephy as per what we discussed regarding the style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>915148</commentid>
    <comment_count>22</comment_count>
      <attachid>208268</attachid>
    <who name="Andres Gomez Garcia">agomez</who>
    <bug_when>2013-08-07 07:52:53 -0700</bug_when>
    <thetext>Created attachment 208268
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>915149</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-08-07 07:54:05 -0700</bug_when>
    <thetext>Attachment 208268 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/MiniBrowser/gtk/BrowserSearchBar.c&apos;, u&apos;Tools/MiniBrowser/gtk/BrowserSearchBar.h&apos;, u&apos;Tools/MiniBrowser/gtk/BrowserWindow.c&apos;, u&apos;Tools/MiniBrowser/gtk/GNUmakefile.am&apos;]&quot; exit_code: 1
Tools/MiniBrowser/gtk/BrowserSearchBar.c:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
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>928722</commentid>
    <comment_count>24</comment_count>
      <attachid>208268</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2013-09-13 02:37:22 -0700</bug_when>
    <thetext>Comment on attachment 208268
Patch

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

&gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:50
&gt; +    if (failedSearch)
&gt; +        gtk_style_context_add_provider(gtk_widget_get_style_context(searchBar-&gt;entry), GTK_STYLE_PROVIDER(searchBar-&gt;cssProvider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
&gt; +    else
&gt; +        gtk_style_context_remove_provider(gtk_widget_get_style_context(searchBar-&gt;entry), GTK_STYLE_PROVIDER(searchBar-&gt;cssProvider));

For some reason this is not working for me. I&apos;m not a theming expert, but I think a better approach would be to use always a custom css provider and load it with different data, instead of having two providers and add/remove them. I think you can use gtk_style_context_reset_widgets after calling gtk_css_provider_load_from_data.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937094</commentid>
    <comment_count>25</comment_count>
      <attachid>213598</attachid>
    <who name="Andres Gomez Garcia">agomez</who>
    <bug_when>2013-10-07 09:28:35 -0700</bug_when>
    <thetext>Created attachment 213598
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937095</commentid>
    <comment_count>26</comment_count>
    <who name="Andres Gomez Garcia">agomez</who>
    <bug_when>2013-10-07 09:30:17 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (From update of attachment 208268 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=208268&amp;action=review
&gt; 
&gt; &gt; Tools/MiniBrowser/gtk/BrowserSearchBar.c:50
&gt; &gt; +    if (failedSearch)
&gt; &gt; +        gtk_style_context_add_provider(gtk_widget_get_style_context(searchBar-&gt;entry), GTK_STYLE_PROVIDER(searchBar-&gt;cssProvider), GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
&gt; &gt; +    else
&gt; &gt; +        gtk_style_context_remove_provider(gtk_widget_get_style_context(searchBar-&gt;entry), GTK_STYLE_PROVIDER(searchBar-&gt;cssProvider));
&gt; 
&gt; For some reason this is not working for me. I&apos;m not a theming expert, but I think a better approach would be to use always a custom css provider and load it with different data, instead of having two providers and add/remove them. I think you can use gtk_style_context_reset_widgets after calling gtk_css_provider_load_from_data.
...

AFAIK, it should work either way.

In any case, I&apos;ve rebased the patch and removed the styling bits. Let&apos;s leave it for a future patch ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>937096</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-07 09:30:45 -0700</bug_when>
    <thetext>Attachment 213598 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/MiniBrowser/gtk/BrowserSearchBar.c&apos;, u&apos;Tools/MiniBrowser/gtk/BrowserSearchBar.h&apos;, u&apos;Tools/MiniBrowser/gtk/BrowserWindow.c&apos;, u&apos;Tools/MiniBrowser/gtk/GNUmakefile.am&apos;]&quot; exit_code: 1
Tools/MiniBrowser/gtk/BrowserSearchBar.c:26:  Found header this file implements before WebCore config.h. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
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>938308</commentid>
    <comment_count>28</comment_count>
      <attachid>213598</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-10 06:17:42 -0700</bug_when>
    <thetext>Comment on attachment 213598
Patch

Clearing flags on attachment: 213598

Committed r157218: &lt;http://trac.webkit.org/changeset/157218&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>938309</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-10 06:17:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>204686</attachid>
            <date>2013-06-14 02:14:21 -0700</date>
            <delta_ts>2013-06-20 06:47:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-117631-20130614121238.patch</filename>
            <type>text/plain</type>
            <size>18329</size>
            <attacher name="Andres Gomez Garcia">agomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUxNTg0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZGZlMWMzZjU2NGQ0ZGRlNTgxZGIwNmRiMTIxMGVlYWUy
MTAwZThiOC4uZmU3NGVhMTNhZTY0MWViMjI3MTBkMjIwNWMyNDE2YzkyZDVkZTcxMSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQx
IEBACisyMDEzLTA2LTE0ICBBbmRyZXMgR29tZXogIDxhZ29tZXpAaWdhbGlhLmNvbT4KKworICAg
ICAgICBbR1RLXSBQcm92aWRlIHNlYXJjaCBmdW5jdGlvbmFsaXR5IHRvIE1pbmlCcm93c2VyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTc2MzEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIGEgc2Vh
cmNoIGJhciB0byBNaW5pQnJvd3NlciB3aXRoIHRoZSBtaW5pbXVtIGZ1bmN0aW9uYWxpdHkKKyAg
ICAgICAgYW5kIGEgbmV3IGJ1dHRvbiB0byB0aGUgdG9vbGJhciBmb3Igc2hvd2luZy9oaWRpbmcg
dGhlIG5ldyBzZWFyY2gKKyAgICAgICAgYmFyLgorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3Rr
L0Jyb3dzZXJTZWFyY2hCYXIuYzogQWRkZWQuCisgICAgICAgIChkb19zZWFyY2gpOgorICAgICAg
ICAoc2VhcmNoX2Nsb3NlX2J1dHRvbl9jbGlja2VkX2NiKToKKyAgICAgICAgKHNlYXJjaF9lbnRy
eV9pY29uX3JlbGVhc2VkX2NiKToKKyAgICAgICAgKHNlYXJjaF9lbnRyeV9jaGFuZ2VkX2NiKToK
KyAgICAgICAgKHNlYXJjaF9lbnRyeV9hY3RpdmF0ZWRfY2IpOgorICAgICAgICAoc2VhcmNoX3By
ZXZfYnV0dG9uX2NsaWNrZWRfY2IpOgorICAgICAgICAoc2VhcmNoX25leHRfYnV0dG9uX2NsaWNr
ZWRfY2IpOgorICAgICAgICAoc2VhcmNoX2Nhc2VfY2hlY2tfYnV0dG9uX3RvZ2dsZWRfY2IpOgor
ICAgICAgICAoYnJvd3Nlcl9zZWFyY2hfYmFyX2luaXQpOgorICAgICAgICAoYnJvd3Nlcl9zZWFy
Y2hfYmFyX2ZpbmFsaXplKToKKyAgICAgICAgKGJyb3dzZXJfc2VhcmNoX2Jhcl9jbGFzc19pbml0
KToKKyAgICAgICAgKGJyb3dzZXJfc2VhcmNoX2Jhcl9uZXcpOgorICAgICAgICAoYnJvd3Nlcl9z
ZWFyY2hfYmFyX3NlYXJjaF9uZXh0KToKKyAgICAgICAgKGJyb3dzZXJfc2VhcmNoX2Jhcl9zZWFy
Y2hfcHJldmlvdXMpOgorICAgICAgICAoYnJvd3Nlcl9zZWFyY2hfYmFyX2Nsb3NlKToKKyAgICAg
ICAgKGJyb3dzZXJfc2VhcmNoX2Jhcl9yZXF1ZXN0X2Nsb3NlKToKKyAgICAgICAgKiBNaW5pQnJv
d3Nlci9ndGsvQnJvd3NlclNlYXJjaEJhci5oOiBBZGRlZC4KKyAgICAgICAgKiBNaW5pQnJvd3Nl
ci9ndGsvQnJvd3NlcldpbmRvdy5jOgorICAgICAgICAod2ViVmlld0VudGVyRnVsbFNjcmVlbik6
IENsb3NlcyBuZXcgc2VhcmNoIGJhci4KKyAgICAgICAgKHNlYXJjaENhbGxiYWNrKTogQWRkZWQu
IFNob3dzIGFuZCBoaWRlcyB0aGUgbmV3IHNlYXJjaCBiYXIuCisgICAgICAgIChzZWFyY2hCYXJD
bG9zZUNhbGxiYWNrKTogSGlkZXMgdGhlIG5ldyBzZWFyY2ggYmFyLgorICAgICAgICAoYnJvd3Nl
cl93aW5kb3dfaW5pdCk6IEFkZGVkIHNlYXJjaCBidXR0b24gdG8gdGhlIHRvb2xiYXIuCisgICAg
ICAgIChicm93c2VyV2luZG93Q29uc3RydWN0ZWQpOiBDcmVhdGVzIGFuZCBjb25uZWN0cyB0aGUg
bmV3IHNlYXJjaAorICAgICAgICBiYXIuCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0dOVW1h
a2VmaWxlLmFtOiBBZGRlZCBuZXcgZmlsZXMgdG8gY29tcGlsYXRpb24uCisKIDIwMTMtMDYtMTMg
IE1pY2hhZWwgQnLDvG5pbmcgIDxtaWNoYWVsLmJydW5pbmdAZGlnaWEuY29tPgogCiAgICAgICAg
IFtRdF1bTWFjXSBEaXNhYmxlIFFUS2l0IHZpZGVvIG9uIE9TIFguCmRpZmYgLS1naXQgYS9Ub29s
cy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlclNlYXJjaEJhci5jIGIvVG9vbHMvTWluaUJyb3dzZXIv
Z3RrL0Jyb3dzZXJTZWFyY2hCYXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZWMwODYwNGJiODZkOWNmNTZkYmNl
NWQ4ZGI3YzZhZjExNzdiZjM1Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIv
Z3RrL0Jyb3dzZXJTZWFyY2hCYXIuYwpAQCAtMCwwICsxLDI2NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMyBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiQnJvd3NlclNlYXJj
aEJhci5oIgorCisKKyNkZWZpbmUgQlJPV1NFUl9TRUFSQ0hfQkFSX0dFVF9QUklWQVRFKG9iamVj
dCkgKEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURSgob2JqZWN0KSwgQlJPV1NFUl9UWVBFX1NF
QVJDSF9CQVIsIEJyb3dzZXJTZWFyY2hCYXJQcml2YXRlKSkKKwordHlwZWRlZiBzdHJ1Y3QgX0Jy
b3dzZXJTZWFyY2hCYXJQcml2YXRlICBCcm93c2VyU2VhcmNoQmFyUHJpdmF0ZTsKKworc3RydWN0
IF9Ccm93c2VyU2VhcmNoQmFyUHJpdmF0ZSB7CisgICAgR1dlYWtSZWYgd2VhazsKKyAgICBHdGtX
aWRnZXQgKmVudHJ5OworICAgIEd0a1dpZGdldCAqY2FzZUNoZWNrQnV0dG9uOworfTsKKworZW51
bSB7CisgICAgQ2xvc2UsCisgICAgTGFzdFNpZ25hbAorfTsKKworc3RhdGljIGd1aW50IHNpZ25h
bHNbTGFzdFNpZ25hbF07CisKK3N0cnVjdCBfQnJvd3NlclNlYXJjaEJhciB7CisgICAgR3RrQm94
IHBhcmVudDsKKworICAgIC8qPCBwcml2YXRlID4qLworICAgIEJyb3dzZXJTZWFyY2hCYXJQcml2
YXRlICpwcml2OworfTsKKworR19ERUZJTkVfVFlQRShCcm93c2VyU2VhcmNoQmFyLCBicm93c2Vy
X3NlYXJjaF9iYXIsIEdUS19UWVBFX0JPWCkKKworCisvKiBwcml2YXRlIGZ1bmN0aW9ucyAqLwor
CitzdGF0aWMgdm9pZCBkb19zZWFyY2goQnJvd3NlclNlYXJjaEJhciAqc2VhcmNoQmFyKQorewor
ICAgIEJyb3dzZXJTZWFyY2hCYXJQcml2YXRlICpwcml2ID0gc2VhcmNoQmFyLT5wcml2OworICAg
IFdlYktpdEZpbmRDb250cm9sbGVyICpjb250cm9sbGVyID0gZ193ZWFrX3JlZl9nZXQoJnByaXYt
PndlYWspOworICAgIGlmICghY29udHJvbGxlcikgeworICAgICAgICBicm93c2VyX3NlYXJjaF9i
YXJfcmVxdWVzdF9jbG9zZShzZWFyY2hCYXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgV2ViS2l0RmluZE9wdGlvbnMgb3B0aW9ucyA9IFdFQktJVF9GSU5EX09QVElPTlNfTk9ORTsK
KyAgICBjb25zdCBnY2hhciAqdGV4dCA9IGd0a19lbnRyeV9nZXRfdGV4dChHVEtfRU5UUlkocHJp
di0+ZW50cnkpKTsKKworICAgIGlmICghZ19zdHJjbXAwKHRleHQsICIiKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgaWYgKCFndGtfdG9nZ2xlX2J1dHRvbl9nZXRfYWN0aXZlKEdUS19UT0dHTEVf
QlVUVE9OKHByaXYtPmNhc2VDaGVja0J1dHRvbikpKQorICAgICAgICBvcHRpb25zIHw9IFdFQktJ
VF9GSU5EX09QVElPTlNfQ0FTRV9JTlNFTlNJVElWRTsKKworICAgIHdlYmtpdF9maW5kX2NvbnRy
b2xsZXJfc2VhcmNoKGNvbnRyb2xsZXIsIHRleHQsIG9wdGlvbnMsIEdfTUFYVUlOVCk7CisgICAg
Z19vYmplY3RfdW5yZWYoY29udHJvbGxlcik7Cit9CisKK3N0YXRpYyB2b2lkIHNlYXJjaF9jbG9z
ZV9idXR0b25fY2xpY2tlZF9jYihHdGtCdXR0b24gKmJ1dHRvbiwgQnJvd3NlclNlYXJjaEJhciAq
c2VhcmNoQmFyKQoreworICAgIGJyb3dzZXJfc2VhcmNoX2Jhcl9yZXF1ZXN0X2Nsb3NlKHNlYXJj
aEJhcik7Cit9CisKK3N0YXRpYyB2b2lkIHNlYXJjaF9lbnRyeV9pY29uX3JlbGVhc2VkX2NiKEd0
a0VudHJ5ICplbnRyeSwgR3RrRW50cnlJY29uUG9zaXRpb24gaWNvbl9wb3MsIEdka0V2ZW50ICAq
ZXZlbnQsIEJyb3dzZXJTZWFyY2hCYXIgKnNlYXJjaEJhcikKK3sKKyAgICBndGtfZW50cnlfc2V0
X3RleHQoZW50cnksICIiKTsKKworICAgIEJyb3dzZXJTZWFyY2hCYXJQcml2YXRlICpwcml2ID0g
c2VhcmNoQmFyLT5wcml2OworICAgIFdlYktpdEZpbmRDb250cm9sbGVyICpjb250cm9sbGVyID0g
Z193ZWFrX3JlZl9nZXQoJnByaXYtPndlYWspOworICAgIGlmICghY29udHJvbGxlcikgeworICAg
ICAgICBicm93c2VyX3NlYXJjaF9iYXJfcmVxdWVzdF9jbG9zZShzZWFyY2hCYXIpOworICAgICAg
ICByZXR1cm47CisgICAgfQorCisgICAgd2Via2l0X2ZpbmRfY29udHJvbGxlcl9zZWFyY2hfZmlu
aXNoKGNvbnRyb2xsZXIpOworfQorCitzdGF0aWMgdm9pZCBzZWFyY2hfZW50cnlfY2hhbmdlZF9j
YihHdGtFbnRyeSAqZW50cnksIEJyb3dzZXJTZWFyY2hCYXIgKnNlYXJjaEJhcikKK3sKKyAgICBk
b19zZWFyY2goc2VhcmNoQmFyKTsKK30KKworc3RhdGljIHZvaWQgc2VhcmNoX2VudHJ5X2FjdGl2
YXRlZF9jYihHdGtFbnRyeSAqZW50cnksIEJyb3dzZXJTZWFyY2hCYXIgKnNlYXJjaEJhcikKK3sK
KyAgICBicm93c2VyX3NlYXJjaF9iYXJfc2VhcmNoX25leHQoc2VhcmNoQmFyKTsKK30KKworc3Rh
dGljIHZvaWQgc2VhcmNoX3ByZXZfYnV0dG9uX2NsaWNrZWRfY2IoR3RrQnV0dG9uICpidXR0b24s
IEJyb3dzZXJTZWFyY2hCYXIgKnNlYXJjaEJhcikKK3sKKyAgICBicm93c2VyX3NlYXJjaF9iYXJf
c2VhcmNoX3ByZXZpb3VzKHNlYXJjaEJhcik7Cit9CisKK3N0YXRpYyB2b2lkIHNlYXJjaF9uZXh0
X2J1dHRvbl9jbGlja2VkX2NiKEd0a0J1dHRvbiAqYnV0dG9uLCBCcm93c2VyU2VhcmNoQmFyICpz
ZWFyY2hCYXIpCit7CisgICAgYnJvd3Nlcl9zZWFyY2hfYmFyX3NlYXJjaF9uZXh0KHNlYXJjaEJh
cik7Cit9CisKK3N0YXRpYyB2b2lkIHNlYXJjaF9jYXNlX2NoZWNrX2J1dHRvbl90b2dnbGVkX2Ni
KEd0a0J1dHRvbiAqYnV0dG9uLCBCcm93c2VyU2VhcmNoQmFyICpzZWFyY2hCYXIpCit7CisgICAg
ZG9fc2VhcmNoKHNlYXJjaEJhcik7Cit9CisKK3N0YXRpYyB2b2lkIGJyb3dzZXJfc2VhcmNoX2Jh
cl9pbml0KEJyb3dzZXJTZWFyY2hCYXIgKnNlYXJjaEJhcikKK3sKKyAgICBHdGtXaWRnZXQgKmhC
b3g7CisgICAgR3RrV2lkZ2V0ICpjbG9zZUJ1dHRvbjsKKyAgICBHdGtXaWRnZXQgKmxhYmVsOwor
ICAgIEd0a1dpZGdldCAqcHJldkJ1dHRvbjsKKyAgICBHdGtXaWRnZXQgKm5leHRCdXR0b247CisK
KyAgICBzZWFyY2hCYXItPnByaXYgPSBCUk9XU0VSX1NFQVJDSF9CQVJfR0VUX1BSSVZBVEUoc2Vh
cmNoQmFyKTsKKworICAgIGd0a19ib3hfc2V0X3NwYWNpbmcoR1RLX0JPWChzZWFyY2hCYXIpLCA2
KTsKKyAgICBndGtfd2lkZ2V0X3NldF9oZXhwYW5kKEdUS19XSURHRVQoc2VhcmNoQmFyKSwgVFJV
RSk7CisKKyAgICBoQm94ID0gZ3RrX2JveF9uZXcoR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUws
IDUpOworICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHNlYXJjaEJhciksIGhCb3gsIEZB
TFNFLCBGQUxTRSwgMCk7CisKKyAgICBjbG9zZUJ1dHRvbiA9IGd0a19idXR0b25fbmV3X2Zyb21f
c3RvY2soR1RLX1NUT0NLX0NMT1NFKTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCho
Qm94KSwgY2xvc2VCdXR0b24sIEZBTFNFLCBGQUxTRSwgMCk7CisKKyAgICBsYWJlbCA9IGd0a19s
YWJlbF9uZXdfd2l0aF9tbmVtb25pYygiRmlfbmQ6Iik7CisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0
KEdUS19CT1goaEJveCksIGxhYmVsLCBGQUxTRSwgRkFMU0UsIDApOworCisgICAgc2VhcmNoQmFy
LT5wcml2LT5lbnRyeSA9IGd0a19lbnRyeV9uZXcoKTsKKyAgICBndGtfbGFiZWxfc2V0X21uZW1v
bmljX3dpZGdldChHVEtfTEFCRUwobGFiZWwpLCBzZWFyY2hCYXItPnByaXYtPmVudHJ5KTsKKyAg
ICBndGtfZW50cnlfc2V0X2ljb25fZnJvbV9zdG9jayhHVEtfRU5UUlkoc2VhcmNoQmFyLT5wcml2
LT5lbnRyeSksIEdUS19FTlRSWV9JQ09OX1NFQ09OREFSWSwgR1RLX1NUT0NLX0NMRUFSKTsKKyAg
ICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChoQm94KSwgc2VhcmNoQmFyLT5wcml2LT5lbnRy
eSwgRkFMU0UsIEZBTFNFLCAwKTsKKworICAgIHByZXZCdXR0b24gPSBndGtfYnV0dG9uX25ld19m
cm9tX3N0b2NrKEdUS19TVE9DS19HT19CQUNLKTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RL
X0JPWChoQm94KSwgcHJldkJ1dHRvbiwgRkFMU0UsIEZBTFNFLCAwKTsKKworICAgIG5leHRCdXR0
b24gPSBndGtfYnV0dG9uX25ld19mcm9tX3N0b2NrKEdUS19TVE9DS19HT19GT1JXQVJEKTsKKyAg
ICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChoQm94KSwgbmV4dEJ1dHRvbiwgRkFMU0UsIEZB
TFNFLCAwKTsKKworICAgIHNlYXJjaEJhci0+cHJpdi0+Y2FzZUNoZWNrQnV0dG9uID0gZ3RrX2No
ZWNrX2J1dHRvbl9uZXdfd2l0aF9tbmVtb25pYygiQ2Ffc2Ugc2Vuc2l0aXZlIik7CisgICAgZ3Rr
X2JveF9wYWNrX3N0YXJ0KEdUS19CT1goaEJveCksIHNlYXJjaEJhci0+cHJpdi0+Y2FzZUNoZWNr
QnV0dG9uLCBGQUxTRSwgRkFMU0UsIDApOworCisgICAgZ19zaWduYWxfY29ubmVjdChjbG9zZUJ1
dHRvbiwgImNsaWNrZWQiLCBHX0NBTExCQUNLKHNlYXJjaF9jbG9zZV9idXR0b25fY2xpY2tlZF9j
YiksIHNlYXJjaEJhcik7CisgICAgZ19zaWduYWxfY29ubmVjdChzZWFyY2hCYXItPnByaXYtPmVu
dHJ5LCAiaWNvbi1yZWxlYXNlIiwgR19DQUxMQkFDSyhzZWFyY2hfZW50cnlfaWNvbl9yZWxlYXNl
ZF9jYiksIHNlYXJjaEJhcik7CisgICAgZ19zaWduYWxfY29ubmVjdF9hZnRlcihzZWFyY2hCYXIt
PnByaXYtPmVudHJ5LCAiY2hhbmdlZCIsIEdfQ0FMTEJBQ0soc2VhcmNoX2VudHJ5X2NoYW5nZWRf
Y2IpLCBzZWFyY2hCYXIpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Qoc2VhcmNoQmFyLT5wcml2LT5l
bnRyeSwgImFjdGl2YXRlIiwgR19DQUxMQkFDSyhzZWFyY2hfZW50cnlfYWN0aXZhdGVkX2NiKSwg
c2VhcmNoQmFyKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KG5leHRCdXR0b24sICJjbGlja2VkIiwg
R19DQUxMQkFDSyhzZWFyY2hfbmV4dF9idXR0b25fY2xpY2tlZF9jYiksIHNlYXJjaEJhcik7Cisg
ICAgZ19zaWduYWxfY29ubmVjdChwcmV2QnV0dG9uLCAiY2xpY2tlZCIsIEdfQ0FMTEJBQ0soc2Vh
cmNoX3ByZXZfYnV0dG9uX2NsaWNrZWRfY2IpLCBzZWFyY2hCYXIpOworICAgIGdfc2lnbmFsX2Nv
bm5lY3Qoc2VhcmNoQmFyLT5wcml2LT5jYXNlQ2hlY2tCdXR0b24sICJ0b2dnbGVkIiwgR19DQUxM
QkFDSyhzZWFyY2hfY2FzZV9jaGVja19idXR0b25fdG9nZ2xlZF9jYiksIHNlYXJjaEJhcik7CisK
KyAgICBndGtfd2lkZ2V0X3Nob3dfYWxsKGhCb3gpOworfQorCitzdGF0aWMgdm9pZCBicm93c2Vy
X3NlYXJjaF9iYXJfZmluYWxpemUoR09iamVjdCAqb2JqZWN0KQoreworICAgIEJyb3dzZXJTZWFy
Y2hCYXJQcml2YXRlICpwcml2ID0gQlJPV1NFUl9TRUFSQ0hfQkFSKG9iamVjdCktPnByaXY7CisK
KyAgICBnX3dlYWtfcmVmX2NsZWFyKCZwcml2LT53ZWFrKTsKKworICAgIEdfT0JKRUNUX0NMQVNT
KGJyb3dzZXJfc2VhcmNoX2Jhcl9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOworfQor
CitzdGF0aWMgdm9pZCBicm93c2VyX3NlYXJjaF9iYXJfY2xhc3NfaW5pdChCcm93c2VyU2VhcmNo
QmFyQ2xhc3MgKmtsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyAqb2JqZWN0X2NsYXNzID0gR19P
QkpFQ1RfQ0xBU1Moa2xhc3MpOworCisgICAgb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9IGJyb3dz
ZXJfc2VhcmNoX2Jhcl9maW5hbGl6ZTsKKworICAgIHNpZ25hbHNbQ2xvc2VdID0KKyAgICAgICAg
Z19zaWduYWxfbmV3KCJjbG9zZSIsCisgICAgICAgICAgICAgICAgICAgICBHX09CSkVDVF9DTEFT
U19UWVBFKG9iamVjdF9jbGFzcyksCisgICAgICAgICAgICAgICAgICAgICBHX1NJR05BTF9SVU5f
RklSU1QgfCBHX1NJR05BTF9BQ1RJT04sCisgICAgICAgICAgICAgICAgICAgICBHX1NUUlVDVF9P
RkZTRVQoQnJvd3NlclNlYXJjaEJhckNsYXNzLCBjbG9zZSksCisgICAgICAgICAgICAgICAgICAg
ICBOVUxMLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgZ19jY2xvc3VyZV9tYXJzaGFsX1ZP
SURfX1ZPSUQsCisgICAgICAgICAgICAgICAgICAgICBHX1RZUEVfTk9ORSwgMCk7CisKKyAgICBn
X3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoa2xhc3MsIHNpemVvZihCcm93c2VyU2VhcmNoQmFyUHJp
dmF0ZSkpOworfQorCisKKy8qIHB1YmxpYyBmdW5jdGlvbnMgKi8KKworR3RrV2lkZ2V0ICpicm93
c2VyX3NlYXJjaF9iYXJfbmV3KFdlYktpdEZpbmRDb250cm9sbGVyICpjb250cm9sbGVyKQorewor
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKGNvbnRyb2xsZXIsIE5VTEwpOworCisgICAgR3RrV2lk
Z2V0ICpzZWFyY2hCYXIgPSBHVEtfV0lER0VUKGdfb2JqZWN0X25ldyhCUk9XU0VSX1RZUEVfU0VB
UkNIX0JBUiwgTlVMTCkpOworICAgIEJyb3dzZXJTZWFyY2hCYXJQcml2YXRlICpwcml2ID0gQlJP
V1NFUl9TRUFSQ0hfQkFSKHNlYXJjaEJhciktPnByaXY7CisKKyAgICBnX3dlYWtfcmVmX2luaXQo
JnByaXYtPndlYWssIGNvbnRyb2xsZXIpOworCisgICAgcmV0dXJuIHNlYXJjaEJhcjsKK30KKwor
dm9pZCBicm93c2VyX3NlYXJjaF9iYXJfc2VhcmNoX25leHQoQnJvd3NlclNlYXJjaEJhciAqc2Vh
cmNoQmFyKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VhcmNoQmFyKTsKKworICAgIEJyb3dz
ZXJTZWFyY2hCYXJQcml2YXRlICpwcml2ID0gQlJPV1NFUl9TRUFSQ0hfQkFSKHNlYXJjaEJhcikt
PnByaXY7CisgICAgV2ViS2l0RmluZENvbnRyb2xsZXIgKmNvbnRyb2xsZXIgPSBnX3dlYWtfcmVm
X2dldCgmcHJpdi0+d2Vhayk7CisgICAgaWYgKCFjb250cm9sbGVyKSB7CisgICAgICAgIGJyb3dz
ZXJfc2VhcmNoX2Jhcl9yZXF1ZXN0X2Nsb3NlKHNlYXJjaEJhcik7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICB3ZWJraXRfZmluZF9jb250cm9sbGVyX3NlYXJjaF9uZXh0KGNvbnRyb2xs
ZXIpOworICAgIGdfb2JqZWN0X3VucmVmKGNvbnRyb2xsZXIpOworfQorCit2b2lkIGJyb3dzZXJf
c2VhcmNoX2Jhcl9zZWFyY2hfcHJldmlvdXMoQnJvd3NlclNlYXJjaEJhciAqc2VhcmNoQmFyKQor
eworICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VhcmNoQmFyKTsKKworICAgIEJyb3dzZXJTZWFyY2hC
YXJQcml2YXRlICpwcml2ID0gQlJPV1NFUl9TRUFSQ0hfQkFSKHNlYXJjaEJhciktPnByaXY7Cisg
ICAgV2ViS2l0RmluZENvbnRyb2xsZXIgKmNvbnRyb2xsZXIgPSBnX3dlYWtfcmVmX2dldCgmcHJp
di0+d2Vhayk7CisgICAgaWYgKCFjb250cm9sbGVyKSB7CisgICAgICAgIGJyb3dzZXJfc2VhcmNo
X2Jhcl9yZXF1ZXN0X2Nsb3NlKHNlYXJjaEJhcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICB3ZWJraXRfZmluZF9jb250cm9sbGVyX3NlYXJjaF9wcmV2aW91cyhjb250cm9sbGVyKTsK
KyAgICBnX29iamVjdF91bnJlZihjb250cm9sbGVyKTsKK30KKwordm9pZCBicm93c2VyX3NlYXJj
aF9iYXJfY2xvc2UoQnJvd3NlclNlYXJjaEJhciAqc2VhcmNoQmFyKQoreworICAgIGdfcmV0dXJu
X2lmX2ZhaWwoc2VhcmNoQmFyKTsKKworICAgIEJyb3dzZXJTZWFyY2hCYXJQcml2YXRlICpwcml2
ID0gc2VhcmNoQmFyLT5wcml2OworCisgICAgZ3RrX3dpZGdldF9oaWRlKEdUS19XSURHRVQoc2Vh
cmNoQmFyKSk7CisKKyAgICBXZWJLaXRGaW5kQ29udHJvbGxlciAqY29udHJvbGxlciA9IGdfd2Vh
a19yZWZfZ2V0KCZwcml2LT53ZWFrKTsKKyAgICBpZiAoY29udHJvbGxlcikgeworICAgICAgICB3
ZWJraXRfZmluZF9jb250cm9sbGVyX3NlYXJjaF9maW5pc2goY29udHJvbGxlcik7CisgICAgICAg
IGdfb2JqZWN0X3VucmVmKGNvbnRyb2xsZXIpOworICAgIH0KK30KKwordm9pZCBicm93c2VyX3Nl
YXJjaF9iYXJfcmVxdWVzdF9jbG9zZShCcm93c2VyU2VhcmNoQmFyICpzZWFyY2hCYXIpCit7Cisg
ICAgZ19yZXR1cm5faWZfZmFpbChzZWFyY2hCYXIpOworCisgICAgaWYgKGd0a193aWRnZXRfZ2V0
X3Zpc2libGUoR1RLX1dJREdFVChzZWFyY2hCYXIpKSkKKyAgICAgICAgZ19zaWduYWxfZW1pdChz
ZWFyY2hCYXIsIHNpZ25hbHNbQ2xvc2VdLCAwKTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlC
cm93c2VyL2d0ay9Ccm93c2VyU2VhcmNoQmFyLmggYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJv
d3NlclNlYXJjaEJhci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjBmMzE2NWJhYjMwM2Q1M2MwNGJlMzdiYmM0ZTBh
NjFjYmQ0YTc0MjUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJv
d3NlclNlYXJjaEJhci5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBCcm93c2VyU2VhcmNoQmFyX2gKKyNk
ZWZpbmUgQnJvd3NlclNlYXJjaEJhcl9oCisKKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaW5jbHVk
ZSA8d2Via2l0Mi93ZWJraXQyLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBCUk9XU0VS
X1RZUEVfU0VBUkNIX0JBUiAgICAgICAgICAgIChicm93c2VyX3NlYXJjaF9iYXJfZ2V0X3R5cGUo
KSkKKyNkZWZpbmUgQlJPV1NFUl9TRUFSQ0hfQkFSKG9iaikgICAgICAgICAgICAoR19UWVBFX0NI
RUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIEJST1dTRVJfVFlQRV9TRUFSQ0hfQkFSLCBCcm93c2Vy
U2VhcmNoQmFyKSkKKyNkZWZpbmUgQlJPV1NFUl9JU19TRUFSQ0hfQkFSKG9iaikgICAgICAgICAo
R19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIEJST1dTRVJfVFlQRV9TRUFSQ0hfQkFS
KSkKKyNkZWZpbmUgQlJPV1NFUl9TRUFSQ0hfQkFSX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NI
RUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIEJST1dTRVJfVFlQRV9TRUFSQ0hfQkFSLCBCcm93c2Vy
U2VhcmNoQmFyQ2xhc3MpKQorI2RlZmluZSBCUk9XU0VSX0lTX1NFQVJDSF9CQVJfQ0xBU1Moa2xh
c3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgQlJPV1NFUl9UWVBFX1NFQVJD
SF9CQVIpKQorI2RlZmluZSBCUk9XU0VSX1NFQVJDSF9CQVJfR0VUX0NMQVNTKG9iaikgIChHX1RZ
UEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgQlJPV1NFUl9UWVBFX1NFQVJDSF9CQVIsIEJy
b3dzZXJTZWFyY2hCYXJDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9Ccm93c2VyU2VhcmNoQmFy
ICAgICAgIEJyb3dzZXJTZWFyY2hCYXI7Cit0eXBlZGVmIHN0cnVjdCBfQnJvd3NlclNlYXJjaEJh
ckNsYXNzICBCcm93c2VyU2VhcmNoQmFyQ2xhc3M7CisKK3N0cnVjdCBfQnJvd3NlclNlYXJjaEJh
ckNsYXNzIHsKKyAgICBHdGtCb3hDbGFzcyBwYXJlbnRfY2xhc3M7CisKKyAgICAvKiBTaWduYWxz
ICovCisgICAgdm9pZCAoKiBjbG9zZSkgKEJyb3dzZXJTZWFyY2hCYXIgKnNlYXJjaEJhcik7Cit9
OworCitHVHlwZSBicm93c2VyX3NlYXJjaF9iYXJfZ2V0X3R5cGUodm9pZCk7CisKK0d0a1dpZGdl
dCAqYnJvd3Nlcl9zZWFyY2hfYmFyX25ldyhXZWJLaXRGaW5kQ29udHJvbGxlciAqKTsKK3ZvaWQg
YnJvd3Nlcl9zZWFyY2hfYmFyX3NlYXJjaF9uZXh0KEJyb3dzZXJTZWFyY2hCYXIgKik7Cit2b2lk
IGJyb3dzZXJfc2VhcmNoX2Jhcl9zZWFyY2hfcHJldmlvdXMoQnJvd3NlclNlYXJjaEJhciAqKTsK
K3ZvaWQgYnJvd3Nlcl9zZWFyY2hfYmFyX2Nsb3NlKEJyb3dzZXJTZWFyY2hCYXIgKik7Cit2b2lk
IGJyb3dzZXJfc2VhcmNoX2Jhcl9yZXF1ZXN0X2Nsb3NlKEJyb3dzZXJTZWFyY2hCYXIgKik7CisK
K0dfRU5EX0RFQ0xTCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3Rr
L0Jyb3dzZXJXaW5kb3cuYyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMK
aW5kZXggNTVmOTA2ODIwYzlkNjE1OGQzYzU1NzczMzAyZmY4MGFiNmVhZWI2Zi4uNGQzOWQ0ZGI1
YTllNTljYmQ3ZTA2MzQwYmRmNzlhMGVkOGI4YzM1YiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJy
b3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYworKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJv
d3NlcldpbmRvdy5jCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVkZSAiQnJvd3NlcldpbmRvdy5o
IgogCiAjaW5jbHVkZSAiQnJvd3NlckRvd25sb2Fkc0Jhci5oIgorI2luY2x1ZGUgIkJyb3dzZXJT
ZWFyY2hCYXIuaCIKICNpbmNsdWRlICJCcm93c2VyU2V0dGluZ3NEaWFsb2cuaCIKICNpbmNsdWRl
IDxzdHJpbmcuaD4KIApAQCAtNDcsMTAgKzQ4LDEyIEBAIHN0cnVjdCBfQnJvd3NlcldpbmRvdyB7
CiAgICAgR3RrV2lkZ2V0ICpmb3J3YXJkSXRlbTsKICAgICBHdGtXaWRnZXQgKnpvb21Jbkl0ZW07
CiAgICAgR3RrV2lkZ2V0ICp6b29tT3V0SXRlbTsKKyAgICBHdGtXaWRnZXQgKnNlYXJjaEl0ZW07
CiAgICAgR3RrV2lkZ2V0ICpzdGF0dXNMYWJlbDsKICAgICBHdGtXaWRnZXQgKnNldHRpbmdzRGlh
bG9nOwogICAgIFdlYktpdFdlYlZpZXcgKndlYlZpZXc7CiAgICAgR3RrV2lkZ2V0ICpkb3dubG9h
ZHNCYXI7CisgICAgR3RrV2lkZ2V0ICpzZWFyY2hCYXI7CiAgICAgR2RrUGl4YnVmICpmYXZpY29u
OwogICAgIEd0a1dpZGdldCAqZnVsbFNjcmVlbk1lc3NhZ2VMYWJlbDsKICAgICBndWludCBmdWxs
U2NyZWVuTWVzc2FnZUxhYmVsSWQ7CkBAIC0zMDMsNiArMzA2LDcgQEAgc3RhdGljIGdib29sZWFu
IHdlYlZpZXdFbnRlckZ1bGxTY3JlZW4oV2ViS2l0V2ViVmlldyAqd2ViVmlldywgQnJvd3Nlcldp
bmRvdyAqd2kKIAogICAgIHdpbmRvdy0+ZnVsbFNjcmVlbk1lc3NhZ2VMYWJlbElkID0gZ190aW1l
b3V0X2FkZF9zZWNvbmRzKDIsIChHU291cmNlRnVuYylmdWxsU2NyZWVuTWVzc2FnZVRpbWVvdXRD
YWxsYmFjaywgd2luZG93KTsKICAgICBndGtfd2lkZ2V0X2hpZGUod2luZG93LT50b29sYmFyKTsK
KyAgICBicm93c2VyX3NlYXJjaF9iYXJfcmVxdWVzdF9jbG9zZShCUk9XU0VSX1NFQVJDSF9CQVIo
KHdpbmRvdy0+c2VhcmNoQmFyKSkpOwogCiAgICAgcmV0dXJuIEZBTFNFOwogfQpAQCAtNDY3LDYg
KzQ3MSwxOSBAQCBzdGF0aWMgdm9pZCB6b29tT3V0Q2FsbGJhY2soQnJvd3NlcldpbmRvdyAqd2lu
ZG93KQogICAgIHdlYmtpdF93ZWJfdmlld19zZXRfem9vbV9sZXZlbCh3aW5kb3ctPndlYlZpZXcs
IHpvb21MZXZlbCk7CiB9CiAKK3N0YXRpYyB2b2lkIHNlYXJjaENhbGxiYWNrKEJyb3dzZXJXaW5k
b3cgKndpbmRvdykKK3sKKyAgICBpZiAoZ3RrX3dpZGdldF9nZXRfdmlzaWJsZSh3aW5kb3ctPnNl
YXJjaEJhcikpCisgICAgICAgIGJyb3dzZXJfc2VhcmNoX2Jhcl9yZXF1ZXN0X2Nsb3NlKEJST1dT
RVJfU0VBUkNIX0JBUigod2luZG93LT5zZWFyY2hCYXIpKSk7CisgICAgZWxzZQorICAgICAgICBn
dGtfd2lkZ2V0X3Nob3cod2luZG93LT5zZWFyY2hCYXIpOworfQorCitzdGF0aWMgdm9pZCBzZWFy
Y2hCYXJDbG9zZUNhbGxiYWNrKEJyb3dzZXJTZWFyY2hCYXIgKnNlYXJjaEJhciwgQnJvd3Nlcldp
bmRvdyAqd2luZG93KQoreworICAgIGJyb3dzZXJfc2VhcmNoX2Jhcl9jbG9zZShzZWFyY2hCYXIp
OworfQorCiBzdGF0aWMgdm9pZCBicm93c2VyV2luZG93RmluYWxpemUoR09iamVjdCAqZ09iamVj
dCkKIHsKICAgICBCcm93c2VyV2luZG93ICp3aW5kb3cgPSBCUk9XU0VSX1dJTkRPVyhnT2JqZWN0
KTsKQEAgLTU1OCw2ICs1NzUsMTIgQEAgc3RhdGljIHZvaWQgYnJvd3Nlcl93aW5kb3dfaW5pdChC
cm93c2VyV2luZG93ICp3aW5kb3cpCiAgICAgZ3RrX3Rvb2xiYXJfaW5zZXJ0KEdUS19UT09MQkFS
KHRvb2xiYXIpLCBpdGVtLCAtMSk7CiAgICAgZ3RrX3dpZGdldF9zaG93KEdUS19XSURHRVQoaXRl
bSkpOwogCisgICAgaXRlbSA9IGd0a190b29sX2J1dHRvbl9uZXdfZnJvbV9zdG9jayhHVEtfU1RP
Q0tfRklORCk7CisgICAgd2luZG93LT5zZWFyY2hJdGVtID0gR1RLX1dJREdFVChpdGVtKTsKKyAg
ICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoaXRlbSwgImNsaWNrZWQiLCBHX0NBTExCQUNLKHNl
YXJjaENhbGxiYWNrKSwgd2luZG93KTsKKyAgICBndGtfdG9vbGJhcl9pbnNlcnQoR1RLX1RPT0xC
QVIodG9vbGJhciksIGl0ZW0sIC0xKTsKKyAgICBndGtfd2lkZ2V0X3Nob3coR1RLX1dJREdFVChp
dGVtKSk7CisKICAgICBpdGVtID0gZ3RrX3Rvb2xfaXRlbV9uZXcoKTsKICAgICBndGtfdG9vbF9p
dGVtX3NldF9leHBhbmQoaXRlbSwgVFJVRSk7CiAgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NP
TlRBSU5FUihpdGVtKSwgd2luZG93LT51cmlFbnRyeSk7CkBAIC02MDAsNiArNjIzLDExIEBAIHN0
YXRpYyB2b2lkIGJyb3dzZXJXaW5kb3dDb25zdHJ1Y3RlZChHT2JqZWN0ICpnT2JqZWN0KQogCiAg
ICAgZ19zaWduYWxfY29ubmVjdCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQod2luZG93LT53
ZWJWaWV3KSwgImRvd25sb2FkLXN0YXJ0ZWQiLCBHX0NBTExCQUNLKGRvd25sb2FkU3RhcnRlZCks
IHdpbmRvdyk7CiAKKyAgICBHdGtXaWRnZXQgKnNlYXJjaEJhciA9IGJyb3dzZXJfc2VhcmNoX2Jh
cl9uZXcod2Via2l0X3dlYl92aWV3X2dldF9maW5kX2NvbnRyb2xsZXIod2luZG93LT53ZWJWaWV3
KSk7CisgICAgd2luZG93LT5zZWFyY2hCYXIgPSBzZWFyY2hCYXI7CisgICAgZ3RrX2JveF9wYWNr
X2VuZChHVEtfQk9YKHdpbmRvdy0+bWFpbkJveCksIHNlYXJjaEJhciwgRkFMU0UsIEZBTFNFLCAw
KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KHdpbmRvdy0+c2VhcmNoQmFyLCAiY2xvc2UiLCBHX0NB
TExCQUNLKHNlYXJjaEJhckNsb3NlQ2FsbGJhY2spLCB3aW5kb3cpOworCiAgICAgV2ViS2l0QmFj
a0ZvcndhcmRMaXN0ICpiYWNrRm9yd2FkbGlzdCA9IHdlYmtpdF93ZWJfdmlld19nZXRfYmFja19m
b3J3YXJkX2xpc3Qod2luZG93LT53ZWJWaWV3KTsKICAgICBnX3NpZ25hbF9jb25uZWN0KGJhY2tG
b3J3YWRsaXN0LCAiY2hhbmdlZCIsIEdfQ0FMTEJBQ0soYmFja0ZvcndhZGxpc3RDaGFuZ2VkKSwg
d2luZG93KTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0dOVW1ha2VmaWxl
LmFtIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0dOVW1ha2VmaWxlLmFtCmluZGV4IGY0MmEzMGI3
OTJiMjcwYzVlZmJkYmE1OGI5ZWJiNmYxZDZlMmIxZjguLjI5ZDRlYzQxNDkxOWNhNWEyOTYzZGUx
MjI5MjM5ZDIxMzcxMmZkYTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9HTlVt
YWtlZmlsZS5hbQorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvR05VbWFrZWZpbGUuYW0KQEAg
LTIyLDYgKzIyLDggQEAgUHJvZ3JhbXNfTWluaUJyb3dzZXJfU09VUkNFUyA9IFwKIAlUb29scy9N
aW5pQnJvd3Nlci9ndGsvQnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnQuYyBcCiAJVG9vbHMvTWlu
aUJyb3dzZXIvZ3RrL0Jyb3dzZXJEb3dubG9hZHNCYXIuaCBcCiAJVG9vbHMvTWluaUJyb3dzZXIv
Z3RrL0Jyb3dzZXJEb3dubG9hZHNCYXIuYyBcCisJVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dz
ZXJTZWFyY2hCYXIuaCBcCisJVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJTZWFyY2hCYXIu
YyBcCiAJVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJTZXR0aW5nc0RpYWxvZy5oIFwKIAlU
b29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlclNldHRpbmdzRGlhbG9nLmMgXAogCVRvb2xzL01p
bmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmggXAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>205085</attachid>
            <date>2013-06-20 06:47:44 -0700</date>
            <delta_ts>2013-07-15 09:02:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-117631-20130620164554.patch</filename>
            <type>text/plain</type>
            <size>16379</size>
            <attacher name="Andres Gomez Garcia">agomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUxNzU0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOWFjNTM5ZDgwYjI1NTI2NDEyMmQzMDNlYjFiZmY0Nzhi
MTljOGI0Mi4uODA2YWQ0NzA0MjNmMGVmMGRiNTFlNzNjMzliYjgzMTAxNjFhMzNjNyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQx
IEBACisyMDEzLTA2LTIwICBBbmRyZXMgR29tZXogIDxhZ29tZXpAaWdhbGlhLmNvbT4KKworICAg
ICAgICBbR1RLXSBQcm92aWRlIHNlYXJjaCBmdW5jdGlvbmFsaXR5IHRvIE1pbmlCcm93c2VyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTc2MzEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIGEgc2Vh
cmNoIGJhciB0byBNaW5pQnJvd3NlciB3aXRoIHRoZSBtaW5pbXVtIGZ1bmN0aW9uYWxpdHkKKyAg
ICAgICAgYW5kIGEgbmV3IGJ1dHRvbiB0byB0aGUgdG9vbGJhciBmb3Igc2hvd2luZy9oaWRpbmcg
dGhlIG5ldyBzZWFyY2gKKyAgICAgICAgYmFyLgorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3Rr
L0Jyb3dzZXJTZWFyY2hCYXIuYzogQWRkZWQuCisgICAgICAgIChkb1NlYXJjaCk6CisgICAgICAg
IChzZWFyY2hDbG9zZUJ1dHRvbkNsaWNrZWRDYWxsYmFjayk6CisgICAgICAgIChzZWFyY2hFbnRy
eUljb25SZWxlYXNlZENhbGxiYWNrKToKKyAgICAgICAgKHNlYXJjaEVudHJ5Q2hhbmdlZENhbGxi
YWNrKToKKyAgICAgICAgKHNlYXJjaEVudHJ5QWN0aXZhdGVkQ2FsbGJhY2spOgorICAgICAgICAo
c2VhcmNoUHJldkJ1dHRvbkNsaWNrZWRDYWxsYmFjayk6CisgICAgICAgIChzZWFyY2hOZXh0QnV0
dG9uQ2xpY2tlZENhbGxiYWNrKToKKyAgICAgICAgKHNlYXJjaENhc2VDaGVja0J1dHRvblRvZ2ds
ZWRDYWxsYmFjayk6CisgICAgICAgIChicm93c2VyX3NlYXJjaF9iYXJfaW5pdCk6CisgICAgICAg
IChicm93c2VyX3NlYXJjaF9iYXJfZmluYWxpemUpOgorICAgICAgICAoYnJvd3Nlcl9zZWFyY2hf
YmFyX2NsYXNzX2luaXQpOgorICAgICAgICAoYnJvd3Nlcl9zZWFyY2hfYmFyX25ldyk6CisgICAg
ICAgIChicm93c2VyX3NlYXJjaF9iYXJfc2VhcmNoX25leHQpOgorICAgICAgICAoYnJvd3Nlcl9z
ZWFyY2hfYmFyX3NlYXJjaF9wcmV2aW91cyk6CisgICAgICAgIChicm93c2VyX3NlYXJjaF9iYXJf
b3Blbik6CisgICAgICAgIChicm93c2VyX3NlYXJjaF9iYXJfY2xvc2UpOgorICAgICAgICAqIE1p
bmlCcm93c2VyL2d0ay9Ccm93c2VyU2VhcmNoQmFyLmg6IEFkZGVkLgorICAgICAgICAqIE1pbmlC
cm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmM6CisgICAgICAgICh3ZWJWaWV3RW50ZXJGdWxsU2Ny
ZWVuKTogQ2xvc2VzIG5ldyBzZWFyY2ggYmFyLgorICAgICAgICAod2ViVmlld0xlYXZlRnVsbFNj
cmVlbik6IE9wZW5zIG5ldyBzZWFyY2ggYmFyIGlmIHByZXZpb3VzbHkKKyAgICAgICAgdmlzaWJs
ZS4KKyAgICAgICAgKHNlYXJjaENhbGxiYWNrKTogQWRkZWQuIFNob3dzIGFuZCBoaWRlcyB0aGUg
bmV3IHNlYXJjaCBiYXIuCisgICAgICAgIChicm93c2VyX3dpbmRvd19pbml0KTogQWRkZWQgc2Vh
cmNoIGJ1dHRvbiB0byB0aGUgdG9vbGJhci4KKyAgICAgICAgKGJyb3dzZXJXaW5kb3dDb25zdHJ1
Y3RlZCk6IENyZWF0ZXMgdGhlIG5ldyBzZWFyY2ggYmFyLgorICAgICAgICAqIE1pbmlCcm93c2Vy
L2d0ay9HTlVtYWtlZmlsZS5hbTogQWRkZWQgbmV3IGZpbGVzIHRvIGNvbXBpbGF0aW9uLgorCiAy
MDEzLTA2LTE4ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQGFwcGxlLmNvbT4KIAog
ICAgICAgICBXb3JraW5nIG9uIGNvdmVyYWdlIHNjcmlwdCwgYWRkZWQgeG1sIHRvIGpzb24gZGF0
YSBleHRyYWN0aW9uIHNjcmlwdC4KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9C
cm93c2VyU2VhcmNoQmFyLmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlclNlYXJjaEJh
ci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjI3MDM2M2M1ZGJhNTg5Nzg3ZWE0NjkxODk2N2I4ZDdkMzg5NDViNzUK
LS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlclNlYXJjaEJh
ci5jCkBAIC0wLDAgKzEsMTg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBT
LkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJCcm93c2VyU2VhcmNoQmFyLmgiCisKKworc3RydWN0
IF9Ccm93c2VyU2VhcmNoQmFyIHsKKyAgICBHdGtCb3ggcGFyZW50OworCisgICAgV2ViS2l0V2Vi
VmlldyAqd2ViVmlldzsKKyAgICBHdGtXaWRnZXQgKmVudHJ5OworICAgIEd0a1dpZGdldCAqY2Fz
ZUNoZWNrQnV0dG9uOworfTsKKworR19ERUZJTkVfVFlQRShCcm93c2VyU2VhcmNoQmFyLCBicm93
c2VyX3NlYXJjaF9iYXIsIEdUS19UWVBFX0JPWCkKKworCitzdGF0aWMgdm9pZCBkb1NlYXJjaChC
cm93c2VyU2VhcmNoQmFyICpzZWFyY2hCYXIpCit7CisgICAgY29uc3QgZ2NoYXIgKnRleHQgPSBn
dGtfZW50cnlfZ2V0X3RleHQoR1RLX0VOVFJZKHNlYXJjaEJhci0+ZW50cnkpKTsKKworICAgIGlm
ICghZ19zdHJjbXAwKHRleHQsICIiKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViS2l0Rmlu
ZENvbnRyb2xsZXIgKmNvbnRyb2xsZXIgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2ZpbmRfY29udHJv
bGxlcihzZWFyY2hCYXItPndlYlZpZXcpOworICAgIFdlYktpdEZpbmRPcHRpb25zIG9wdGlvbnMg
PSBXRUJLSVRfRklORF9PUFRJT05TX05PTkU7CisgICAgaWYgKCFndGtfdG9nZ2xlX2J1dHRvbl9n
ZXRfYWN0aXZlKEdUS19UT0dHTEVfQlVUVE9OKHNlYXJjaEJhci0+Y2FzZUNoZWNrQnV0dG9uKSkp
CisgICAgICAgIG9wdGlvbnMgfD0gV0VCS0lUX0ZJTkRfT1BUSU9OU19DQVNFX0lOU0VOU0lUSVZF
OworCisgICAgd2Via2l0X2ZpbmRfY29udHJvbGxlcl9zZWFyY2goY29udHJvbGxlciwgdGV4dCwg
b3B0aW9ucywgR19NQVhVSU5UKTsKK30KKworc3RhdGljIHZvaWQgc2VhcmNoQ2xvc2VCdXR0b25D
bGlja2VkQ2FsbGJhY2soQnJvd3NlclNlYXJjaEJhciAqc2VhcmNoQmFyKQoreworICAgIGJyb3dz
ZXJfc2VhcmNoX2Jhcl9jbG9zZShzZWFyY2hCYXIpOworfQorCitzdGF0aWMgdm9pZCBzZWFyY2hF
bnRyeUljb25SZWxlYXNlZENhbGxiYWNrKEJyb3dzZXJTZWFyY2hCYXIgKnNlYXJjaEJhcikKK3sK
KyAgICBndGtfZW50cnlfc2V0X3RleHQoR1RLX0VOVFJZKHNlYXJjaEJhci0+ZW50cnkpLCAiIik7
CisKKyAgICBXZWJLaXRGaW5kQ29udHJvbGxlciAqY29udHJvbGxlciA9IHdlYmtpdF93ZWJfdmll
d19nZXRfZmluZF9jb250cm9sbGVyKHNlYXJjaEJhci0+d2ViVmlldyk7CisgICAgd2Via2l0X2Zp
bmRfY29udHJvbGxlcl9zZWFyY2hfZmluaXNoKGNvbnRyb2xsZXIpOworfQorCitzdGF0aWMgdm9p
ZCBzZWFyY2hFbnRyeUNoYW5nZWRDYWxsYmFjayhHdGtFbnRyeSAqZW50cnksIEJyb3dzZXJTZWFy
Y2hCYXIgKnNlYXJjaEJhcikKK3sKKyAgICBkb1NlYXJjaChzZWFyY2hCYXIpOworfQorCitzdGF0
aWMgdm9pZCBzZWFyY2hFbnRyeUFjdGl2YXRlZENhbGxiYWNrKEJyb3dzZXJTZWFyY2hCYXIgKnNl
YXJjaEJhcikKK3sKKyAgICBicm93c2VyX3NlYXJjaF9iYXJfc2VhcmNoX25leHQoc2VhcmNoQmFy
KTsKK30KKworc3RhdGljIHZvaWQgc2VhcmNoUHJldkJ1dHRvbkNsaWNrZWRDYWxsYmFjayhCcm93
c2VyU2VhcmNoQmFyICpzZWFyY2hCYXIpCit7CisgICAgYnJvd3Nlcl9zZWFyY2hfYmFyX3NlYXJj
aF9wcmV2aW91cyhzZWFyY2hCYXIpOworfQorCitzdGF0aWMgdm9pZCBzZWFyY2hOZXh0QnV0dG9u
Q2xpY2tlZENhbGxiYWNrKEJyb3dzZXJTZWFyY2hCYXIgKnNlYXJjaEJhcikKK3sKKyAgICBicm93
c2VyX3NlYXJjaF9iYXJfc2VhcmNoX25leHQoc2VhcmNoQmFyKTsKK30KKworc3RhdGljIHZvaWQg
c2VhcmNoQ2FzZUNoZWNrQnV0dG9uVG9nZ2xlZENhbGxiYWNrKEJyb3dzZXJTZWFyY2hCYXIgKnNl
YXJjaEJhcikKK3sKKyAgICBkb1NlYXJjaChzZWFyY2hCYXIpOworfQorCitzdGF0aWMgdm9pZCBi
cm93c2VyX3NlYXJjaF9iYXJfaW5pdChCcm93c2VyU2VhcmNoQmFyICpzZWFyY2hCYXIpCit7Cisg
ICAgZ3RrX2JveF9zZXRfc3BhY2luZyhHVEtfQk9YKHNlYXJjaEJhciksIDYpOworICAgIGd0a193
aWRnZXRfc2V0X2hleHBhbmQoR1RLX1dJREdFVChzZWFyY2hCYXIpLCBUUlVFKTsKKworICAgIEd0
a1dpZGdldCAqaEJveCA9IGd0a19ib3hfbmV3KEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMLCA1
KTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChzZWFyY2hCYXIpLCBoQm94LCBGQUxT
RSwgRkFMU0UsIDApOworCisgICAgR3RrV2lkZ2V0ICpjbG9zZUJ1dHRvbiA9IGd0a19idXR0b25f
bmV3X2Zyb21fc3RvY2soR1RLX1NUT0NLX0NMT1NFKTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQo
R1RLX0JPWChoQm94KSwgY2xvc2VCdXR0b24sIEZBTFNFLCBGQUxTRSwgMCk7CisKKyAgICBHdGtX
aWRnZXQgKmxhYmVsID0gZ3RrX2xhYmVsX25ld193aXRoX21uZW1vbmljKCJGaV9uZDoiKTsKKyAg
ICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChoQm94KSwgbGFiZWwsIEZBTFNFLCBGQUxTRSwg
MCk7CisKKyAgICBzZWFyY2hCYXItPmVudHJ5ID0gZ3RrX2VudHJ5X25ldygpOworICAgIGd0a19s
YWJlbF9zZXRfbW5lbW9uaWNfd2lkZ2V0KEdUS19MQUJFTChsYWJlbCksIHNlYXJjaEJhci0+ZW50
cnkpOworICAgIGd0a19lbnRyeV9zZXRfaWNvbl9mcm9tX3N0b2NrKEdUS19FTlRSWShzZWFyY2hC
YXItPmVudHJ5KSwgR1RLX0VOVFJZX0lDT05fU0VDT05EQVJZLCBHVEtfU1RPQ0tfQ0xFQVIpOwor
ICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKGhCb3gpLCBzZWFyY2hCYXItPmVudHJ5LCBG
QUxTRSwgRkFMU0UsIDApOworCisgICAgR3RrV2lkZ2V0ICpwcmV2QnV0dG9uID0gZ3RrX2J1dHRv
bl9uZXdfZnJvbV9zdG9jayhHVEtfU1RPQ0tfR09fQkFDSyk7CisgICAgZ3RrX2JveF9wYWNrX3N0
YXJ0KEdUS19CT1goaEJveCksIHByZXZCdXR0b24sIEZBTFNFLCBGQUxTRSwgMCk7CisKKyAgICBH
dGtXaWRnZXQgKm5leHRCdXR0b24gPSBndGtfYnV0dG9uX25ld19mcm9tX3N0b2NrKEdUS19TVE9D
S19HT19GT1JXQVJEKTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChoQm94KSwgbmV4
dEJ1dHRvbiwgRkFMU0UsIEZBTFNFLCAwKTsKKworICAgIHNlYXJjaEJhci0+Y2FzZUNoZWNrQnV0
dG9uID0gZ3RrX2NoZWNrX2J1dHRvbl9uZXdfd2l0aF9tbmVtb25pYygiQ2Ffc2Ugc2Vuc2l0aXZl
Iik7CisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1goaEJveCksIHNlYXJjaEJhci0+Y2Fz
ZUNoZWNrQnV0dG9uLCBGQUxTRSwgRkFMU0UsIDApOworCisgICAgZ19zaWduYWxfY29ubmVjdF9z
d2FwcGVkKGNsb3NlQnV0dG9uLCAiY2xpY2tlZCIsIEdfQ0FMTEJBQ0soc2VhcmNoQ2xvc2VCdXR0
b25DbGlja2VkQ2FsbGJhY2spLCBzZWFyY2hCYXIpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dh
cHBlZChzZWFyY2hCYXItPmVudHJ5LCAiaWNvbi1yZWxlYXNlIiwgR19DQUxMQkFDSyhzZWFyY2hF
bnRyeUljb25SZWxlYXNlZENhbGxiYWNrKSwgc2VhcmNoQmFyKTsKKyAgICBnX3NpZ25hbF9jb25u
ZWN0X2FmdGVyKHNlYXJjaEJhci0+ZW50cnksICJjaGFuZ2VkIiwgR19DQUxMQkFDSyhzZWFyY2hF
bnRyeUNoYW5nZWRDYWxsYmFjayksIHNlYXJjaEJhcik7CisgICAgZ19zaWduYWxfY29ubmVjdF9z
d2FwcGVkKHNlYXJjaEJhci0+ZW50cnksICJhY3RpdmF0ZSIsIEdfQ0FMTEJBQ0soc2VhcmNoRW50
cnlBY3RpdmF0ZWRDYWxsYmFjayksIHNlYXJjaEJhcik7CisgICAgZ19zaWduYWxfY29ubmVjdF9z
d2FwcGVkKG5leHRCdXR0b24sICJjbGlja2VkIiwgR19DQUxMQkFDSyhzZWFyY2hOZXh0QnV0dG9u
Q2xpY2tlZENhbGxiYWNrKSwgc2VhcmNoQmFyKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBw
ZWQocHJldkJ1dHRvbiwgImNsaWNrZWQiLCBHX0NBTExCQUNLKHNlYXJjaFByZXZCdXR0b25DbGlj
a2VkQ2FsbGJhY2spLCBzZWFyY2hCYXIpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChz
ZWFyY2hCYXItPmNhc2VDaGVja0J1dHRvbiwgInRvZ2dsZWQiLCBHX0NBTExCQUNLKHNlYXJjaENh
c2VDaGVja0J1dHRvblRvZ2dsZWRDYWxsYmFjayksIHNlYXJjaEJhcik7CisKKyAgICBndGtfd2lk
Z2V0X3Nob3dfYWxsKGhCb3gpOworfQorCitzdGF0aWMgdm9pZCBicm93c2VyX3NlYXJjaF9iYXJf
ZmluYWxpemUoR09iamVjdCAqb2JqZWN0KQoreworICAgIGdfb2JqZWN0X3VucmVmKEJST1dTRVJf
U0VBUkNIX0JBUihvYmplY3QpLT53ZWJWaWV3KTsKKworICAgIEdfT0JKRUNUX0NMQVNTKGJyb3dz
ZXJfc2VhcmNoX2Jhcl9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOworfQorCitzdGF0
aWMgdm9pZCBicm93c2VyX3NlYXJjaF9iYXJfY2xhc3NfaW5pdChCcm93c2VyU2VhcmNoQmFyQ2xh
c3MgKmtsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyAqb2JqZWN0X2NsYXNzID0gR19PQkpFQ1Rf
Q0xBU1Moa2xhc3MpOworCisgICAgb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9IGJyb3dzZXJfc2Vh
cmNoX2Jhcl9maW5hbGl6ZTsKK30KKworCitHdGtXaWRnZXQgKmJyb3dzZXJfc2VhcmNoX2Jhcl9u
ZXcoV2ViS2l0V2ViVmlldyAqd2ViVmlldykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCh3
ZWJWaWV3LCBOVUxMKTsKKworICAgIEd0a1dpZGdldCAqc2VhcmNoQmFyID0gR1RLX1dJREdFVChn
X29iamVjdF9uZXcoQlJPV1NFUl9UWVBFX1NFQVJDSF9CQVIsIE5VTEwpKTsKKyAgICBCUk9XU0VS
X1NFQVJDSF9CQVIoc2VhcmNoQmFyKS0+d2ViVmlldyA9IGdfb2JqZWN0X3JlZih3ZWJWaWV3KTsK
KworICAgIHJldHVybiBzZWFyY2hCYXI7Cit9CisKK3ZvaWQgYnJvd3Nlcl9zZWFyY2hfYmFyX3Nl
YXJjaF9uZXh0KEJyb3dzZXJTZWFyY2hCYXIgKnNlYXJjaEJhcikKK3sKKyAgICBnX3JldHVybl9p
Zl9mYWlsKHNlYXJjaEJhcik7CisKKyAgICBXZWJLaXRGaW5kQ29udHJvbGxlciAqY29udHJvbGxl
ciA9IHdlYmtpdF93ZWJfdmlld19nZXRfZmluZF9jb250cm9sbGVyKHNlYXJjaEJhci0+d2ViVmll
dyk7CisgICAgd2Via2l0X2ZpbmRfY29udHJvbGxlcl9zZWFyY2hfbmV4dChjb250cm9sbGVyKTsK
K30KKwordm9pZCBicm93c2VyX3NlYXJjaF9iYXJfc2VhcmNoX3ByZXZpb3VzKEJyb3dzZXJTZWFy
Y2hCYXIgKnNlYXJjaEJhcikKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKHNlYXJjaEJhcik7CisK
KyAgICBXZWJLaXRGaW5kQ29udHJvbGxlciAqY29udHJvbGxlciA9IHdlYmtpdF93ZWJfdmlld19n
ZXRfZmluZF9jb250cm9sbGVyKHNlYXJjaEJhci0+d2ViVmlldyk7CisgICAgd2Via2l0X2ZpbmRf
Y29udHJvbGxlcl9zZWFyY2hfcHJldmlvdXMoY29udHJvbGxlcik7Cit9CisKK3ZvaWQgYnJvd3Nl
cl9zZWFyY2hfYmFyX29wZW4oQnJvd3NlclNlYXJjaEJhciAqc2VhcmNoQmFyKQoreworICAgIGdf
cmV0dXJuX2lmX2ZhaWwoc2VhcmNoQmFyKTsKKworICAgIGd0a193aWRnZXRfc2hvdyhHVEtfV0lE
R0VUKHNlYXJjaEJhcikpOworfQorCit2b2lkIGJyb3dzZXJfc2VhcmNoX2Jhcl9jbG9zZShCcm93
c2VyU2VhcmNoQmFyICpzZWFyY2hCYXIpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChzZWFyY2hC
YXIpOworCisgICAgZ3RrX3dpZGdldF9oaWRlKEdUS19XSURHRVQoc2VhcmNoQmFyKSk7CisgICAg
V2ViS2l0RmluZENvbnRyb2xsZXIgKmNvbnRyb2xsZXIgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2Zp
bmRfY29udHJvbGxlcihzZWFyY2hCYXItPndlYlZpZXcpOworICAgIHdlYmtpdF9maW5kX2NvbnRy
b2xsZXJfc2VhcmNoX2ZpbmlzaChjb250cm9sbGVyKTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL01p
bmlCcm93c2VyL2d0ay9Ccm93c2VyU2VhcmNoQmFyLmggYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsv
QnJvd3NlclNlYXJjaEJhci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxODUzMjQ0NjA0OTc5NDMxMGE4NjkyZTg4
NGE4MzllMGY0ZTI4NWIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsv
QnJvd3NlclNlYXJjaEJhci5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTMgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBCcm93c2VyU2VhcmNoQmFyX2gK
KyNkZWZpbmUgQnJvd3NlclNlYXJjaEJhcl9oCisKKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaW5j
bHVkZSA8d2Via2l0Mi93ZWJraXQyLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBCUk9X
U0VSX1RZUEVfU0VBUkNIX0JBUiAgICAgICAgICAgIChicm93c2VyX3NlYXJjaF9iYXJfZ2V0X3R5
cGUoKSkKKyNkZWZpbmUgQlJPV1NFUl9TRUFSQ0hfQkFSKG9iaikgICAgICAgICAgICAoR19UWVBF
X0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIEJST1dTRVJfVFlQRV9TRUFSQ0hfQkFSLCBCcm93
c2VyU2VhcmNoQmFyKSkKKyNkZWZpbmUgQlJPV1NFUl9JU19TRUFSQ0hfQkFSKG9iaikgICAgICAg
ICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIEJST1dTRVJfVFlQRV9TRUFSQ0hf
QkFSKSkKKyNkZWZpbmUgQlJPV1NFUl9TRUFSQ0hfQkFSX0NMQVNTKGtsYXNzKSAgICAoR19UWVBF
X0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIEJST1dTRVJfVFlQRV9TRUFSQ0hfQkFSLCBCcm93
c2VyU2VhcmNoQmFyQ2xhc3MpKQorI2RlZmluZSBCUk9XU0VSX0lTX1NFQVJDSF9CQVJfQ0xBU1Mo
a2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCAgQlJPV1NFUl9UWVBFX1NF
QVJDSF9CQVIpKQorI2RlZmluZSBCUk9XU0VSX1NFQVJDSF9CQVJfR0VUX0NMQVNTKG9iaikgIChH
X1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgQlJPV1NFUl9UWVBFX1NFQVJDSF9CQVIs
IEJyb3dzZXJTZWFyY2hCYXJDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9Ccm93c2VyU2VhcmNo
QmFyICAgICAgIEJyb3dzZXJTZWFyY2hCYXI7Cit0eXBlZGVmIHN0cnVjdCBfQnJvd3NlclNlYXJj
aEJhckNsYXNzICBCcm93c2VyU2VhcmNoQmFyQ2xhc3M7CisKK3N0cnVjdCBfQnJvd3NlclNlYXJj
aEJhckNsYXNzIHsKKyAgICBHdGtCb3hDbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCitHVHlwZSBi
cm93c2VyX3NlYXJjaF9iYXJfZ2V0X3R5cGUodm9pZCk7CisKK0d0a1dpZGdldCAqYnJvd3Nlcl9z
ZWFyY2hfYmFyX25ldyhXZWJLaXRXZWJWaWV3ICopOwordm9pZCBicm93c2VyX3NlYXJjaF9iYXJf
c2VhcmNoX25leHQoQnJvd3NlclNlYXJjaEJhciAqKTsKK3ZvaWQgYnJvd3Nlcl9zZWFyY2hfYmFy
X3NlYXJjaF9wcmV2aW91cyhCcm93c2VyU2VhcmNoQmFyICopOwordm9pZCBicm93c2VyX3NlYXJj
aF9iYXJfb3BlbihCcm93c2VyU2VhcmNoQmFyICopOwordm9pZCBicm93c2VyX3NlYXJjaF9iYXJf
Y2xvc2UoQnJvd3NlclNlYXJjaEJhciAqKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jIGIvVG9vbHMvTWlu
aUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYwppbmRleCA1NWY5MDY4MjBjOWQ2MTU4ZDNjNTU3
NzMzMDJmZjgwYWI2ZWFlYjZmLi5hYmM1ZDJmMGMwZDI5YTBjOTIxZGI1YzAyNzI4YmM0MzgxYzc1
OTAzIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCisr
KyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKQEAgLTI4LDYgKzI4LDcg
QEAKICNpbmNsdWRlICJCcm93c2VyV2luZG93LmgiCiAKICNpbmNsdWRlICJCcm93c2VyRG93bmxv
YWRzQmFyLmgiCisjaW5jbHVkZSAiQnJvd3NlclNlYXJjaEJhci5oIgogI2luY2x1ZGUgIkJyb3dz
ZXJTZXR0aW5nc0RpYWxvZy5oIgogI2luY2x1ZGUgPHN0cmluZy5oPgogCkBAIC00NywxMCArNDgs
MTMgQEAgc3RydWN0IF9Ccm93c2VyV2luZG93IHsKICAgICBHdGtXaWRnZXQgKmZvcndhcmRJdGVt
OwogICAgIEd0a1dpZGdldCAqem9vbUluSXRlbTsKICAgICBHdGtXaWRnZXQgKnpvb21PdXRJdGVt
OworICAgIEd0a1dpZGdldCAqc2VhcmNoSXRlbTsKICAgICBHdGtXaWRnZXQgKnN0YXR1c0xhYmVs
OwogICAgIEd0a1dpZGdldCAqc2V0dGluZ3NEaWFsb2c7CiAgICAgV2ViS2l0V2ViVmlldyAqd2Vi
VmlldzsKICAgICBHdGtXaWRnZXQgKmRvd25sb2Fkc0JhcjsKKyAgICBHdGtXaWRnZXQgKnNlYXJj
aEJhcjsKKyAgICBnYm9vbGVhbiBzZWFyY2hCYXJWaXNpYmxlOwogICAgIEdka1BpeGJ1ZiAqZmF2
aWNvbjsKICAgICBHdGtXaWRnZXQgKmZ1bGxTY3JlZW5NZXNzYWdlTGFiZWw7CiAgICAgZ3VpbnQg
ZnVsbFNjcmVlbk1lc3NhZ2VMYWJlbElkOwpAQCAtMzAzLDYgKzMwNyw3IEBAIHN0YXRpYyBnYm9v
bGVhbiB3ZWJWaWV3RW50ZXJGdWxsU2NyZWVuKFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIEJyb3dz
ZXJXaW5kb3cgKndpCiAKICAgICB3aW5kb3ctPmZ1bGxTY3JlZW5NZXNzYWdlTGFiZWxJZCA9IGdf
dGltZW91dF9hZGRfc2Vjb25kcygyLCAoR1NvdXJjZUZ1bmMpZnVsbFNjcmVlbk1lc3NhZ2VUaW1l
b3V0Q2FsbGJhY2ssIHdpbmRvdyk7CiAgICAgZ3RrX3dpZGdldF9oaWRlKHdpbmRvdy0+dG9vbGJh
cik7CisgICAgYnJvd3Nlcl9zZWFyY2hfYmFyX2Nsb3NlKEJST1dTRVJfU0VBUkNIX0JBUigod2lu
ZG93LT5zZWFyY2hCYXIpKSk7CiAKICAgICByZXR1cm4gRkFMU0U7CiB9CkBAIC0zMTUsNiArMzIw
LDggQEAgc3RhdGljIGdib29sZWFuIHdlYlZpZXdMZWF2ZUZ1bGxTY3JlZW4oV2ViS2l0V2ViVmll
dyAqd2ViVmlldywgQnJvd3NlcldpbmRvdyAqd2kKICAgICB9CiAgICAgZ3RrX3dpZGdldF9oaWRl
KHdpbmRvdy0+ZnVsbFNjcmVlbk1lc3NhZ2VMYWJlbCk7CiAgICAgZ3RrX3dpZGdldF9zaG93KHdp
bmRvdy0+dG9vbGJhcik7CisgICAgaWYgKHdpbmRvdy0+c2VhcmNoQmFyVmlzaWJsZSkKKyAgICAg
ICAgYnJvd3Nlcl9zZWFyY2hfYmFyX29wZW4oQlJPV1NFUl9TRUFSQ0hfQkFSKCh3aW5kb3ctPnNl
YXJjaEJhcikpKTsKIAogICAgIHJldHVybiBGQUxTRTsKIH0KQEAgLTQ2Nyw2ICs0NzQsMTUgQEAg
c3RhdGljIHZvaWQgem9vbU91dENhbGxiYWNrKEJyb3dzZXJXaW5kb3cgKndpbmRvdykKICAgICB3
ZWJraXRfd2ViX3ZpZXdfc2V0X3pvb21fbGV2ZWwod2luZG93LT53ZWJWaWV3LCB6b29tTGV2ZWwp
OwogfQogCitzdGF0aWMgdm9pZCBzZWFyY2hDYWxsYmFjayhCcm93c2VyV2luZG93ICp3aW5kb3cp
Cit7CisgICAgd2luZG93LT5zZWFyY2hCYXJWaXNpYmxlID0gIWd0a193aWRnZXRfZ2V0X3Zpc2li
bGUod2luZG93LT5zZWFyY2hCYXIpOworICAgIGlmICh3aW5kb3ctPnNlYXJjaEJhclZpc2libGUp
CisgICAgICAgIGJyb3dzZXJfc2VhcmNoX2Jhcl9vcGVuKEJST1dTRVJfU0VBUkNIX0JBUih3aW5k
b3ctPnNlYXJjaEJhcikpOworICAgIGVsc2UKKyAgICAgICAgYnJvd3Nlcl9zZWFyY2hfYmFyX2Ns
b3NlKEJST1dTRVJfU0VBUkNIX0JBUih3aW5kb3ctPnNlYXJjaEJhcikpOworfQorCiBzdGF0aWMg
dm9pZCBicm93c2VyV2luZG93RmluYWxpemUoR09iamVjdCAqZ09iamVjdCkKIHsKICAgICBCcm93
c2VyV2luZG93ICp3aW5kb3cgPSBCUk9XU0VSX1dJTkRPVyhnT2JqZWN0KTsKQEAgLTU1OCw2ICs1
NzQsMTQgQEAgc3RhdGljIHZvaWQgYnJvd3Nlcl93aW5kb3dfaW5pdChCcm93c2VyV2luZG93ICp3
aW5kb3cpCiAgICAgZ3RrX3Rvb2xiYXJfaW5zZXJ0KEdUS19UT09MQkFSKHRvb2xiYXIpLCBpdGVt
LCAtMSk7CiAgICAgZ3RrX3dpZGdldF9zaG93KEdUS19XSURHRVQoaXRlbSkpOwogCisgICAgaXRl
bSA9IGd0a190b29sX2J1dHRvbl9uZXdfZnJvbV9zdG9jayhHVEtfU1RPQ0tfRklORCk7CisgICAg
d2luZG93LT5zZWFyY2hJdGVtID0gR1RLX1dJREdFVChpdGVtKTsKKyAgICBnX3NpZ25hbF9jb25u
ZWN0X3N3YXBwZWQoaXRlbSwgImNsaWNrZWQiLCBHX0NBTExCQUNLKHNlYXJjaENhbGxiYWNrKSwg
d2luZG93KTsKKyAgICBndGtfdG9vbGJhcl9pbnNlcnQoR1RLX1RPT0xCQVIodG9vbGJhciksIGl0
ZW0sIC0xKTsKKyAgICBndGtfd2lkZ2V0X3Nob3coR1RLX1dJREdFVChpdGVtKSk7CisKKyAgICB3
aW5kb3ctPnNlYXJjaEJhclZpc2libGUgPSBGQUxTRTsKKwogICAgIGl0ZW0gPSBndGtfdG9vbF9p
dGVtX25ldygpOwogICAgIGd0a190b29sX2l0ZW1fc2V0X2V4cGFuZChpdGVtLCBUUlVFKTsKICAg
ICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKGl0ZW0pLCB3aW5kb3ctPnVyaUVudHJ5
KTsKQEAgLTYwMCw2ICs2MjQsOSBAQCBzdGF0aWMgdm9pZCBicm93c2VyV2luZG93Q29uc3RydWN0
ZWQoR09iamVjdCAqZ09iamVjdCkKIAogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2Via2l0X3dlYl92
aWV3X2dldF9jb250ZXh0KHdpbmRvdy0+d2ViVmlldyksICJkb3dubG9hZC1zdGFydGVkIiwgR19D
QUxMQkFDSyhkb3dubG9hZFN0YXJ0ZWQpLCB3aW5kb3cpOwogCisgICAgd2luZG93LT5zZWFyY2hC
YXIgPSBHVEtfV0lER0VUKGJyb3dzZXJfc2VhcmNoX2Jhcl9uZXcod2luZG93LT53ZWJWaWV3KSk7
CisgICAgZ3RrX2JveF9wYWNrX2VuZChHVEtfQk9YKHdpbmRvdy0+bWFpbkJveCksIHdpbmRvdy0+
c2VhcmNoQmFyLCBGQUxTRSwgRkFMU0UsIDApOworCiAgICAgV2ViS2l0QmFja0ZvcndhcmRMaXN0
ICpiYWNrRm9yd2FkbGlzdCA9IHdlYmtpdF93ZWJfdmlld19nZXRfYmFja19mb3J3YXJkX2xpc3Qo
d2luZG93LT53ZWJWaWV3KTsKICAgICBnX3NpZ25hbF9jb25uZWN0KGJhY2tGb3J3YWRsaXN0LCAi
Y2hhbmdlZCIsIEdfQ0FMTEJBQ0soYmFja0ZvcndhZGxpc3RDaGFuZ2VkKSwgd2luZG93KTsKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0dOVW1ha2VmaWxlLmFtIGIvVG9vbHMv
TWluaUJyb3dzZXIvZ3RrL0dOVW1ha2VmaWxlLmFtCmluZGV4IGY0MmEzMGI3OTJiMjcwYzVlZmJk
YmE1OGI5ZWJiNmYxZDZlMmIxZjguLjI5ZDRlYzQxNDkxOWNhNWEyOTYzZGUxMjI5MjM5ZDIxMzcx
MmZkYTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9HTlVtYWtlZmlsZS5hbQor
KysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvR05VbWFrZWZpbGUuYW0KQEAgLTIyLDYgKzIyLDgg
QEAgUHJvZ3JhbXNfTWluaUJyb3dzZXJfU09VUkNFUyA9IFwKIAlUb29scy9NaW5pQnJvd3Nlci9n
dGsvQnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnQuYyBcCiAJVG9vbHMvTWluaUJyb3dzZXIvZ3Rr
L0Jyb3dzZXJEb3dubG9hZHNCYXIuaCBcCiAJVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJE
b3dubG9hZHNCYXIuYyBcCisJVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJTZWFyY2hCYXIu
aCBcCisJVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJTZWFyY2hCYXIuYyBcCiAJVG9vbHMv
TWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJTZXR0aW5nc0RpYWxvZy5oIFwKIAlUb29scy9NaW5pQnJv
d3Nlci9ndGsvQnJvd3NlclNldHRpbmdzRGlhbG9nLmMgXAogCVRvb2xzL01pbmlCcm93c2VyL2d0
ay9Ccm93c2VyV2luZG93LmggXAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>206667</attachid>
            <date>2013-07-15 09:02:32 -0700</date>
            <delta_ts>2013-07-23 04:40:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-117631-20130715180137.patch</filename>
            <type>text/plain</type>
            <size>16379</size>
            <attacher name="Andres Gomez Garcia">agomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUyNjMwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2Y0MTk3ZDU0ZTYzNDRkMDU2NzA2OWZhNmFlZjJjMzQ5
Mjk4MmFiYi4uNDk3YzQ3OTYyZGIxM2JiZGUyOWQzNGM5ZGU0NGZlMzJmYzcxNjc1OSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQx
IEBACisyMDEzLTA3LTE1ICBBbmRyZXMgR29tZXogIDxhZ29tZXpAaWdhbGlhLmNvbT4KKworICAg
ICAgICBbR1RLXSBQcm92aWRlIHNlYXJjaCBmdW5jdGlvbmFsaXR5IHRvIE1pbmlCcm93c2VyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTc2MzEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIGEgc2Vh
cmNoIGJhciB0byBNaW5pQnJvd3NlciB3aXRoIHRoZSBtaW5pbXVtIGZ1bmN0aW9uYWxpdHkKKyAg
ICAgICAgYW5kIGEgbmV3IGJ1dHRvbiB0byB0aGUgdG9vbGJhciBmb3Igc2hvd2luZy9oaWRpbmcg
dGhlIG5ldyBzZWFyY2gKKyAgICAgICAgYmFyLgorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3Rr
L0Jyb3dzZXJTZWFyY2hCYXIuYzogQWRkZWQuCisgICAgICAgIChkb1NlYXJjaCk6CisgICAgICAg
IChzZWFyY2hOZXh0KToKKyAgICAgICAgKHNlYXJjaFByZXZpb3VzKToKKyAgICAgICAgKHNlYXJj
aENsb3NlQnV0dG9uQ2xpY2tlZENhbGxiYWNrKToKKyAgICAgICAgKHNlYXJjaEVudHJ5SWNvblJl
bGVhc2VkQ2FsbGJhY2spOgorICAgICAgICAoc2VhcmNoRW50cnlDaGFuZ2VkQ2FsbGJhY2spOgor
ICAgICAgICAoc2VhcmNoRW50cnlBY3RpdmF0ZWRDYWxsYmFjayk6CisgICAgICAgIChzZWFyY2hQ
cmV2QnV0dG9uQ2xpY2tlZENhbGxiYWNrKToKKyAgICAgICAgKHNlYXJjaE5leHRCdXR0b25DbGlj
a2VkQ2FsbGJhY2spOgorICAgICAgICAoc2VhcmNoQ2FzZUNoZWNrQnV0dG9uVG9nZ2xlZENhbGxi
YWNrKToKKyAgICAgICAgKGJyb3dzZXJfc2VhcmNoX2Jhcl9pbml0KToKKyAgICAgICAgKGJyb3dz
ZXJfc2VhcmNoX2Jhcl9maW5hbGl6ZSk6CisgICAgICAgIChicm93c2VyX3NlYXJjaF9iYXJfY2xh
c3NfaW5pdCk6CisgICAgICAgIChicm93c2VyX3NlYXJjaF9iYXJfbmV3KToKKyAgICAgICAgKGJy
b3dzZXJfc2VhcmNoX2Jhcl9vcGVuKToKKyAgICAgICAgKGJyb3dzZXJfc2VhcmNoX2Jhcl9jbG9z
ZSk6CisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJTZWFyY2hCYXIuaDogQWRkZWQu
CisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYzoKKyAgICAgICAgKHdl
YlZpZXdFbnRlckZ1bGxTY3JlZW4pOiBDbG9zZXMgbmV3IHNlYXJjaCBiYXIuCisgICAgICAgICh3
ZWJWaWV3TGVhdmVGdWxsU2NyZWVuKTogT3BlbnMgbmV3IHNlYXJjaCBiYXIgaWYgcHJldmlvdXNs
eQorICAgICAgICB2aXNpYmxlLgorICAgICAgICAoc2VhcmNoQ2FsbGJhY2spOiBBZGRlZC4gU2hv
d3MgYW5kIGhpZGVzIHRoZSBuZXcgc2VhcmNoIGJhci4KKyAgICAgICAgKGJyb3dzZXJfd2luZG93
X2luaXQpOiBBZGRlZCBzZWFyY2ggYnV0dG9uIHRvIHRoZSB0b29sYmFyLgorICAgICAgICAoYnJv
d3NlcldpbmRvd0NvbnN0cnVjdGVkKTogQ3JlYXRlcyB0aGUgbmV3IHNlYXJjaCBiYXIuCisgICAg
ICAgICogTWluaUJyb3dzZXIvZ3RrL0dOVW1ha2VmaWxlLmFtOiBBZGRlZCBuZXcgZmlsZXMgdG8g
Y29tcGlsYXRpb24uCisKIDIwMTMtMDctMTUgIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyICA8Y2Fs
dmFyaXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBbR1RLXSBJbmNyZWFzZSB0aGUgSkhCdWlsZCB2
ZXJzaW9uIG9mIEdTdHJlYW1lciB0byAxLjAuNwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dz
ZXIvZ3RrL0Jyb3dzZXJTZWFyY2hCYXIuYyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2Vy
U2VhcmNoQmFyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjNhNjcxNzM1ZWYyNzJlY2FjOWNkNGI2ZGU4MTY0MTIw
OWNhNDM1MQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2Vy
U2VhcmNoQmFyLmMKQEAgLTAsMCArMSwxOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
SWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIkJyb3dzZXJTZWFyY2hCYXIuaCIKKwor
CitzdHJ1Y3QgX0Jyb3dzZXJTZWFyY2hCYXIgeworICAgIEd0a0JveCBwYXJlbnQ7CisKKyAgICBX
ZWJLaXRXZWJWaWV3ICp3ZWJWaWV3OworICAgIEd0a1dpZGdldCAqZW50cnk7CisgICAgR3RrV2lk
Z2V0ICpjYXNlQ2hlY2tCdXR0b247Cit9OworCitHX0RFRklORV9UWVBFKEJyb3dzZXJTZWFyY2hC
YXIsIGJyb3dzZXJfc2VhcmNoX2JhciwgR1RLX1RZUEVfQk9YKQorCisKK3N0YXRpYyB2b2lkIGRv
U2VhcmNoKEJyb3dzZXJTZWFyY2hCYXIgKnNlYXJjaEJhcikKK3sKKyAgICBjb25zdCBnY2hhciAq
dGV4dCA9IGd0a19lbnRyeV9nZXRfdGV4dChHVEtfRU5UUlkoc2VhcmNoQmFyLT5lbnRyeSkpOwor
CisgICAgaWYgKCFnX3N0cmNtcDAodGV4dCwgIiIpKQorICAgICAgICByZXR1cm47CisKKyAgICBX
ZWJLaXRGaW5kQ29udHJvbGxlciAqY29udHJvbGxlciA9IHdlYmtpdF93ZWJfdmlld19nZXRfZmlu
ZF9jb250cm9sbGVyKHNlYXJjaEJhci0+d2ViVmlldyk7CisgICAgV2ViS2l0RmluZE9wdGlvbnMg
b3B0aW9ucyA9IFdFQktJVF9GSU5EX09QVElPTlNfTk9ORTsKKyAgICBpZiAoIWd0a190b2dnbGVf
YnV0dG9uX2dldF9hY3RpdmUoR1RLX1RPR0dMRV9CVVRUT04oc2VhcmNoQmFyLT5jYXNlQ2hlY2tC
dXR0b24pKSkKKyAgICAgICAgb3B0aW9ucyB8PSBXRUJLSVRfRklORF9PUFRJT05TX0NBU0VfSU5T
RU5TSVRJVkU7CisKKyAgICB3ZWJraXRfZmluZF9jb250cm9sbGVyX3NlYXJjaChjb250cm9sbGVy
LCB0ZXh0LCBvcHRpb25zLCBHX01BWFVJTlQpOworfQorCitzdGF0aWMgdm9pZCBzZWFyY2hOZXh0
KEJyb3dzZXJTZWFyY2hCYXIgKnNlYXJjaEJhcikKK3sKKyAgICBXZWJLaXRGaW5kQ29udHJvbGxl
ciAqY29udHJvbGxlciA9IHdlYmtpdF93ZWJfdmlld19nZXRfZmluZF9jb250cm9sbGVyKHNlYXJj
aEJhci0+d2ViVmlldyk7CisgICAgd2Via2l0X2ZpbmRfY29udHJvbGxlcl9zZWFyY2hfbmV4dChj
b250cm9sbGVyKTsKK30KKworc3RhdGljIHZvaWQgc2VhcmNoUHJldmlvdXMoQnJvd3NlclNlYXJj
aEJhciAqc2VhcmNoQmFyKQoreworICAgIFdlYktpdEZpbmRDb250cm9sbGVyICpjb250cm9sbGVy
ID0gd2Via2l0X3dlYl92aWV3X2dldF9maW5kX2NvbnRyb2xsZXIoc2VhcmNoQmFyLT53ZWJWaWV3
KTsKKyAgICB3ZWJraXRfZmluZF9jb250cm9sbGVyX3NlYXJjaF9wcmV2aW91cyhjb250cm9sbGVy
KTsKK30KKworc3RhdGljIHZvaWQgc2VhcmNoQ2xvc2VCdXR0b25DbGlja2VkQ2FsbGJhY2soQnJv
d3NlclNlYXJjaEJhciAqc2VhcmNoQmFyKQoreworICAgIGJyb3dzZXJfc2VhcmNoX2Jhcl9jbG9z
ZShzZWFyY2hCYXIpOworfQorCitzdGF0aWMgdm9pZCBzZWFyY2hFbnRyeUljb25SZWxlYXNlZENh
bGxiYWNrKEJyb3dzZXJTZWFyY2hCYXIgKnNlYXJjaEJhciwgR3RrRW50cnlJY29uUG9zaXRpb24g
aWNvblBvcykKK3sKKyAgICBzd2l0Y2ggKGljb25Qb3MpIHsKKyAgICBjYXNlIEdUS19FTlRSWV9J
Q09OX1BSSU1BUlk6CisgICAgICAgIHNlYXJjaE5leHQoc2VhcmNoQmFyKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBHVEtfRU5UUllfSUNPTl9TRUNPTkRBUlk6CisgICAgICAgIGd0a19lbnRy
eV9zZXRfdGV4dChHVEtfRU5UUlkoc2VhcmNoQmFyLT5lbnRyeSksICIiKTsKKworICAgICAgICBX
ZWJLaXRGaW5kQ29udHJvbGxlciAqY29udHJvbGxlciA9IHdlYmtpdF93ZWJfdmlld19nZXRfZmlu
ZF9jb250cm9sbGVyKHNlYXJjaEJhci0+d2ViVmlldyk7CisgICAgICAgIHdlYmtpdF9maW5kX2Nv
bnRyb2xsZXJfc2VhcmNoX2ZpbmlzaChjb250cm9sbGVyKTsKKyAgICAgICAgYnJlYWs7CisgICAg
ZGVmYXVsdDoKKyAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQoKTsKKyAgICB9Cit9CisKK3N0
YXRpYyB2b2lkIHNlYXJjaEVudHJ5Q2hhbmdlZENhbGxiYWNrKEd0a0VudHJ5ICplbnRyeSwgQnJv
d3NlclNlYXJjaEJhciAqc2VhcmNoQmFyKQoreworICAgIGRvU2VhcmNoKHNlYXJjaEJhcik7Cit9
CisKK3N0YXRpYyB2b2lkIHNlYXJjaEVudHJ5QWN0aXZhdGVkQ2FsbGJhY2soQnJvd3NlclNlYXJj
aEJhciAqc2VhcmNoQmFyKQoreworICAgIHNlYXJjaE5leHQoc2VhcmNoQmFyKTsKK30KKworc3Rh
dGljIHZvaWQgc2VhcmNoUHJldkJ1dHRvbkNsaWNrZWRDYWxsYmFjayhCcm93c2VyU2VhcmNoQmFy
ICpzZWFyY2hCYXIpCit7CisgICAgc2VhcmNoUHJldmlvdXMoc2VhcmNoQmFyKTsKK30KKworc3Rh
dGljIHZvaWQgc2VhcmNoTmV4dEJ1dHRvbkNsaWNrZWRDYWxsYmFjayhCcm93c2VyU2VhcmNoQmFy
ICpzZWFyY2hCYXIpCit7CisgICAgc2VhcmNoTmV4dChzZWFyY2hCYXIpOworfQorCitzdGF0aWMg
dm9pZCBzZWFyY2hDYXNlQ2hlY2tCdXR0b25Ub2dnbGVkQ2FsbGJhY2soQnJvd3NlclNlYXJjaEJh
ciAqc2VhcmNoQmFyKQoreworICAgIGRvU2VhcmNoKHNlYXJjaEJhcik7Cit9CisKK3N0YXRpYyB2
b2lkIGJyb3dzZXJfc2VhcmNoX2Jhcl9pbml0KEJyb3dzZXJTZWFyY2hCYXIgKnNlYXJjaEJhcikK
K3sKKyAgICBndGtfYm94X3NldF9zcGFjaW5nKEdUS19CT1goc2VhcmNoQmFyKSwgNik7CisgICAg
Z3RrX3dpZGdldF9zZXRfaGV4cGFuZChHVEtfV0lER0VUKHNlYXJjaEJhciksIFRSVUUpOworCisg
ICAgR3RrV2lkZ2V0ICpoQm94ID0gZ3RrX2JveF9uZXcoR1RLX09SSUVOVEFUSU9OX0hPUklaT05U
QUwsIDUpOworICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHNlYXJjaEJhciksIGhCb3gs
IEZBTFNFLCBGQUxTRSwgMCk7CisKKyAgICBHdGtXaWRnZXQgKmNsb3NlQnV0dG9uID0gZ3RrX2J1
dHRvbl9uZXdfZnJvbV9zdG9jayhHVEtfU1RPQ0tfQ0xPU0UpOworICAgIGd0a19ib3hfcGFja19z
dGFydChHVEtfQk9YKGhCb3gpLCBjbG9zZUJ1dHRvbiwgRkFMU0UsIEZBTFNFLCAwKTsKKworICAg
IEd0a1dpZGdldCAqbGFiZWwgPSBndGtfbGFiZWxfbmV3X3dpdGhfbW5lbW9uaWMoIkZpX25kOiIp
OworICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKGhCb3gpLCBsYWJlbCwgRkFMU0UsIEZB
TFNFLCAwKTsKKworICAgIHNlYXJjaEJhci0+ZW50cnkgPSBndGtfZW50cnlfbmV3KCk7CisgICAg
Z3RrX2xhYmVsX3NldF9tbmVtb25pY193aWRnZXQoR1RLX0xBQkVMKGxhYmVsKSwgc2VhcmNoQmFy
LT5lbnRyeSk7CisgICAgZ3RrX2VudHJ5X3NldF9pY29uX2Zyb21fc3RvY2soR1RLX0VOVFJZKHNl
YXJjaEJhci0+ZW50cnkpLCBHVEtfRU5UUllfSUNPTl9QUklNQVJZLCBHVEtfU1RPQ0tfRklORCk7
CisgICAgZ3RrX2VudHJ5X3NldF9pY29uX2Zyb21fc3RvY2soR1RLX0VOVFJZKHNlYXJjaEJhci0+
ZW50cnkpLCBHVEtfRU5UUllfSUNPTl9TRUNPTkRBUlksIEdUS19TVE9DS19DTEVBUik7CisgICAg
Z3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1goaEJveCksIHNlYXJjaEJhci0+ZW50cnksIEZBTFNF
LCBGQUxTRSwgMCk7CisKKyAgICBHdGtXaWRnZXQgKnByZXZCdXR0b24gPSBndGtfYnV0dG9uX25l
d19mcm9tX3N0b2NrKEdUS19TVE9DS19HT19CQUNLKTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQo
R1RLX0JPWChoQm94KSwgcHJldkJ1dHRvbiwgRkFMU0UsIEZBTFNFLCAwKTsKKworICAgIEd0a1dp
ZGdldCAqbmV4dEJ1dHRvbiA9IGd0a19idXR0b25fbmV3X2Zyb21fc3RvY2soR1RLX1NUT0NLX0dP
X0ZPUldBUkQpOworICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKGhCb3gpLCBuZXh0QnV0
dG9uLCBGQUxTRSwgRkFMU0UsIDApOworCisgICAgc2VhcmNoQmFyLT5jYXNlQ2hlY2tCdXR0b24g
PSBndGtfY2hlY2tfYnV0dG9uX25ld193aXRoX21uZW1vbmljKCJDYV9zZSBzZW5zaXRpdmUiKTsK
KyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChoQm94KSwgc2VhcmNoQmFyLT5jYXNlQ2hl
Y2tCdXR0b24sIEZBTFNFLCBGQUxTRSwgMCk7CisKKyAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBw
ZWQoY2xvc2VCdXR0b24sICJjbGlja2VkIiwgR19DQUxMQkFDSyhzZWFyY2hDbG9zZUJ1dHRvbkNs
aWNrZWRDYWxsYmFjayksIHNlYXJjaEJhcik7CisgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVk
KHNlYXJjaEJhci0+ZW50cnksICJpY29uLXJlbGVhc2UiLCBHX0NBTExCQUNLKHNlYXJjaEVudHJ5
SWNvblJlbGVhc2VkQ2FsbGJhY2spLCBzZWFyY2hCYXIpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Rf
YWZ0ZXIoc2VhcmNoQmFyLT5lbnRyeSwgImNoYW5nZWQiLCBHX0NBTExCQUNLKHNlYXJjaEVudHJ5
Q2hhbmdlZENhbGxiYWNrKSwgc2VhcmNoQmFyKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBw
ZWQoc2VhcmNoQmFyLT5lbnRyeSwgImFjdGl2YXRlIiwgR19DQUxMQkFDSyhzZWFyY2hFbnRyeUFj
dGl2YXRlZENhbGxiYWNrKSwgc2VhcmNoQmFyKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBw
ZWQobmV4dEJ1dHRvbiwgImNsaWNrZWQiLCBHX0NBTExCQUNLKHNlYXJjaE5leHRCdXR0b25DbGlj
a2VkQ2FsbGJhY2spLCBzZWFyY2hCYXIpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChw
cmV2QnV0dG9uLCAiY2xpY2tlZCIsIEdfQ0FMTEJBQ0soc2VhcmNoUHJldkJ1dHRvbkNsaWNrZWRD
YWxsYmFjayksIHNlYXJjaEJhcik7CisgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKHNlYXJj
aEJhci0+Y2FzZUNoZWNrQnV0dG9uLCAidG9nZ2xlZCIsIEdfQ0FMTEJBQ0soc2VhcmNoQ2FzZUNo
ZWNrQnV0dG9uVG9nZ2xlZENhbGxiYWNrKSwgc2VhcmNoQmFyKTsKKworICAgIGd0a193aWRnZXRf
c2hvd19hbGwoaEJveCk7Cit9CisKK3N0YXRpYyB2b2lkIGJyb3dzZXJfc2VhcmNoX2Jhcl9maW5h
bGl6ZShHT2JqZWN0ICpvYmplY3QpCit7CisgICAgZ19vYmplY3RfdW5yZWYoQlJPV1NFUl9TRUFS
Q0hfQkFSKG9iamVjdCktPndlYlZpZXcpOworCisgICAgR19PQkpFQ1RfQ0xBU1MoYnJvd3Nlcl9z
ZWFyY2hfYmFyX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2
b2lkIGJyb3dzZXJfc2VhcmNoX2Jhcl9jbGFzc19pbml0KEJyb3dzZXJTZWFyY2hCYXJDbGFzcyAq
a2xhc3MpCit7CisgICAgR09iamVjdENsYXNzICpvYmplY3RfY2xhc3MgPSBHX09CSkVDVF9DTEFT
UyhrbGFzcyk7CisKKyAgICBvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gYnJvd3Nlcl9zZWFyY2hf
YmFyX2ZpbmFsaXplOworfQorCitHdGtXaWRnZXQgKmJyb3dzZXJfc2VhcmNoX2Jhcl9uZXcoV2Vi
S2l0V2ViVmlldyAqd2ViVmlldykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbCh3ZWJWaWV3
LCBOVUxMKTsKKworICAgIEd0a1dpZGdldCAqc2VhcmNoQmFyID0gR1RLX1dJREdFVChnX29iamVj
dF9uZXcoQlJPV1NFUl9UWVBFX1NFQVJDSF9CQVIsIE5VTEwpKTsKKyAgICBCUk9XU0VSX1NFQVJD
SF9CQVIoc2VhcmNoQmFyKS0+d2ViVmlldyA9IGdfb2JqZWN0X3JlZih3ZWJWaWV3KTsKKworICAg
IHJldHVybiBzZWFyY2hCYXI7Cit9CisKK3ZvaWQgYnJvd3Nlcl9zZWFyY2hfYmFyX29wZW4oQnJv
d3NlclNlYXJjaEJhciAqc2VhcmNoQmFyKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoc2VhcmNo
QmFyKTsKKworICAgIGd0a193aWRnZXRfc2hvdyhHVEtfV0lER0VUKHNlYXJjaEJhcikpOworfQor
Cit2b2lkIGJyb3dzZXJfc2VhcmNoX2Jhcl9jbG9zZShCcm93c2VyU2VhcmNoQmFyICpzZWFyY2hC
YXIpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChzZWFyY2hCYXIpOworCisgICAgZ3RrX3dpZGdl
dF9oaWRlKEdUS19XSURHRVQoc2VhcmNoQmFyKSk7CisgICAgV2ViS2l0RmluZENvbnRyb2xsZXIg
KmNvbnRyb2xsZXIgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2ZpbmRfY29udHJvbGxlcihzZWFyY2hC
YXItPndlYlZpZXcpOworICAgIHdlYmtpdF9maW5kX2NvbnRyb2xsZXJfc2VhcmNoX2ZpbmlzaChj
b250cm9sbGVyKTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2Vy
U2VhcmNoQmFyLmggYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlclNlYXJjaEJhci5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjM0ZGE3NzBiNTBkZDBjMjJkZTJmMDk5YTg1ZTZkODc1ZjRlNGQ2ODkKLS0tIC9k
ZXYvbnVsbAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlclNlYXJjaEJhci5oCkBA
IC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBCcm93c2VyU2VhcmNoQmFyX2gKKyNkZWZpbmUgQnJvd3NlclNlYXJj
aEJhcl9oCisKKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaW5jbHVkZSA8d2Via2l0Mi93ZWJraXQy
Lmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBCUk9XU0VSX1RZUEVfU0VBUkNIX0JBUiAg
ICAgICAgICAgIChicm93c2VyX3NlYXJjaF9iYXJfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgQlJPV1NF
Ul9TRUFSQ0hfQkFSKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1Qo
KG9iaiksIEJST1dTRVJfVFlQRV9TRUFSQ0hfQkFSLCBCcm93c2VyU2VhcmNoQmFyKSkKKyNkZWZp
bmUgQlJPV1NFUl9JU19TRUFSQ0hfQkFSKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RB
TkNFX1RZUEUoKG9iaiksIEJST1dTRVJfVFlQRV9TRUFSQ0hfQkFSKSkKKyNkZWZpbmUgQlJPV1NF
Ul9TRUFSQ0hfQkFSX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGts
YXNzKSwgIEJST1dTRVJfVFlQRV9TRUFSQ0hfQkFSLCBCcm93c2VyU2VhcmNoQmFyQ2xhc3MpKQor
I2RlZmluZSBCUk9XU0VSX0lTX1NFQVJDSF9CQVJfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tf
Q0xBU1NfVFlQRSgoa2xhc3MpLCAgQlJPV1NFUl9UWVBFX1NFQVJDSF9CQVIpKQorI2RlZmluZSBC
Uk9XU0VSX1NFQVJDSF9CQVJfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NM
QVNTKChvYmopLCAgQlJPV1NFUl9UWVBFX1NFQVJDSF9CQVIsIEJyb3dzZXJTZWFyY2hCYXJDbGFz
cykpCisKK3R5cGVkZWYgc3RydWN0IF9Ccm93c2VyU2VhcmNoQmFyICAgICAgIEJyb3dzZXJTZWFy
Y2hCYXI7Cit0eXBlZGVmIHN0cnVjdCBfQnJvd3NlclNlYXJjaEJhckNsYXNzICBCcm93c2VyU2Vh
cmNoQmFyQ2xhc3M7CisKK3N0cnVjdCBfQnJvd3NlclNlYXJjaEJhckNsYXNzIHsKKyAgICBHdGtC
b3hDbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCitHVHlwZSBicm93c2VyX3NlYXJjaF9iYXJfZ2V0
X3R5cGUodm9pZCk7CisKK0d0a1dpZGdldCAqYnJvd3Nlcl9zZWFyY2hfYmFyX25ldyhXZWJLaXRX
ZWJWaWV3ICopOwordm9pZCBicm93c2VyX3NlYXJjaF9iYXJfb3BlbihCcm93c2VyU2VhcmNoQmFy
ICopOwordm9pZCBicm93c2VyX3NlYXJjaF9iYXJfY2xvc2UoQnJvd3NlclNlYXJjaEJhciAqKTsK
KworR19FTkRfREVDTFMKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9n
dGsvQnJvd3NlcldpbmRvdy5jIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cu
YwppbmRleCBjOTVmNDljOTg1NWYzZWMwOTdiOGRlODc4MzJjNDY3N2JmOTZhNzQ5Li4xODcyYzVk
Y2I5NTFmMWEzNjI1NmZjZmEzODZhM2Q5YWU5YzVmNTk4IDEwMDY0NAotLS0gYS9Ub29scy9NaW5p
QnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9C
cm93c2VyV2luZG93LmMKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJCcm93c2VyV2luZG93
LmgiCiAKICNpbmNsdWRlICJCcm93c2VyRG93bmxvYWRzQmFyLmgiCisjaW5jbHVkZSAiQnJvd3Nl
clNlYXJjaEJhci5oIgogI2luY2x1ZGUgIkJyb3dzZXJTZXR0aW5nc0RpYWxvZy5oIgogI2luY2x1
ZGUgPGdkay9nZGtrZXlzeW1zLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CkBAIC00OCwxMCArNDks
MTMgQEAgc3RydWN0IF9Ccm93c2VyV2luZG93IHsKICAgICBHdGtXaWRnZXQgKmZvcndhcmRJdGVt
OwogICAgIEd0a1dpZGdldCAqem9vbUluSXRlbTsKICAgICBHdGtXaWRnZXQgKnpvb21PdXRJdGVt
OworICAgIEd0a1dpZGdldCAqc2VhcmNoSXRlbTsKICAgICBHdGtXaWRnZXQgKnN0YXR1c0xhYmVs
OwogICAgIEd0a1dpZGdldCAqc2V0dGluZ3NEaWFsb2c7CiAgICAgV2ViS2l0V2ViVmlldyAqd2Vi
VmlldzsKICAgICBHdGtXaWRnZXQgKmRvd25sb2Fkc0JhcjsKKyAgICBHdGtXaWRnZXQgKnNlYXJj
aEJhcjsKKyAgICBnYm9vbGVhbiBzZWFyY2hCYXJWaXNpYmxlOwogICAgIEdka1BpeGJ1ZiAqZmF2
aWNvbjsKICAgICBHdGtXaWRnZXQgKmZ1bGxTY3JlZW5NZXNzYWdlTGFiZWw7CiAgICAgZ3VpbnQg
ZnVsbFNjcmVlbk1lc3NhZ2VMYWJlbElkOwpAQCAtMzA0LDYgKzMwOCw3IEBAIHN0YXRpYyBnYm9v
bGVhbiB3ZWJWaWV3RW50ZXJGdWxsU2NyZWVuKFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIEJyb3dz
ZXJXaW5kb3cgKndpCiAKICAgICB3aW5kb3ctPmZ1bGxTY3JlZW5NZXNzYWdlTGFiZWxJZCA9IGdf
dGltZW91dF9hZGRfc2Vjb25kcygyLCAoR1NvdXJjZUZ1bmMpZnVsbFNjcmVlbk1lc3NhZ2VUaW1l
b3V0Q2FsbGJhY2ssIHdpbmRvdyk7CiAgICAgZ3RrX3dpZGdldF9oaWRlKHdpbmRvdy0+dG9vbGJh
cik7CisgICAgYnJvd3Nlcl9zZWFyY2hfYmFyX2Nsb3NlKEJST1dTRVJfU0VBUkNIX0JBUih3aW5k
b3ctPnNlYXJjaEJhcikpOwogCiAgICAgcmV0dXJuIEZBTFNFOwogfQpAQCAtMzE2LDYgKzMyMSw4
IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJWaWV3TGVhdmVGdWxsU2NyZWVuKFdlYktpdFdlYlZpZXcg
KndlYlZpZXcsIEJyb3dzZXJXaW5kb3cgKndpCiAgICAgfQogICAgIGd0a193aWRnZXRfaGlkZSh3
aW5kb3ctPmZ1bGxTY3JlZW5NZXNzYWdlTGFiZWwpOwogICAgIGd0a193aWRnZXRfc2hvdyh3aW5k
b3ctPnRvb2xiYXIpOworICAgIGlmICh3aW5kb3ctPnNlYXJjaEJhclZpc2libGUpCisgICAgICAg
IGJyb3dzZXJfc2VhcmNoX2Jhcl9vcGVuKEJST1dTRVJfU0VBUkNIX0JBUih3aW5kb3ctPnNlYXJj
aEJhcikpOwogCiAgICAgcmV0dXJuIEZBTFNFOwogfQpAQCAtNDY4LDYgKzQ3NSwxNSBAQCBzdGF0
aWMgdm9pZCB6b29tT3V0Q2FsbGJhY2soQnJvd3NlcldpbmRvdyAqd2luZG93KQogICAgIHdlYmtp
dF93ZWJfdmlld19zZXRfem9vbV9sZXZlbCh3aW5kb3ctPndlYlZpZXcsIHpvb21MZXZlbCk7CiB9
CiAKK3N0YXRpYyB2b2lkIHNlYXJjaENhbGxiYWNrKEJyb3dzZXJXaW5kb3cgKndpbmRvdykKK3sK
KyAgICB3aW5kb3ctPnNlYXJjaEJhclZpc2libGUgPSAhZ3RrX3dpZGdldF9nZXRfdmlzaWJsZSh3
aW5kb3ctPnNlYXJjaEJhcik7CisgICAgaWYgKHdpbmRvdy0+c2VhcmNoQmFyVmlzaWJsZSkKKyAg
ICAgICAgYnJvd3Nlcl9zZWFyY2hfYmFyX29wZW4oQlJPV1NFUl9TRUFSQ0hfQkFSKHdpbmRvdy0+
c2VhcmNoQmFyKSk7CisgICAgZWxzZQorICAgICAgICBicm93c2VyX3NlYXJjaF9iYXJfY2xvc2Uo
QlJPV1NFUl9TRUFSQ0hfQkFSKHdpbmRvdy0+c2VhcmNoQmFyKSk7Cit9CisKIHN0YXRpYyB2b2lk
IGJyb3dzZXJXaW5kb3dGaW5hbGl6ZShHT2JqZWN0ICpnT2JqZWN0KQogewogICAgIEJyb3dzZXJX
aW5kb3cgKndpbmRvdyA9IEJST1dTRVJfV0lORE9XKGdPYmplY3QpOwpAQCAtNTY0LDYgKzU4MCwx
MiBAQCBzdGF0aWMgdm9pZCBicm93c2VyX3dpbmRvd19pbml0KEJyb3dzZXJXaW5kb3cgKndpbmRv
dykKICAgICBndGtfdG9vbGJhcl9pbnNlcnQoR1RLX1RPT0xCQVIodG9vbGJhciksIGl0ZW0sIC0x
KTsKICAgICBndGtfd2lkZ2V0X3Nob3coR1RLX1dJREdFVChpdGVtKSk7CiAKKyAgICBpdGVtID0g
Z3RrX3Rvb2xfYnV0dG9uX25ld19mcm9tX3N0b2NrKEdUS19TVE9DS19GSU5EKTsKKyAgICB3aW5k
b3ctPnNlYXJjaEl0ZW0gPSBHVEtfV0lER0VUKGl0ZW0pOworICAgIGdfc2lnbmFsX2Nvbm5lY3Rf
c3dhcHBlZChpdGVtLCAiY2xpY2tlZCIsIEdfQ0FMTEJBQ0soc2VhcmNoQ2FsbGJhY2spLCB3aW5k
b3cpOworICAgIGd0a190b29sYmFyX2luc2VydChHVEtfVE9PTEJBUih0b29sYmFyKSwgaXRlbSwg
LTEpOworICAgIGd0a193aWRnZXRfc2hvdyhHVEtfV0lER0VUKGl0ZW0pKTsKKwogICAgIGl0ZW0g
PSBndGtfdG9vbF9pdGVtX25ldygpOwogICAgIGd0a190b29sX2l0ZW1fc2V0X2V4cGFuZChpdGVt
LCBUUlVFKTsKICAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKGl0ZW0pLCB3aW5k
b3ctPnVyaUVudHJ5KTsKQEAgLTYwNyw2ICs2MjksOSBAQCBzdGF0aWMgdm9pZCBicm93c2VyV2lu
ZG93Q29uc3RydWN0ZWQoR09iamVjdCAqZ09iamVjdCkKIAogICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
d2Via2l0X3dlYl92aWV3X2dldF9jb250ZXh0KHdpbmRvdy0+d2ViVmlldyksICJkb3dubG9hZC1z
dGFydGVkIiwgR19DQUxMQkFDSyhkb3dubG9hZFN0YXJ0ZWQpLCB3aW5kb3cpOwogCisgICAgd2lu
ZG93LT5zZWFyY2hCYXIgPSBicm93c2VyX3NlYXJjaF9iYXJfbmV3KHdpbmRvdy0+d2ViVmlldyk7
CisgICAgZ3RrX2JveF9wYWNrX2VuZChHVEtfQk9YKHdpbmRvdy0+bWFpbkJveCksIHdpbmRvdy0+
c2VhcmNoQmFyLCBGQUxTRSwgRkFMU0UsIDApOworCiAgICAgV2ViS2l0QmFja0ZvcndhcmRMaXN0
ICpiYWNrRm9yd2FkbGlzdCA9IHdlYmtpdF93ZWJfdmlld19nZXRfYmFja19mb3J3YXJkX2xpc3Qo
d2luZG93LT53ZWJWaWV3KTsKICAgICBnX3NpZ25hbF9jb25uZWN0KGJhY2tGb3J3YWRsaXN0LCAi
Y2hhbmdlZCIsIEdfQ0FMTEJBQ0soYmFja0ZvcndhZGxpc3RDaGFuZ2VkKSwgd2luZG93KTsKIApk
aWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0dOVW1ha2VmaWxlLmFtIGIvVG9vbHMv
TWluaUJyb3dzZXIvZ3RrL0dOVW1ha2VmaWxlLmFtCmluZGV4IGY0MmEzMGI3OTJiMjcwYzVlZmJk
YmE1OGI5ZWJiNmYxZDZlMmIxZjguLjI5ZDRlYzQxNDkxOWNhNWEyOTYzZGUxMjI5MjM5ZDIxMzcx
MmZkYTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9HTlVtYWtlZmlsZS5hbQor
KysgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvR05VbWFrZWZpbGUuYW0KQEAgLTIyLDYgKzIyLDgg
QEAgUHJvZ3JhbXNfTWluaUJyb3dzZXJfU09VUkNFUyA9IFwKIAlUb29scy9NaW5pQnJvd3Nlci9n
dGsvQnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnQuYyBcCiAJVG9vbHMvTWluaUJyb3dzZXIvZ3Rr
L0Jyb3dzZXJEb3dubG9hZHNCYXIuaCBcCiAJVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJE
b3dubG9hZHNCYXIuYyBcCisJVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJTZWFyY2hCYXIu
aCBcCisJVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJTZWFyY2hCYXIuYyBcCiAJVG9vbHMv
TWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJTZXR0aW5nc0RpYWxvZy5oIFwKIAlUb29scy9NaW5pQnJv
d3Nlci9ndGsvQnJvd3NlclNldHRpbmdzRGlhbG9nLmMgXAogCVRvb2xzL01pbmlCcm93c2VyL2d0
ay9Ccm93c2VyV2luZG93LmggXAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207320</attachid>
            <date>2013-07-23 04:40:33 -0700</date>
            <delta_ts>2013-08-07 07:52:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-117631-20130723134031.patch</filename>
            <type>text/plain</type>
            <size>21733</size>
            <attacher name="Andres Gomez Garcia">agomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUyNjMwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2Y0MTk3ZDU0ZTYzNDRkMDU2NzA2OWZhNmFlZjJjMzQ5
Mjk4MmFiYi4uOTU1NTA5YTgyNzc3YzhjYWIwYTgyYWI5YjRhZTg1NmM5YTkxOWJhNCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQy
IEBACisyMDEzLTA3LTIzICBBbmRyZXMgR29tZXogIDxhZ29tZXpAaWdhbGlhLmNvbT4KKworICAg
ICAgICBbR1RLXSBQcm92aWRlIHNlYXJjaCBmdW5jdGlvbmFsaXR5IHRvIE1pbmlCcm93c2VyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTc2MzEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIGEgc2Vh
cmNoIGJhciB0byBNaW5pQnJvd3NlciB3aXRoIHRoZSBtaW5pbXVtIGZ1bmN0aW9uYWxpdHkKKyAg
ICAgICAgYW5kIGEgbmV3IGJ1dHRvbiB0byB0aGUgdG9vbGJhciBmb3Igc2hvd2luZyB0aGUgbmV3
IHNlYXJjaAorICAgICAgICBiYXIuIFR5cGljYWwga2V5Ym9hcmQgc2hvcnRjdXRzIGFyZSBhbHNv
IGFkZGVkLgorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJTZWFyY2hCYXIuYzog
QWRkZWQuCisgICAgICAgIChkb1NlYXJjaCk6CisgICAgICAgIChzZWFyY2hOZXh0KToKKyAgICAg
ICAgKHNlYXJjaFByZXZpb3VzKToKKyAgICAgICAgKHNlYXJjaENsb3NlQnV0dG9uQ2xpY2tlZENh
bGxiYWNrKToKKyAgICAgICAgKHNlYXJjaEVudHJ5SWNvblJlbGVhc2VkQ2FsbGJhY2spOgorICAg
ICAgICAoc2VhcmNoRW50cnlDaGFuZ2VkQ2FsbGJhY2spOgorICAgICAgICAoc2VhcmNoRW50cnlB
Y3RpdmF0ZWRDYWxsYmFjayk6CisgICAgICAgIChzZWFyY2hQcmV2QnV0dG9uQ2xpY2tlZENhbGxi
YWNrKToKKyAgICAgICAgKHNlYXJjaE5leHRCdXR0b25DbGlja2VkQ2FsbGJhY2spOgorICAgICAg
ICAoc2VhcmNoTWVudUNoZWNrQnV0dG9uVG9nZ2xlZENhbGxiYWNrKToKKyAgICAgICAgKGJyb3dz
ZXJfc2VhcmNoX2Jhcl9pbml0KToKKyAgICAgICAgKGJyb3dzZXJfc2VhcmNoX2Jhcl9maW5hbGl6
ZSk6CisgICAgICAgIChicm93c2VyX3NlYXJjaF9iYXJfY2xhc3NfaW5pdCk6CisgICAgICAgIChi
cm93c2VyX3NlYXJjaF9iYXJfbmV3KToKKyAgICAgICAgKGJyb3dzZXJfc2VhcmNoX2Jhcl9hZGRf
YWNjZWxlcmF0b3JzKToKKyAgICAgICAgKGJyb3dzZXJfc2VhcmNoX2Jhcl9vcGVuKToKKyAgICAg
ICAgKGJyb3dzZXJfc2VhcmNoX2Jhcl9jbG9zZSk6CisgICAgICAgICogTWluaUJyb3dzZXIvZ3Rr
L0Jyb3dzZXJTZWFyY2hCYXIuaDogQWRkZWQuCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0Jy
b3dzZXJXaW5kb3cuYzoKKyAgICAgICAgKHdlYlZpZXdFbnRlckZ1bGxTY3JlZW4pOiBDbG9zZXMg
bmV3IHNlYXJjaCBiYXIuCisgICAgICAgICh3ZWJWaWV3TGVhdmVGdWxsU2NyZWVuKTogT3BlbnMg
bmV3IHNlYXJjaCBiYXIgaWYgcHJldmlvdXNseQorICAgICAgICB2aXNpYmxlLgorICAgICAgICAo
c2VhcmNoQ2FsbGJhY2spOiBBZGRlZC4gU2hvd3MgYW5kIGhpZGVzIHRoZSBuZXcgc2VhcmNoIGJh
ci4KKyAgICAgICAgKGJyb3dzZXJfd2luZG93X2luaXQpOiBBZGRlZCBzZWFyY2ggYnV0dG9uIHRv
IHRoZSB0b29sYmFyLgorICAgICAgICAoYnJvd3NlcldpbmRvd0NvbnN0cnVjdGVkKTogQ3JlYXRl
cyB0aGUgbmV3IHNlYXJjaCBiYXIuCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0dOVW1ha2Vm
aWxlLmFtOiBBZGRlZCBuZXcgZmlsZXMgdG8gY29tcGlsYXRpb24uCisKIDIwMTMtMDctMTUgIFhh
YmllciBSb2RyaWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBb
R1RLXSBJbmNyZWFzZSB0aGUgSkhCdWlsZCB2ZXJzaW9uIG9mIEdTdHJlYW1lciB0byAxLjAuNwpk
aWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJTZWFyY2hCYXIuYyBiL1Rv
b2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyU2VhcmNoQmFyLmMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmZiMjY5
NTYyYjEzYzM4ZDM5NWQzZWI1NmFkODFiNWI3YjczZjlhNQotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyU2VhcmNoQmFyLmMKQEAgLTAsMCArMSwyNDQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgIkJyb3dzZXJTZWFyY2hCYXIuaCIKKworCitzdHJ1Y3QgX0Jyb3dzZXJTZWFyY2hCYXIgewor
ICAgIEd0a0JveCBwYXJlbnQ7CisKKyAgICBXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3OworICAgIEd0
a1dpZGdldCAqZW50cnk7CisgICAgR3RrV2lkZ2V0ICpwcmV2QnV0dG9uOworICAgIEd0a1dpZGdl
dCAqbmV4dEJ1dHRvbjsKKyAgICBHdGtXaWRnZXQgKm9wdGlvbnNNZW51OworICAgIEd0a1dpZGdl
dCAqY2FzZUNoZWNrQnV0dG9uOworICAgIEd0a1dpZGdldCAqYmVnZ2luaWdXb3JkQ2hlY2tCdXR0
b247CisgICAgR3RrV2lkZ2V0ICpjYXBpdGFsQXNCZWdnaW5pZ1dvcmRDaGVja0J1dHRvbjsKK307
CisKK0dfREVGSU5FX1RZUEUoQnJvd3NlclNlYXJjaEJhciwgYnJvd3Nlcl9zZWFyY2hfYmFyLCBH
VEtfVFlQRV9CT1gpCisKK3N0YXRpYyB2b2lkIGRvU2VhcmNoKEJyb3dzZXJTZWFyY2hCYXIgKnNl
YXJjaEJhcikKK3sKKyAgICBjb25zdCBnY2hhciAqdGV4dCA9IGd0a19lbnRyeV9nZXRfdGV4dChH
VEtfRU5UUlkoc2VhcmNoQmFyLT5lbnRyeSkpOworCisgICAgaWYgKCFnX3N0cmNtcDAodGV4dCwg
IiIpKSB7CisgICAgICAgIFdlYktpdEZpbmRDb250cm9sbGVyICpjb250cm9sbGVyID0gd2Via2l0
X3dlYl92aWV3X2dldF9maW5kX2NvbnRyb2xsZXIoc2VhcmNoQmFyLT53ZWJWaWV3KTsKKyAgICAg
ICAgd2Via2l0X2ZpbmRfY29udHJvbGxlcl9zZWFyY2hfZmluaXNoKGNvbnRyb2xsZXIpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgV2ViS2l0RmluZENvbnRyb2xsZXIgKmNvbnRyb2xs
ZXIgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2ZpbmRfY29udHJvbGxlcihzZWFyY2hCYXItPndlYlZp
ZXcpOworICAgIFdlYktpdEZpbmRPcHRpb25zIG9wdGlvbnMgPSBXRUJLSVRfRklORF9PUFRJT05T
X05PTkU7CisgICAgaWYgKCFndGtfY2hlY2tfbWVudV9pdGVtX2dldF9hY3RpdmUoR1RLX0NIRUNL
X01FTlVfSVRFTShzZWFyY2hCYXItPmNhc2VDaGVja0J1dHRvbikpKQorICAgICAgICBvcHRpb25z
IHw9IFdFQktJVF9GSU5EX09QVElPTlNfQ0FTRV9JTlNFTlNJVElWRTsKKyAgICBpZiAoZ3RrX2No
ZWNrX21lbnVfaXRlbV9nZXRfYWN0aXZlKEdUS19DSEVDS19NRU5VX0lURU0oc2VhcmNoQmFyLT5i
ZWdnaW5pZ1dvcmRDaGVja0J1dHRvbikpKQorICAgICAgICBvcHRpb25zIHw9IFdFQktJVF9GSU5E
X09QVElPTlNfQVRfV09SRF9TVEFSVFM7CisgICAgaWYgKGd0a19jaGVja19tZW51X2l0ZW1fZ2V0
X2FjdGl2ZShHVEtfQ0hFQ0tfTUVOVV9JVEVNKHNlYXJjaEJhci0+Y2FwaXRhbEFzQmVnZ2luaWdX
b3JkQ2hlY2tCdXR0b24pKSkKKyAgICAgICAgb3B0aW9ucyB8PSBXRUJLSVRfRklORF9PUFRJT05T
X1RSRUFUX01FRElBTF9DQVBJVEFMX0FTX1dPUkRfU1RBUlQ7CisKKyAgICB3ZWJraXRfZmluZF9j
b250cm9sbGVyX3NlYXJjaChjb250cm9sbGVyLCB0ZXh0LCBvcHRpb25zLCBHX01BWFVJTlQpOwor
fQorCitzdGF0aWMgdm9pZCBzZWFyY2hOZXh0KEJyb3dzZXJTZWFyY2hCYXIgKnNlYXJjaEJhcikK
K3sKKyAgICBXZWJLaXRGaW5kQ29udHJvbGxlciAqY29udHJvbGxlciA9IHdlYmtpdF93ZWJfdmll
d19nZXRfZmluZF9jb250cm9sbGVyKHNlYXJjaEJhci0+d2ViVmlldyk7CisgICAgd2Via2l0X2Zp
bmRfY29udHJvbGxlcl9zZWFyY2hfbmV4dChjb250cm9sbGVyKTsKK30KKworc3RhdGljIHZvaWQg
c2VhcmNoUHJldmlvdXMoQnJvd3NlclNlYXJjaEJhciAqc2VhcmNoQmFyKQoreworICAgIFdlYktp
dEZpbmRDb250cm9sbGVyICpjb250cm9sbGVyID0gd2Via2l0X3dlYl92aWV3X2dldF9maW5kX2Nv
bnRyb2xsZXIoc2VhcmNoQmFyLT53ZWJWaWV3KTsKKyAgICB3ZWJraXRfZmluZF9jb250cm9sbGVy
X3NlYXJjaF9wcmV2aW91cyhjb250cm9sbGVyKTsKK30KKworc3RhdGljIHZvaWQgc2VhcmNoQ2xv
c2VCdXR0b25DbGlja2VkQ2FsbGJhY2soQnJvd3NlclNlYXJjaEJhciAqc2VhcmNoQmFyKQorewor
ICAgIGJyb3dzZXJfc2VhcmNoX2Jhcl9jbG9zZShzZWFyY2hCYXIpOworfQorCitzdGF0aWMgdm9p
ZCBzZWFyY2hFbnRyeUljb25SZWxlYXNlZENhbGxiYWNrKEJyb3dzZXJTZWFyY2hCYXIgKnNlYXJj
aEJhciwgR3RrRW50cnlJY29uUG9zaXRpb24gaWNvblBvcywgR2RrRXZlbnQgKmV2ZW50KQorewor
ICAgIHN3aXRjaCAoaWNvblBvcykgeworICAgIGNhc2UgR1RLX0VOVFJZX0lDT05fUFJJTUFSWToK
KyAgICAgICAgaWYgKGV2ZW50LT50eXBlID09IEdES19CVVRUT05fUkVMRUFTRSkgeworICAgICAg
ICAgICAgR2RrRXZlbnRCdXR0b24gKmV2ZW50QnV0dG9uID0gKEdka0V2ZW50QnV0dG9uICopZXZl
bnQ7CisgICAgICAgICAgICBndGtfbWVudV9wb3B1cChHVEtfTUVOVShzZWFyY2hCYXItPm9wdGlv
bnNNZW51KSwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCwgZXZlbnRCdXR0b24tPmJ1dHRvbiwgZXZl
bnRCdXR0b24tPnRpbWUpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgR1RL
X0VOVFJZX0lDT05fU0VDT05EQVJZOgorICAgICAgICBndGtfZW50cnlfc2V0X3RleHQoR1RLX0VO
VFJZKHNlYXJjaEJhci0+ZW50cnkpLCAiIik7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6
CisgICAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkKCk7CisgICAgfQorfQorCitzdGF0aWMgdm9p
ZCBzZWFyY2hFbnRyeUNoYW5nZWRDYWxsYmFjayhHdGtFbnRyeSAqZW50cnksIEJyb3dzZXJTZWFy
Y2hCYXIgKnNlYXJjaEJhcikKK3sKKyAgICBkb1NlYXJjaChzZWFyY2hCYXIpOworfQorCitzdGF0
aWMgdm9pZCBzZWFyY2hFbnRyeUFjdGl2YXRlZENhbGxiYWNrKEJyb3dzZXJTZWFyY2hCYXIgKnNl
YXJjaEJhcikKK3sKKyAgICBzZWFyY2hOZXh0KHNlYXJjaEJhcik7Cit9CisKK3N0YXRpYyB2b2lk
IHNlYXJjaFByZXZCdXR0b25DbGlja2VkQ2FsbGJhY2soQnJvd3NlclNlYXJjaEJhciAqc2VhcmNo
QmFyKQoreworICAgIHNlYXJjaFByZXZpb3VzKHNlYXJjaEJhcik7Cit9CisKK3N0YXRpYyB2b2lk
IHNlYXJjaE5leHRCdXR0b25DbGlja2VkQ2FsbGJhY2soQnJvd3NlclNlYXJjaEJhciAqc2VhcmNo
QmFyKQoreworICAgIHNlYXJjaE5leHQoc2VhcmNoQmFyKTsKK30KKworc3RhdGljIHZvaWQgc2Vh
cmNoTWVudUNoZWNrQnV0dG9uVG9nZ2xlZENhbGxiYWNrKEJyb3dzZXJTZWFyY2hCYXIgKnNlYXJj
aEJhcikKK3sKKyAgICBkb1NlYXJjaChzZWFyY2hCYXIpOworfQorCitzdGF0aWMgdm9pZCBicm93
c2VyX3NlYXJjaF9iYXJfaW5pdChCcm93c2VyU2VhcmNoQmFyICpzZWFyY2hCYXIpCit7CisgICAg
Z3RrX2NvbnRhaW5lcl9zZXRfYm9yZGVyX3dpZHRoKEdUS19DT05UQUlORVIoc2VhcmNoQmFyKSwg
MCk7CisgICAgZ3RrX2JveF9zZXRfc3BhY2luZyhHVEtfQk9YKHNlYXJjaEJhciksIDYpOworICAg
IGd0a193aWRnZXRfc2V0X2hleHBhbmQoR1RLX1dJREdFVChzZWFyY2hCYXIpLCBUUlVFKTsKKyAg
ICBndGtfc3R5bGVfY29udGV4dF9hZGRfY2xhc3MoZ3RrX3dpZGdldF9nZXRfc3R5bGVfY29udGV4
dChHVEtfV0lER0VUKHNlYXJjaEJhcikpLCBHVEtfU1RZTEVfQ0xBU1NfVE9PTEJBUik7CisgICAg
Z3RrX3N0eWxlX2NvbnRleHRfYWRkX2NsYXNzKGd0a193aWRnZXRfZ2V0X3N0eWxlX2NvbnRleHQo
R1RLX1dJREdFVChzZWFyY2hCYXIpKSwgR1RLX1NUWUxFX0NMQVNTX1BSSU1BUllfVE9PTEJBUik7
CisKKyAgICBHdGtXaWRnZXQgKmhCb3ggPSBndGtfYm94X25ldyhHVEtfT1JJRU5UQVRJT05fSE9S
SVpPTlRBTCwgNSk7CisgICAgZ3RrX2JveF9zZXRfaG9tb2dlbmVvdXMoR1RLX0JPWChoQm94KSwg
VFJVRSk7CisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1goc2VhcmNoQmFyKSwgaEJveCwg
VFJVRSwgVFJVRSwgMCk7CisKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChoQm94KSwg
Z3RrX2JveF9uZXcoR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUwsIDApLCBUUlVFLCBUUlVFLCAw
KTsKKworICAgIHNlYXJjaEJhci0+ZW50cnkgPSBndGtfZW50cnlfbmV3KCk7CisgICAgZ3RrX2Vu
dHJ5X3NldF9wbGFjZWhvbGRlcl90ZXh0KEdUS19FTlRSWShzZWFyY2hCYXItPmVudHJ5KSwgIlNl
YXJjaCIpOworICAgIGd0a19lbnRyeV9zZXRfaWNvbl9mcm9tX3N0b2NrKEdUS19FTlRSWShzZWFy
Y2hCYXItPmVudHJ5KSwgR1RLX0VOVFJZX0lDT05fUFJJTUFSWSwgR1RLX1NUT0NLX0ZJTkQpOwor
ICAgIGd0a19lbnRyeV9zZXRfaWNvbl9mcm9tX3N0b2NrKEdUS19FTlRSWShzZWFyY2hCYXItPmVu
dHJ5KSwgR1RLX0VOVFJZX0lDT05fU0VDT05EQVJZLCBHVEtfU1RPQ0tfQ0xFQVIpOworICAgIGd0
a19ib3hfcGFja19zdGFydChHVEtfQk9YKGhCb3gpLCBzZWFyY2hCYXItPmVudHJ5LCBUUlVFLCBU
UlVFLCAwKTsKKworICAgIEd0a1dpZGdldCAqaEJveEJ1dHRvbnMgPSBndGtfYm94X25ldyhHVEtf
T1JJRU5UQVRJT05fSE9SSVpPTlRBTCwgMCk7CisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19C
T1goaEJveCksIGhCb3hCdXR0b25zLCBUUlVFLCBUUlVFLCAwKTsKKworICAgIHNlYXJjaEJhci0+
cHJldkJ1dHRvbiA9IGd0a19idXR0b25fbmV3KCk7CisgICAgR3RrV2lkZ2V0ICppbWFnZSA9IGd0
a19pbWFnZV9uZXdfZnJvbV9zdG9jayhHVEtfU1RPQ0tfR09fVVAsIEdUS19JQ09OX1NJWkVfU01B
TExfVE9PTEJBUik7CisgICAgZ3RrX2J1dHRvbl9zZXRfaW1hZ2UoR1RLX0JVVFRPTihzZWFyY2hC
YXItPnByZXZCdXR0b24pLCBpbWFnZSk7CisgICAgZ3RrX2J1dHRvbl9zZXRfcmVsaWVmKEdUS19C
VVRUT04oc2VhcmNoQmFyLT5wcmV2QnV0dG9uKSwgR1RLX1JFTElFRl9OT05FKTsKKyAgICBndGtf
Ym94X3BhY2tfc3RhcnQoR1RLX0JPWChoQm94QnV0dG9ucyksIHNlYXJjaEJhci0+cHJldkJ1dHRv
biwgRkFMU0UsIEZBTFNFLCAwKTsKKworICAgIHNlYXJjaEJhci0+bmV4dEJ1dHRvbiA9IGd0a19i
dXR0b25fbmV3KCk7CisgICAgaW1hZ2UgPSBndGtfaW1hZ2VfbmV3X2Zyb21fc3RvY2soR1RLX1NU
T0NLX0dPX0RPV04sIEdUS19JQ09OX1NJWkVfU01BTExfVE9PTEJBUik7CisgICAgZ3RrX2J1dHRv
bl9zZXRfaW1hZ2UoR1RLX0JVVFRPTihzZWFyY2hCYXItPm5leHRCdXR0b24pLCBpbWFnZSk7Cisg
ICAgZ3RrX2J1dHRvbl9zZXRfcmVsaWVmKEdUS19CVVRUT04oc2VhcmNoQmFyLT5uZXh0QnV0dG9u
KSwgR1RLX1JFTElFRl9OT05FKTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChoQm94
QnV0dG9ucyksIHNlYXJjaEJhci0+bmV4dEJ1dHRvbiwgRkFMU0UsIEZBTFNFLCAwKTsKKworICAg
IEd0a1dpZGdldCAqY2xvc2VCdXR0b24gPSBndGtfYnV0dG9uX25ldygpOworICAgIGltYWdlID0g
Z3RrX2ltYWdlX25ld19mcm9tX3N0b2NrKEdUS19TVE9DS19DTE9TRSwgR1RLX0lDT05fU0laRV9T
TUFMTF9UT09MQkFSKTsKKyAgICBndGtfYnV0dG9uX3NldF9pbWFnZShHVEtfQlVUVE9OKGNsb3Nl
QnV0dG9uKSwgaW1hZ2UpOworICAgIGd0a19idXR0b25fc2V0X3JlbGllZihHVEtfQlVUVE9OKGNs
b3NlQnV0dG9uKSwgR1RLX1JFTElFRl9OT05FKTsKKyAgICBndGtfYm94X3BhY2tfZW5kKEdUS19C
T1goaEJveEJ1dHRvbnMpLCBjbG9zZUJ1dHRvbiwgRkFMU0UsIEZBTFNFLCAwKTsKKworICAgIHNl
YXJjaEJhci0+b3B0aW9uc01lbnUgPSBnX29iamVjdF9yZWZfc2luayhndGtfbWVudV9uZXcoKSk7
CisKKyAgICBzZWFyY2hCYXItPmNhc2VDaGVja0J1dHRvbiA9IGd0a19jaGVja19tZW51X2l0ZW1f
bmV3X3dpdGhfbW5lbW9uaWMoIkNhX3NlIHNlbnNpdGl2ZSIpOworICAgIGd0a19jb250YWluZXJf
YWRkKEdUS19DT05UQUlORVIoc2VhcmNoQmFyLT5vcHRpb25zTWVudSksIHNlYXJjaEJhci0+Y2Fz
ZUNoZWNrQnV0dG9uKTsKKworICAgIHNlYXJjaEJhci0+YmVnZ2luaWdXb3JkQ2hlY2tCdXR0b24g
PSBndGtfY2hlY2tfbWVudV9pdGVtX25ld193aXRoX21uZW1vbmljKCJPbmx5IGF0IHRoZSBfYmVn
aW5uaW5nIG9mIHdvcmRzIik7CisgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUihz
ZWFyY2hCYXItPm9wdGlvbnNNZW51KSwgc2VhcmNoQmFyLT5iZWdnaW5pZ1dvcmRDaGVja0J1dHRv
bik7CisKKyAgICBzZWFyY2hCYXItPmNhcGl0YWxBc0JlZ2dpbmlnV29yZENoZWNrQnV0dG9uID0g
Z3RrX2NoZWNrX21lbnVfaXRlbV9uZXdfd2l0aF9tbmVtb25pYygiQ2FwaXRhbCBfYWx3YXlzIGFz
IGJlZ2lubmluZyBvZiB3b3JkIik7CisgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5F
UihzZWFyY2hCYXItPm9wdGlvbnNNZW51KSwgc2VhcmNoQmFyLT5jYXBpdGFsQXNCZWdnaW5pZ1dv
cmRDaGVja0J1dHRvbik7CisKKyAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoY2xvc2VCdXR0
b24sICJjbGlja2VkIiwgR19DQUxMQkFDSyhzZWFyY2hDbG9zZUJ1dHRvbkNsaWNrZWRDYWxsYmFj
ayksIHNlYXJjaEJhcik7CisgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKHNlYXJjaEJhci0+
ZW50cnksICJpY29uLXJlbGVhc2UiLCBHX0NBTExCQUNLKHNlYXJjaEVudHJ5SWNvblJlbGVhc2Vk
Q2FsbGJhY2spLCBzZWFyY2hCYXIpOworICAgIGdfc2lnbmFsX2Nvbm5lY3RfYWZ0ZXIoc2VhcmNo
QmFyLT5lbnRyeSwgImNoYW5nZWQiLCBHX0NBTExCQUNLKHNlYXJjaEVudHJ5Q2hhbmdlZENhbGxi
YWNrKSwgc2VhcmNoQmFyKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoc2VhcmNoQmFy
LT5lbnRyeSwgImFjdGl2YXRlIiwgR19DQUxMQkFDSyhzZWFyY2hFbnRyeUFjdGl2YXRlZENhbGxi
YWNrKSwgc2VhcmNoQmFyKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoc2VhcmNoQmFy
LT5uZXh0QnV0dG9uLCAiY2xpY2tlZCIsIEdfQ0FMTEJBQ0soc2VhcmNoTmV4dEJ1dHRvbkNsaWNr
ZWRDYWxsYmFjayksIHNlYXJjaEJhcik7CisgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKHNl
YXJjaEJhci0+cHJldkJ1dHRvbiwgImNsaWNrZWQiLCBHX0NBTExCQUNLKHNlYXJjaFByZXZCdXR0
b25DbGlja2VkQ2FsbGJhY2spLCBzZWFyY2hCYXIpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dh
cHBlZChzZWFyY2hCYXItPmNhc2VDaGVja0J1dHRvbiwgInRvZ2dsZWQiLCBHX0NBTExCQUNLKHNl
YXJjaE1lbnVDaGVja0J1dHRvblRvZ2dsZWRDYWxsYmFjayksIHNlYXJjaEJhcik7CisgICAgZ19z
aWduYWxfY29ubmVjdF9zd2FwcGVkKHNlYXJjaEJhci0+YmVnZ2luaWdXb3JkQ2hlY2tCdXR0b24s
ICJ0b2dnbGVkIiwgR19DQUxMQkFDSyhzZWFyY2hNZW51Q2hlY2tCdXR0b25Ub2dnbGVkQ2FsbGJh
Y2spLCBzZWFyY2hCYXIpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChzZWFyY2hCYXIt
PmNhcGl0YWxBc0JlZ2dpbmlnV29yZENoZWNrQnV0dG9uLCAidG9nZ2xlZCIsIEdfQ0FMTEJBQ0so
c2VhcmNoTWVudUNoZWNrQnV0dG9uVG9nZ2xlZENhbGxiYWNrKSwgc2VhcmNoQmFyKTsKKworICAg
IGd0a193aWRnZXRfc2hvd19hbGwoaEJveCk7CisgICAgZ3RrX3dpZGdldF9zaG93X2FsbChzZWFy
Y2hCYXItPm9wdGlvbnNNZW51KTsKK30KKworc3RhdGljIHZvaWQgYnJvd3Nlcl9zZWFyY2hfYmFy
X2ZpbmFsaXplKEdPYmplY3QgKm9iamVjdCkKK3sKKyAgICBnX29iamVjdF91bnJlZihCUk9XU0VS
X1NFQVJDSF9CQVIob2JqZWN0KS0+d2ViVmlldyk7CisgICAgZ19vYmplY3RfdW5yZWYoQlJPV1NF
Ul9TRUFSQ0hfQkFSKG9iamVjdCktPm9wdGlvbnNNZW51KTsKKworICAgIEdfT0JKRUNUX0NMQVNT
KGJyb3dzZXJfc2VhcmNoX2Jhcl9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOworfQor
CitzdGF0aWMgdm9pZCBicm93c2VyX3NlYXJjaF9iYXJfY2xhc3NfaW5pdChCcm93c2VyU2VhcmNo
QmFyQ2xhc3MgKmtsYXNzKQoreworICAgIEdPYmplY3RDbGFzcyAqb2JqZWN0X2NsYXNzID0gR19P
QkpFQ1RfQ0xBU1Moa2xhc3MpOworCisgICAgb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9IGJyb3dz
ZXJfc2VhcmNoX2Jhcl9maW5hbGl6ZTsKK30KKworR3RrV2lkZ2V0ICpicm93c2VyX3NlYXJjaF9i
YXJfbmV3KFdlYktpdFdlYlZpZXcgKndlYlZpZXcpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2Zh
aWwod2ViVmlldywgTlVMTCk7CisKKyAgICBHdGtXaWRnZXQgKnNlYXJjaEJhciA9IEdUS19XSURH
RVQoZ19vYmplY3RfbmV3KEJST1dTRVJfVFlQRV9TRUFSQ0hfQkFSLCBOVUxMKSk7CisgICAgQlJP
V1NFUl9TRUFSQ0hfQkFSKHNlYXJjaEJhciktPndlYlZpZXcgPSBnX29iamVjdF9yZWYod2ViVmll
dyk7CisKKyAgICByZXR1cm4gc2VhcmNoQmFyOworfQorCit2b2lkIGJyb3dzZXJfc2VhcmNoX2Jh
cl9hZGRfYWNjZWxlcmF0b3JzKEJyb3dzZXJTZWFyY2hCYXIgKnNlYXJjaEJhciwgR3RrQWNjZWxH
cm91cCAqYWNjZWxHcm91cCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKHNlYXJjaEJhcik7Cisg
ICAgZ19yZXR1cm5faWZfZmFpbChhY2NlbEdyb3VwKTsKKworICAgIGd0a193aWRnZXRfYWRkX2Fj
Y2VsZXJhdG9yKHNlYXJjaEJhci0+bmV4dEJ1dHRvbiwgImNsaWNrZWQiLCBhY2NlbEdyb3VwLCBH
REtfS0VZX0YzLCAwLCBHVEtfQUNDRUxfVklTSUJMRSk7CisgICAgZ3RrX3dpZGdldF9hZGRfYWNj
ZWxlcmF0b3Ioc2VhcmNoQmFyLT5uZXh0QnV0dG9uLCAiY2xpY2tlZCIsIGFjY2VsR3JvdXAsIEdE
S19LRVlfRywgR0RLX0NPTlRST0xfTUFTSywgR1RLX0FDQ0VMX1ZJU0lCTEUpOworCisgICAgZ3Rr
X3dpZGdldF9hZGRfYWNjZWxlcmF0b3Ioc2VhcmNoQmFyLT5wcmV2QnV0dG9uLCAiY2xpY2tlZCIs
IGFjY2VsR3JvdXAsIEdES19LRVlfRjMsIEdES19TSElGVF9NQVNLLCBHVEtfQUNDRUxfVklTSUJM
RSk7CisgICAgZ3RrX3dpZGdldF9hZGRfYWNjZWxlcmF0b3Ioc2VhcmNoQmFyLT5wcmV2QnV0dG9u
LCAiY2xpY2tlZCIsIGFjY2VsR3JvdXAsIEdES19LRVlfRywgR0RLX1NISUZUX01BU0sgfCBHREtf
Q09OVFJPTF9NQVNLLCBHVEtfQUNDRUxfVklTSUJMRSk7Cit9CisKK3ZvaWQgYnJvd3Nlcl9zZWFy
Y2hfYmFyX29wZW4oQnJvd3NlclNlYXJjaEJhciAqc2VhcmNoQmFyKQoreworICAgIGdfcmV0dXJu
X2lmX2ZhaWwoc2VhcmNoQmFyKTsKKworICAgIGd0a193aWRnZXRfc2hvdyhHVEtfV0lER0VUKHNl
YXJjaEJhcikpOworICAgIGd0a193aWRnZXRfZ3JhYl9mb2N1cyhHVEtfV0lER0VUKHNlYXJjaEJh
ci0+ZW50cnkpKTsKKyAgICBndGtfZWRpdGFibGVfc2VsZWN0X3JlZ2lvbihHVEtfRURJVEFCTEUo
c2VhcmNoQmFyLT5lbnRyeSksIDAsIC0xKTsKK30KKwordm9pZCBicm93c2VyX3NlYXJjaF9iYXJf
Y2xvc2UoQnJvd3NlclNlYXJjaEJhciAqc2VhcmNoQmFyKQoreworICAgIGdfcmV0dXJuX2lmX2Zh
aWwoc2VhcmNoQmFyKTsKKworICAgIGd0a193aWRnZXRfaGlkZShHVEtfV0lER0VUKHNlYXJjaEJh
cikpOworICAgIFdlYktpdEZpbmRDb250cm9sbGVyICpjb250cm9sbGVyID0gd2Via2l0X3dlYl92
aWV3X2dldF9maW5kX2NvbnRyb2xsZXIoc2VhcmNoQmFyLT53ZWJWaWV3KTsKKyAgICB3ZWJraXRf
ZmluZF9jb250cm9sbGVyX3NlYXJjaF9maW5pc2goY29udHJvbGxlcik7Cit9CmRpZmYgLS1naXQg
YS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlclNlYXJjaEJhci5oIGIvVG9vbHMvTWluaUJy
b3dzZXIvZ3RrL0Jyb3dzZXJTZWFyY2hCYXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNDVlYzcxN2EyZTNmOGE3
NDY0YzRmYzNjNmVkYjA0NGMzYmI0ZjNmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvTWluaUJy
b3dzZXIvZ3RrL0Jyb3dzZXJTZWFyY2hCYXIuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgQnJvd3NlclNl
YXJjaEJhcl9oCisjZGVmaW5lIEJyb3dzZXJTZWFyY2hCYXJfaAorCisjaW5jbHVkZSA8Z3RrL2d0
ay5oPgorI2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0Mi5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNk
ZWZpbmUgQlJPV1NFUl9UWVBFX1NFQVJDSF9CQVIgICAgICAgICAgICAoYnJvd3Nlcl9zZWFyY2hf
YmFyX2dldF90eXBlKCkpCisjZGVmaW5lIEJST1dTRVJfU0VBUkNIX0JBUihvYmopICAgICAgICAg
ICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBCUk9XU0VSX1RZUEVfU0VBUkNI
X0JBUiwgQnJvd3NlclNlYXJjaEJhcikpCisjZGVmaW5lIEJST1dTRVJfSVNfU0VBUkNIX0JBUihv
YmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBCUk9XU0VSX1RZ
UEVfU0VBUkNIX0JBUikpCisjZGVmaW5lIEJST1dTRVJfU0VBUkNIX0JBUl9DTEFTUyhrbGFzcykg
ICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBCUk9XU0VSX1RZUEVfU0VBUkNI
X0JBUiwgQnJvd3NlclNlYXJjaEJhckNsYXNzKSkKKyNkZWZpbmUgQlJPV1NFUl9JU19TRUFSQ0hf
QkFSX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIEJST1dT
RVJfVFlQRV9TRUFSQ0hfQkFSKSkKKyNkZWZpbmUgQlJPV1NFUl9TRUFSQ0hfQkFSX0dFVF9DTEFT
UyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIEJST1dTRVJfVFlQRV9T
RUFSQ0hfQkFSLCBCcm93c2VyU2VhcmNoQmFyQ2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfQnJv
d3NlclNlYXJjaEJhciAgICAgICBCcm93c2VyU2VhcmNoQmFyOwordHlwZWRlZiBzdHJ1Y3QgX0Jy
b3dzZXJTZWFyY2hCYXJDbGFzcyAgQnJvd3NlclNlYXJjaEJhckNsYXNzOworCitzdHJ1Y3QgX0Jy
b3dzZXJTZWFyY2hCYXJDbGFzcyB7CisgICAgR3RrQm94Q2xhc3MgcGFyZW50X2NsYXNzOworfTsK
KworR1R5cGUgYnJvd3Nlcl9zZWFyY2hfYmFyX2dldF90eXBlKHZvaWQpOworCitHdGtXaWRnZXQg
KmJyb3dzZXJfc2VhcmNoX2Jhcl9uZXcoV2ViS2l0V2ViVmlldyAqKTsKK3ZvaWQgYnJvd3Nlcl9z
ZWFyY2hfYmFyX2FkZF9hY2NlbGVyYXRvcnMoQnJvd3NlclNlYXJjaEJhciAqLCBHdGtBY2NlbEdy
b3VwICopOwordm9pZCBicm93c2VyX3NlYXJjaF9iYXJfb3BlbihCcm93c2VyU2VhcmNoQmFyICop
Owordm9pZCBicm93c2VyX3NlYXJjaF9iYXJfY2xvc2UoQnJvd3NlclNlYXJjaEJhciAqKTsKKwor
R19FTkRfREVDTFMKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsv
QnJvd3NlcldpbmRvdy5jIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYwpp
bmRleCBjOTVmNDljOTg1NWYzZWMwOTdiOGRlODc4MzJjNDY3N2JmOTZhNzQ5Li43ZWUxYWMwMzBj
YzI1OTVlNWFlODZjZWRlZDFhYTIxYmZkNTAwZTE0IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJv
d3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93
c2VyV2luZG93LmMKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJCcm93c2VyV2luZG93Lmgi
CiAKICNpbmNsdWRlICJCcm93c2VyRG93bmxvYWRzQmFyLmgiCisjaW5jbHVkZSAiQnJvd3NlclNl
YXJjaEJhci5oIgogI2luY2x1ZGUgIkJyb3dzZXJTZXR0aW5nc0RpYWxvZy5oIgogI2luY2x1ZGUg
PGdkay9nZGtrZXlzeW1zLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CkBAIC00MSw2ICs0Miw3IEBA
IGVudW0gewogc3RydWN0IF9Ccm93c2VyV2luZG93IHsKICAgICBHdGtXaW5kb3cgcGFyZW50Owog
CisgICAgR3RrQWNjZWxHcm91cCAqYWNjZWxHcm91cDsKICAgICBHdGtXaWRnZXQgKm1haW5Cb3g7
CiAgICAgR3RrV2lkZ2V0ICp0b29sYmFyOwogICAgIEd0a1dpZGdldCAqdXJpRW50cnk7CkBAIC00
OCwxMCArNTAsMTMgQEAgc3RydWN0IF9Ccm93c2VyV2luZG93IHsKICAgICBHdGtXaWRnZXQgKmZv
cndhcmRJdGVtOwogICAgIEd0a1dpZGdldCAqem9vbUluSXRlbTsKICAgICBHdGtXaWRnZXQgKnpv
b21PdXRJdGVtOworICAgIEd0a1dpZGdldCAqc2VhcmNoSXRlbTsKICAgICBHdGtXaWRnZXQgKnN0
YXR1c0xhYmVsOwogICAgIEd0a1dpZGdldCAqc2V0dGluZ3NEaWFsb2c7CiAgICAgV2ViS2l0V2Vi
VmlldyAqd2ViVmlldzsKICAgICBHdGtXaWRnZXQgKmRvd25sb2Fkc0JhcjsKKyAgICBHdGtXaWRn
ZXQgKnNlYXJjaEJhcjsKKyAgICBnYm9vbGVhbiBzZWFyY2hCYXJWaXNpYmxlOwogICAgIEdka1Bp
eGJ1ZiAqZmF2aWNvbjsKICAgICBHdGtXaWRnZXQgKmZ1bGxTY3JlZW5NZXNzYWdlTGFiZWw7CiAg
ICAgZ3VpbnQgZnVsbFNjcmVlbk1lc3NhZ2VMYWJlbElkOwpAQCAtMzA0LDYgKzMwOSw3IEBAIHN0
YXRpYyBnYm9vbGVhbiB3ZWJWaWV3RW50ZXJGdWxsU2NyZWVuKFdlYktpdFdlYlZpZXcgKndlYlZp
ZXcsIEJyb3dzZXJXaW5kb3cgKndpCiAKICAgICB3aW5kb3ctPmZ1bGxTY3JlZW5NZXNzYWdlTGFi
ZWxJZCA9IGdfdGltZW91dF9hZGRfc2Vjb25kcygyLCAoR1NvdXJjZUZ1bmMpZnVsbFNjcmVlbk1l
c3NhZ2VUaW1lb3V0Q2FsbGJhY2ssIHdpbmRvdyk7CiAgICAgZ3RrX3dpZGdldF9oaWRlKHdpbmRv
dy0+dG9vbGJhcik7CisgICAgYnJvd3Nlcl9zZWFyY2hfYmFyX2Nsb3NlKEJST1dTRVJfU0VBUkNI
X0JBUih3aW5kb3ctPnNlYXJjaEJhcikpOwogCiAgICAgcmV0dXJuIEZBTFNFOwogfQpAQCAtMzE2
LDYgKzMyMiw4IEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJWaWV3TGVhdmVGdWxsU2NyZWVuKFdlYktp
dFdlYlZpZXcgKndlYlZpZXcsIEJyb3dzZXJXaW5kb3cgKndpCiAgICAgfQogICAgIGd0a193aWRn
ZXRfaGlkZSh3aW5kb3ctPmZ1bGxTY3JlZW5NZXNzYWdlTGFiZWwpOwogICAgIGd0a193aWRnZXRf
c2hvdyh3aW5kb3ctPnRvb2xiYXIpOworICAgIGlmICh3aW5kb3ctPnNlYXJjaEJhclZpc2libGUp
CisgICAgICAgIGJyb3dzZXJfc2VhcmNoX2Jhcl9vcGVuKEJST1dTRVJfU0VBUkNIX0JBUih3aW5k
b3ctPnNlYXJjaEJhcikpOwogCiAgICAgcmV0dXJuIEZBTFNFOwogfQpAQCAtNDY4LDYgKzQ3Niwx
MyBAQCBzdGF0aWMgdm9pZCB6b29tT3V0Q2FsbGJhY2soQnJvd3NlcldpbmRvdyAqd2luZG93KQog
ICAgIHdlYmtpdF93ZWJfdmlld19zZXRfem9vbV9sZXZlbCh3aW5kb3ctPndlYlZpZXcsIHpvb21M
ZXZlbCk7CiB9CiAKK3N0YXRpYyB2b2lkIHNlYXJjaENhbGxiYWNrKEJyb3dzZXJXaW5kb3cgKndp
bmRvdykKK3sKKyAgICB3aW5kb3ctPnNlYXJjaEJhclZpc2libGUgPSAhZ3RrX3dpZGdldF9nZXRf
dmlzaWJsZSh3aW5kb3ctPnNlYXJjaEJhcik7CisgICAgaWYgKHdpbmRvdy0+c2VhcmNoQmFyVmlz
aWJsZSkKKyAgICAgICAgYnJvd3Nlcl9zZWFyY2hfYmFyX29wZW4oQlJPV1NFUl9TRUFSQ0hfQkFS
KHdpbmRvdy0+c2VhcmNoQmFyKSk7Cit9CisKIHN0YXRpYyB2b2lkIGJyb3dzZXJXaW5kb3dGaW5h
bGl6ZShHT2JqZWN0ICpnT2JqZWN0KQogewogICAgIEJyb3dzZXJXaW5kb3cgKndpbmRvdyA9IEJS
T1dTRVJfV0lORE9XKGdPYmplY3QpOwpAQCAtNTI0LDkgKzUzOSw5IEBAIHN0YXRpYyB2b2lkIGJy
b3dzZXJfd2luZG93X2luaXQoQnJvd3NlcldpbmRvdyAqd2luZG93KQogICAgIHVwZGF0ZVVyaUVu
dHJ5SWNvbih3aW5kb3cpOwogCiAgICAgLyogS2V5Ym9hcmQgYWNjZWxlcmF0b3JzICovCi0gICAg
R3RrQWNjZWxHcm91cCAqYWNjZWxHcm91cCA9IGd0a19hY2NlbF9ncm91cF9uZXcoKTsKLSAgICBn
dGtfd2luZG93X2FkZF9hY2NlbF9ncm91cChHVEtfV0lORE9XKHdpbmRvdyksIGFjY2VsR3JvdXAp
OwotICAgIGdfb2JqZWN0X3VucmVmKGFjY2VsR3JvdXApOworICAgIHdpbmRvdy0+YWNjZWxHcm91
cCA9IGd0a19hY2NlbF9ncm91cF9uZXcoKTsKKyAgICBndGtfd2luZG93X2FkZF9hY2NlbF9ncm91
cChHVEtfV0lORE9XKHdpbmRvdyksIHdpbmRvdy0+YWNjZWxHcm91cCk7CisgICAgZ19vYmplY3Rf
dW5yZWYod2luZG93LT5hY2NlbEdyb3VwKTsKIAogICAgIEd0a1dpZGdldCAqdG9vbGJhciA9IGd0
a190b29sYmFyX25ldygpOwogICAgIHdpbmRvdy0+dG9vbGJhciA9IHRvb2xiYXI7CkBAIC01NjQs
NiArNTc5LDEzIEBAIHN0YXRpYyB2b2lkIGJyb3dzZXJfd2luZG93X2luaXQoQnJvd3NlcldpbmRv
dyAqd2luZG93KQogICAgIGd0a190b29sYmFyX2luc2VydChHVEtfVE9PTEJBUih0b29sYmFyKSwg
aXRlbSwgLTEpOwogICAgIGd0a193aWRnZXRfc2hvdyhHVEtfV0lER0VUKGl0ZW0pKTsKIAorICAg
IGl0ZW0gPSBndGtfdG9vbF9idXR0b25fbmV3X2Zyb21fc3RvY2soR1RLX1NUT0NLX0ZJTkQpOwor
ICAgIHdpbmRvdy0+c2VhcmNoSXRlbSA9IEdUS19XSURHRVQoaXRlbSk7CisgICAgZ19zaWduYWxf
Y29ubmVjdF9zd2FwcGVkKGl0ZW0sICJjbGlja2VkIiwgR19DQUxMQkFDSyhzZWFyY2hDYWxsYmFj
ayksIHdpbmRvdyk7CisgICAgZ3RrX3Rvb2xiYXJfaW5zZXJ0KEdUS19UT09MQkFSKHRvb2xiYXIp
LCBpdGVtLCAtMSk7CisgICAgZ3RrX3dpZGdldF9hZGRfYWNjZWxlcmF0b3IoR1RLX1dJREdFVChp
dGVtKSwgImNsaWNrZWQiLCB3aW5kb3ctPmFjY2VsR3JvdXAsIEdES19LRVlfRiwgR0RLX0NPTlRS
T0xfTUFTSywgR1RLX0FDQ0VMX1ZJU0lCTEUpOworICAgIGd0a193aWRnZXRfc2hvdyhHVEtfV0lE
R0VUKGl0ZW0pKTsKKwogICAgIGl0ZW0gPSBndGtfdG9vbF9pdGVtX25ldygpOwogICAgIGd0a190
b29sX2l0ZW1fc2V0X2V4cGFuZChpdGVtLCBUUlVFKTsKICAgICBndGtfY29udGFpbmVyX2FkZChH
VEtfQ09OVEFJTkVSKGl0ZW0pLCB3aW5kb3ctPnVyaUVudHJ5KTsKQEAgLTU3NCw3ICs1OTYsNyBA
QCBzdGF0aWMgdm9pZCBicm93c2VyX3dpbmRvd19pbml0KEJyb3dzZXJXaW5kb3cgKndpbmRvdykK
ICAgICBpdGVtID0gZ3RrX3Rvb2xfYnV0dG9uX25ld19mcm9tX3N0b2NrKEdUS19TVE9DS19SRUZS
RVNIKTsKICAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoaXRlbSwgImNsaWNrZWQiLCBHX0NB
TExCQUNLKHJlbG9hZENhbGxiYWNrKSwgd2luZG93KTsKICAgICBndGtfdG9vbGJhcl9pbnNlcnQo
R1RLX1RPT0xCQVIodG9vbGJhciksIGl0ZW0sIC0xKTsKLSAgICBndGtfd2lkZ2V0X2FkZF9hY2Nl
bGVyYXRvcihHVEtfV0lER0VUKGl0ZW0pLCAiY2xpY2tlZCIsIGFjY2VsR3JvdXAsIEdES19LRVlf
RjUsIDAsIEdUS19BQ0NFTF9WSVNJQkxFKTsKKyAgICBndGtfd2lkZ2V0X2FkZF9hY2NlbGVyYXRv
cihHVEtfV0lER0VUKGl0ZW0pLCAiY2xpY2tlZCIsIHdpbmRvdy0+YWNjZWxHcm91cCwgR0RLX0tF
WV9GNSwgMCwgR1RLX0FDQ0VMX1ZJU0lCTEUpOwogICAgIGd0a193aWRnZXRfc2hvdyhHVEtfV0lE
R0VUKGl0ZW0pKTsKIAogICAgIEd0a1dpZGdldCAqdmJveCA9IGd0a19ib3hfbmV3KEdUS19PUklF
TlRBVElPTl9WRVJUSUNBTCwgMCk7CkBAIC02MDcsNiArNjI5LDExIEBAIHN0YXRpYyB2b2lkIGJy
b3dzZXJXaW5kb3dDb25zdHJ1Y3RlZChHT2JqZWN0ICpnT2JqZWN0KQogCiAgICAgZ19zaWduYWxf
Y29ubmVjdCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2NvbnRleHQod2luZG93LT53ZWJWaWV3KSwgImRv
d25sb2FkLXN0YXJ0ZWQiLCBHX0NBTExCQUNLKGRvd25sb2FkU3RhcnRlZCksIHdpbmRvdyk7CiAK
KyAgICB3aW5kb3ctPnNlYXJjaEJhciA9IGJyb3dzZXJfc2VhcmNoX2Jhcl9uZXcod2luZG93LT53
ZWJWaWV3KTsKKyAgICBicm93c2VyX3NlYXJjaF9iYXJfYWRkX2FjY2VsZXJhdG9ycyh3aW5kb3ct
PnNlYXJjaEJhciwgd2luZG93LT5hY2NlbEdyb3VwKTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQo
R1RLX0JPWCh3aW5kb3ctPm1haW5Cb3gpLCB3aW5kb3ctPnNlYXJjaEJhciwgRkFMU0UsIEZBTFNF
LCAwKTsKKyAgICBndGtfYm94X3Jlb3JkZXJfY2hpbGQoR1RLX0JPWCh3aW5kb3ctPm1haW5Cb3gp
LCB3aW5kb3ctPnNlYXJjaEJhciwgMCk7CisKICAgICBXZWJLaXRCYWNrRm9yd2FyZExpc3QgKmJh
Y2tGb3J3YWRsaXN0ID0gd2Via2l0X3dlYl92aWV3X2dldF9iYWNrX2ZvcndhcmRfbGlzdCh3aW5k
b3ctPndlYlZpZXcpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QoYmFja0ZvcndhZGxpc3QsICJjaGFu
Z2VkIiwgR19DQUxMQkFDSyhiYWNrRm9yd2FkbGlzdENoYW5nZWQpLCB3aW5kb3cpOwogCmRpZmYg
LS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvR05VbWFrZWZpbGUuYW0gYi9Ub29scy9NaW5p
QnJvd3Nlci9ndGsvR05VbWFrZWZpbGUuYW0KaW5kZXggZjQyYTMwYjc5MmIyNzBjNWVmYmRiYTU4
YjllYmI2ZjFkNmUyYjFmOC4uMjlkNGVjNDE0OTE5Y2E1YTI5NjNkZTEyMjkyMzlkMjEzNzEyZmRh
OCAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0dOVW1ha2VmaWxlLmFtCisrKyBi
L1Rvb2xzL01pbmlCcm93c2VyL2d0ay9HTlVtYWtlZmlsZS5hbQpAQCAtMjIsNiArMjIsOCBAQCBQ
cm9ncmFtc19NaW5pQnJvd3Nlcl9TT1VSQ0VTID0gXAogCVRvb2xzL01pbmlCcm93c2VyL2d0ay9C
cm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudC5jIFwKIAlUb29scy9NaW5pQnJvd3Nlci9ndGsvQnJv
d3NlckRvd25sb2Fkc0Jhci5oIFwKIAlUb29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlckRvd25s
b2Fkc0Jhci5jIFwKKwlUb29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlclNlYXJjaEJhci5oIFwK
KwlUb29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlclNlYXJjaEJhci5jIFwKIAlUb29scy9NaW5p
QnJvd3Nlci9ndGsvQnJvd3NlclNldHRpbmdzRGlhbG9nLmggXAogCVRvb2xzL01pbmlCcm93c2Vy
L2d0ay9Ccm93c2VyU2V0dGluZ3NEaWFsb2cuYyBcCiAJVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jy
b3dzZXJXaW5kb3cuaCBcCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>208268</attachid>
            <date>2013-08-07 07:52:53 -0700</date>
            <delta_ts>2013-10-07 09:28:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-117631-20130807175251.patch</filename>
            <type>text/plain</type>
            <size>24062</size>
            <attacher name="Andres Gomez Garcia">agomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUyNjMwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggN2Y0MTk3ZDU0ZTYzNDRkMDU2NzA2OWZhNmFlZjJjMzQ5
Mjk4MmFiYi4uYjFhMDQ4MDg2OWVhNjY2ZjZlNmNiZWQ1OTRmMmNmMGFjOWQ4MTlhZCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2
IEBACisyMDEzLTA4LTA3ICBBbmRyZXMgR29tZXogIDxhZ29tZXpAaWdhbGlhLmNvbT4KKworICAg
ICAgICBbR1RLXSBQcm92aWRlIHNlYXJjaCBmdW5jdGlvbmFsaXR5IHRvIE1pbmlCcm93c2VyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTc2MzEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIGEgc2Vh
cmNoIGJhciB0byBNaW5pQnJvd3NlciB3aXRoIHRoZSBtaW5pbXVtIGZ1bmN0aW9uYWxpdHkKKyAg
ICAgICAgYW5kIGEgbmV3IGJ1dHRvbiB0byB0aGUgdG9vbGJhciBmb3Igc2hvd2luZyB0aGUgbmV3
IHNlYXJjaAorICAgICAgICBiYXIuIFR5cGljYWwga2V5Ym9hcmQgc2hvcnRjdXRzIGFyZSBhbHNv
IGFkZGVkLgorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJTZWFyY2hCYXIuYzog
QWRkZWQuCisgICAgICAgIChzZXRFbnRyeUJhY2tncm91bmRDb2xvcik6CisgICAgICAgIChkb1Nl
YXJjaCk6CisgICAgICAgIChzZWFyY2hOZXh0KToKKyAgICAgICAgKHNlYXJjaFByZXZpb3VzKToK
KyAgICAgICAgKHNlYXJjaENsb3NlQnV0dG9uQ2xpY2tlZENhbGxiYWNrKToKKyAgICAgICAgKHNl
YXJjaEVudHJ5TWVudUljb25QcmVzc2VkQ2FsbGJhY2spOgorICAgICAgICAoc2VhcmNoRW50cnlD
bGVhckljb25SZWxlYXNlZENhbGxiYWNrKToKKyAgICAgICAgKHNlYXJjaEVudHJ5Q2hhbmdlZENh
bGxiYWNrKToKKyAgICAgICAgKHNlYXJjaEVudHJ5QWN0aXZhdGVkQ2FsbGJhY2spOgorICAgICAg
ICAoc2VhcmNoUHJldkJ1dHRvbkNsaWNrZWRDYWxsYmFjayk6CisgICAgICAgIChzZWFyY2hOZXh0
QnV0dG9uQ2xpY2tlZENhbGxiYWNrKToKKyAgICAgICAgKHNlYXJjaE1lbnVDaGVja0J1dHRvblRv
Z2dsZWRDYWxsYmFjayk6CisgICAgICAgIChmaW5kQ29udHJvbGxlckZhaWxlZFRvRmluZFRleHRD
YWxsYmFjayk6CisgICAgICAgIChmaW5kQ29udHJvbGxlckZvdW5kVGV4dENhbGxiYWNrKToKKyAg
ICAgICAgKGJyb3dzZXJfc2VhcmNoX2Jhcl9pbml0KToKKyAgICAgICAgKGJyb3dzZXJTZWFyY2hC
YXJGaW5hbGl6ZSk6CisgICAgICAgIChicm93c2VyX3NlYXJjaF9iYXJfY2xhc3NfaW5pdCk6Cisg
ICAgICAgIChicm93c2VyX3NlYXJjaF9iYXJfbmV3KToKKyAgICAgICAgKGJyb3dzZXJfc2VhcmNo
X2Jhcl9hZGRfYWNjZWxlcmF0b3JzKToKKyAgICAgICAgKGJyb3dzZXJfc2VhcmNoX2Jhcl9vcGVu
KToKKyAgICAgICAgKGJyb3dzZXJfc2VhcmNoX2Jhcl9jbG9zZSk6CisgICAgICAgICogTWluaUJy
b3dzZXIvZ3RrL0Jyb3dzZXJTZWFyY2hCYXIuaDogQWRkZWQuCisgICAgICAgICogTWluaUJyb3dz
ZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYzoKKyAgICAgICAgKHdlYlZpZXdFbnRlckZ1bGxTY3JlZW4p
OiBDbG9zZXMgbmV3IHNlYXJjaCBiYXIuCisgICAgICAgICh3ZWJWaWV3TGVhdmVGdWxsU2NyZWVu
KTogT3BlbnMgbmV3IHNlYXJjaCBiYXIgaWYgcHJldmlvdXNseQorICAgICAgICB2aXNpYmxlLgor
ICAgICAgICAoc2VhcmNoQ2FsbGJhY2spOiBBZGRlZC4gU2hvd3MgYW5kIGhpZGVzIHRoZSBuZXcg
c2VhcmNoIGJhci4KKyAgICAgICAgKGJyb3dzZXJfd2luZG93X2luaXQpOiBBZGRlZCBzZWFyY2gg
YnV0dG9uIHRvIHRoZSB0b29sYmFyLgorICAgICAgICAoYnJvd3NlcldpbmRvd0NvbnN0cnVjdGVk
KTogQ3JlYXRlcyB0aGUgbmV3IHNlYXJjaCBiYXIuCisgICAgICAgICogTWluaUJyb3dzZXIvZ3Rr
L0dOVW1ha2VmaWxlLmFtOiBBZGRlZCBuZXcgZmlsZXMgdG8gY29tcGlsYXRpb24uCisKIDIwMTMt
MDctMTUgIFhhYmllciBSb2RyaWd1ZXogQ2FsdmFyICA8Y2FsdmFyaXNAaWdhbGlhLmNvbT4KIAog
ICAgICAgICBbR1RLXSBJbmNyZWFzZSB0aGUgSkhCdWlsZCB2ZXJzaW9uIG9mIEdTdHJlYW1lciB0
byAxLjAuNwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJTZWFyY2hC
YXIuYyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyU2VhcmNoQmFyLmMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZjY5MzIwZDQxNjQ2NjBmOGNjZGJlMzkxMDhmYjYwMzA0ZTFiYjVjYQotLS0gL2Rldi9udWxs
CisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyU2VhcmNoQmFyLmMKQEAgLTAsMCAr
MSwyOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2luY2x1ZGUgIkJyb3dzZXJTZWFyY2hCYXIuaCIKKworCitzdHJ1Y3QgX0Jyb3dzZXJTZWFy
Y2hCYXIgeworICAgIEd0a1Rvb2xiYXIgcGFyZW50OworCisgICAgV2ViS2l0V2ViVmlldyAqd2Vi
VmlldzsKKyAgICBHdGtXaWRnZXQgKmVudHJ5OworICAgIEd0a0Nzc1Byb3ZpZGVyICpjc3NQcm92
aWRlcjsKKyAgICBHdGtXaWRnZXQgKnByZXZCdXR0b247CisgICAgR3RrV2lkZ2V0ICpuZXh0QnV0
dG9uOworICAgIEd0a1dpZGdldCAqb3B0aW9uc01lbnU7CisgICAgR3RrV2lkZ2V0ICpjYXNlQ2hl
Y2tCdXR0b247CisgICAgR3RrV2lkZ2V0ICpiZWdnaW5pZ1dvcmRDaGVja0J1dHRvbjsKKyAgICBH
dGtXaWRnZXQgKmNhcGl0YWxBc0JlZ2dpbmlnV29yZENoZWNrQnV0dG9uOworfTsKKworR19ERUZJ
TkVfVFlQRShCcm93c2VyU2VhcmNoQmFyLCBicm93c2VyX3NlYXJjaF9iYXIsIEdUS19UWVBFX1RP
T0xCQVIpCisKK3N0YXRpYyB2b2lkIHNldEVudHJ5QmFja2dyb3VuZENvbG9yKEJyb3dzZXJTZWFy
Y2hCYXIgKnNlYXJjaEJhciwgZ2Jvb2xlYW4gZmFpbGVkU2VhcmNoKQoreworICAgIGlmIChmYWls
ZWRTZWFyY2gpCisgICAgICAgIGd0a19zdHlsZV9jb250ZXh0X2FkZF9wcm92aWRlcihndGtfd2lk
Z2V0X2dldF9zdHlsZV9jb250ZXh0KHNlYXJjaEJhci0+ZW50cnkpLCBHVEtfU1RZTEVfUFJPVklE
RVIoc2VhcmNoQmFyLT5jc3NQcm92aWRlciksIEdUS19TVFlMRV9QUk9WSURFUl9QUklPUklUWV9B
UFBMSUNBVElPTik7CisgICAgZWxzZQorICAgICAgICBndGtfc3R5bGVfY29udGV4dF9yZW1vdmVf
cHJvdmlkZXIoZ3RrX3dpZGdldF9nZXRfc3R5bGVfY29udGV4dChzZWFyY2hCYXItPmVudHJ5KSwg
R1RLX1NUWUxFX1BST1ZJREVSKHNlYXJjaEJhci0+Y3NzUHJvdmlkZXIpKTsKK30KKworc3RhdGlj
IHZvaWQgZG9TZWFyY2goQnJvd3NlclNlYXJjaEJhciAqc2VhcmNoQmFyKQoreworICAgIEd0a0Vu
dHJ5ICplbnRyeSA9IEdUS19FTlRSWShzZWFyY2hCYXItPmVudHJ5KTsKKworICAgIGlmICghZ3Rr
X2VudHJ5X2dldF90ZXh0X2xlbmd0aChlbnRyeSkpIHsKKyAgICAgICAgd2Via2l0X2ZpbmRfY29u
dHJvbGxlcl9zZWFyY2hfZmluaXNoKHdlYmtpdF93ZWJfdmlld19nZXRfZmluZF9jb250cm9sbGVy
KHNlYXJjaEJhci0+d2ViVmlldykpOworICAgICAgICBndGtfZW50cnlfc2V0X2ljb25fZnJvbV9z
dG9jayhlbnRyeSwgR1RLX0VOVFJZX0lDT05fU0VDT05EQVJZLCBOVUxMKTsKKyAgICAgICAgc2V0
RW50cnlCYWNrZ3JvdW5kQ29sb3Ioc2VhcmNoQmFyLCBGQUxTRSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAoIWd0a19lbnRyeV9nZXRfaWNvbl9zdG9jayhlbnRyeSwgR1RLX0VO
VFJZX0lDT05fU0VDT05EQVJZKSkKKyAgICAgICAgZ3RrX2VudHJ5X3NldF9pY29uX2Zyb21fc3Rv
Y2soZW50cnksIEdUS19FTlRSWV9JQ09OX1NFQ09OREFSWSwgR1RLX1NUT0NLX0NMRUFSKTsKKwor
ICAgIFdlYktpdEZpbmRPcHRpb25zIG9wdGlvbnMgPSBXRUJLSVRfRklORF9PUFRJT05TX05PTkU7
CisgICAgaWYgKCFndGtfY2hlY2tfbWVudV9pdGVtX2dldF9hY3RpdmUoR1RLX0NIRUNLX01FTlVf
SVRFTShzZWFyY2hCYXItPmNhc2VDaGVja0J1dHRvbikpKQorICAgICAgICBvcHRpb25zIHw9IFdF
QktJVF9GSU5EX09QVElPTlNfQ0FTRV9JTlNFTlNJVElWRTsKKyAgICBpZiAoZ3RrX2NoZWNrX21l
bnVfaXRlbV9nZXRfYWN0aXZlKEdUS19DSEVDS19NRU5VX0lURU0oc2VhcmNoQmFyLT5iZWdnaW5p
Z1dvcmRDaGVja0J1dHRvbikpKQorICAgICAgICBvcHRpb25zIHw9IFdFQktJVF9GSU5EX09QVElP
TlNfQVRfV09SRF9TVEFSVFM7CisgICAgaWYgKGd0a19jaGVja19tZW51X2l0ZW1fZ2V0X2FjdGl2
ZShHVEtfQ0hFQ0tfTUVOVV9JVEVNKHNlYXJjaEJhci0+Y2FwaXRhbEFzQmVnZ2luaWdXb3JkQ2hl
Y2tCdXR0b24pKSkKKyAgICAgICAgb3B0aW9ucyB8PSBXRUJLSVRfRklORF9PUFRJT05TX1RSRUFU
X01FRElBTF9DQVBJVEFMX0FTX1dPUkRfU1RBUlQ7CisKKyAgICBjb25zdCBnY2hhciAqdGV4dCA9
IGd0a19lbnRyeV9nZXRfdGV4dChlbnRyeSk7CisgICAgd2Via2l0X2ZpbmRfY29udHJvbGxlcl9z
ZWFyY2god2Via2l0X3dlYl92aWV3X2dldF9maW5kX2NvbnRyb2xsZXIoc2VhcmNoQmFyLT53ZWJW
aWV3KSwgdGV4dCwgb3B0aW9ucywgR19NQVhVSU5UKTsKK30KKworc3RhdGljIHZvaWQgc2VhcmNo
TmV4dChCcm93c2VyU2VhcmNoQmFyICpzZWFyY2hCYXIpCit7CisgICAgd2Via2l0X2ZpbmRfY29u
dHJvbGxlcl9zZWFyY2hfbmV4dCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2ZpbmRfY29udHJvbGxlcihz
ZWFyY2hCYXItPndlYlZpZXcpKTsKK30KKworc3RhdGljIHZvaWQgc2VhcmNoUHJldmlvdXMoQnJv
d3NlclNlYXJjaEJhciAqc2VhcmNoQmFyKQoreworICAgIHdlYmtpdF9maW5kX2NvbnRyb2xsZXJf
c2VhcmNoX3ByZXZpb3VzKHdlYmtpdF93ZWJfdmlld19nZXRfZmluZF9jb250cm9sbGVyKHNlYXJj
aEJhci0+d2ViVmlldykpOworfQorCitzdGF0aWMgdm9pZCBzZWFyY2hDbG9zZUJ1dHRvbkNsaWNr
ZWRDYWxsYmFjayhCcm93c2VyU2VhcmNoQmFyICpzZWFyY2hCYXIpCit7CisgICAgYnJvd3Nlcl9z
ZWFyY2hfYmFyX2Nsb3NlKHNlYXJjaEJhcik7Cit9CisKK3N0YXRpYyB2b2lkIHNlYXJjaEVudHJ5
TWVudUljb25QcmVzc2VkQ2FsbGJhY2soQnJvd3NlclNlYXJjaEJhciAqc2VhcmNoQmFyLCBHdGtF
bnRyeUljb25Qb3NpdGlvbiBpY29uUG9zaXRpb24sIEdka0V2ZW50ICpldmVudCkKK3sKKyAgICBp
ZiAoaWNvblBvc2l0aW9uID09IEdUS19FTlRSWV9JQ09OX1BSSU1BUlkpIHsKKyAgICAgICAgR2Rr
RXZlbnRCdXR0b24gKmV2ZW50QnV0dG9uID0gKEdka0V2ZW50QnV0dG9uICopZXZlbnQ7CisgICAg
ICAgIGd0a19tZW51X3BvcHVwKEdUS19NRU5VKHNlYXJjaEJhci0+b3B0aW9uc01lbnUpLCBOVUxM
LCBOVUxMLCBOVUxMLCBOVUxMLCBldmVudEJ1dHRvbi0+YnV0dG9uLCBldmVudEJ1dHRvbi0+dGlt
ZSk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBzZWFyY2hFbnRyeUNsZWFySWNvblJlbGVhc2Vk
Q2FsbGJhY2soQnJvd3NlclNlYXJjaEJhciAqc2VhcmNoQmFyLCBHdGtFbnRyeUljb25Qb3NpdGlv
biBpY29uUG9zaXRpb24pCit7CisgICAgaWYgKGljb25Qb3NpdGlvbiA9PSBHVEtfRU5UUllfSUNP
Tl9TRUNPTkRBUlkpCisgICAgICAgIGd0a19lbnRyeV9zZXRfdGV4dChHVEtfRU5UUlkoc2VhcmNo
QmFyLT5lbnRyeSksICIiKTsKK30KKworc3RhdGljIHZvaWQgc2VhcmNoRW50cnlDaGFuZ2VkQ2Fs
bGJhY2soR3RrRW50cnkgKmVudHJ5LCBCcm93c2VyU2VhcmNoQmFyICpzZWFyY2hCYXIpCit7Cisg
ICAgZG9TZWFyY2goc2VhcmNoQmFyKTsKK30KKworc3RhdGljIHZvaWQgc2VhcmNoRW50cnlBY3Rp
dmF0ZWRDYWxsYmFjayhCcm93c2VyU2VhcmNoQmFyICpzZWFyY2hCYXIpCit7CisgICAgc2VhcmNo
TmV4dChzZWFyY2hCYXIpOworfQorCitzdGF0aWMgdm9pZCBzZWFyY2hQcmV2QnV0dG9uQ2xpY2tl
ZENhbGxiYWNrKEJyb3dzZXJTZWFyY2hCYXIgKnNlYXJjaEJhcikKK3sKKyAgICBzZWFyY2hQcmV2
aW91cyhzZWFyY2hCYXIpOworfQorCitzdGF0aWMgdm9pZCBzZWFyY2hOZXh0QnV0dG9uQ2xpY2tl
ZENhbGxiYWNrKEJyb3dzZXJTZWFyY2hCYXIgKnNlYXJjaEJhcikKK3sKKyAgICBzZWFyY2hOZXh0
KHNlYXJjaEJhcik7Cit9CisKK3N0YXRpYyB2b2lkIHNlYXJjaE1lbnVDaGVja0J1dHRvblRvZ2ds
ZWRDYWxsYmFjayhCcm93c2VyU2VhcmNoQmFyICpzZWFyY2hCYXIpCit7CisgICAgZG9TZWFyY2go
c2VhcmNoQmFyKTsKK30KKworc3RhdGljIHZvaWQgZmluZENvbnRyb2xsZXJGYWlsZWRUb0ZpbmRU
ZXh0Q2FsbGJhY2soQnJvd3NlclNlYXJjaEJhciAqc2VhcmNoQmFyKQoreworICAgIHNldEVudHJ5
QmFja2dyb3VuZENvbG9yKHNlYXJjaEJhciwgVFJVRSk7Cit9CisKK3N0YXRpYyB2b2lkIGZpbmRD
b250cm9sbGVyRm91bmRUZXh0Q2FsbGJhY2soQnJvd3NlclNlYXJjaEJhciAqc2VhcmNoQmFyKQor
eworICAgIHNldEVudHJ5QmFja2dyb3VuZENvbG9yKHNlYXJjaEJhciwgRkFMU0UpOworfQorCitz
dGF0aWMgdm9pZCBicm93c2VyX3NlYXJjaF9iYXJfaW5pdChCcm93c2VyU2VhcmNoQmFyICpzZWFy
Y2hCYXIpCit7CisgICAgZ3RrX3dpZGdldF9zZXRfaGV4cGFuZChHVEtfV0lER0VUKHNlYXJjaEJh
ciksIFRSVUUpOworCisgICAgR3RrVG9vbEl0ZW0gKnRvb2xJdGVtID0gZ3RrX3Rvb2xfaXRlbV9u
ZXcoKTsKKyAgICBndGtfdG9vbF9pdGVtX3NldF9leHBhbmQodG9vbEl0ZW0sIFRSVUUpOworICAg
IGd0a190b29sYmFyX2luc2VydChHVEtfVE9PTEJBUihzZWFyY2hCYXIpLCB0b29sSXRlbSwgMCk7
CisKKyAgICBHdGtCb3ggKmhCb3ggPSBHVEtfQk9YKGd0a19ib3hfbmV3KEdUS19PUklFTlRBVElP
Tl9IT1JJWk9OVEFMLCA1KSk7CisgICAgZ3RrX2JveF9zZXRfaG9tb2dlbmVvdXMoaEJveCwgVFJV
RSk7CisgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUih0b29sSXRlbSksIEdUS19X
SURHRVQoaEJveCkpOworCisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KGhCb3gsIGd0a19ib3hfbmV3
KEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMLCAwKSwgVFJVRSwgVFJVRSwgMCk7CisKKyAgICBz
ZWFyY2hCYXItPmVudHJ5ID0gZ3RrX2VudHJ5X25ldygpOworICAgIGd0a193aWRnZXRfc2V0X25h
bWUoc2VhcmNoQmFyLT5lbnRyeSwgInNlYXJjaEVudHJ5Iik7CisgICAgZ3RrX2VudHJ5X3NldF9w
bGFjZWhvbGRlcl90ZXh0KEdUS19FTlRSWShzZWFyY2hCYXItPmVudHJ5KSwgIlNlYXJjaCIpOwor
ICAgIGd0a19lbnRyeV9zZXRfaWNvbl9mcm9tX3N0b2NrKEdUS19FTlRSWShzZWFyY2hCYXItPmVu
dHJ5KSwgR1RLX0VOVFJZX0lDT05fUFJJTUFSWSwgR1RLX1NUT0NLX0ZJTkQpOworICAgIGd0a19i
b3hfcGFja19zdGFydChoQm94LCBzZWFyY2hCYXItPmVudHJ5LCBUUlVFLCBUUlVFLCAwKTsKKwor
ICAgIHNlYXJjaEJhci0+Y3NzUHJvdmlkZXIgPSBndGtfY3NzX3Byb3ZpZGVyX25ldygpOworICAg
IGd0a19jc3NfcHJvdmlkZXJfbG9hZF9mcm9tX2RhdGEoc2VhcmNoQmFyLT5jc3NQcm92aWRlciwK
KyAgICAgICAgIiBHdGtFbnRyeSNzZWFyY2hFbnRyeSB7XG4iCisgICAgICAgICIgICBiYWNrZ3Jv
dW5kLWNvbG9yOiAjZmY2NjY2O1xuIgorICAgICAgICAifVxuIiwgLTEsIE5VTEwpOworCisgICAg
R3RrQm94ICpoQm94QnV0dG9ucyA9IEdUS19CT1goZ3RrX2JveF9uZXcoR1RLX09SSUVOVEFUSU9O
X0hPUklaT05UQUwsIDApKTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoaEJveCwgR1RLX1dJREdF
VChoQm94QnV0dG9ucyksIFRSVUUsIFRSVUUsIDApOworCisgICAgc2VhcmNoQmFyLT5wcmV2QnV0
dG9uID0gZ3RrX2J1dHRvbl9uZXcoKTsKKyAgICBHdGtCdXR0b24gKmJ1dHRvbiA9IEdUS19CVVRU
T04oc2VhcmNoQmFyLT5wcmV2QnV0dG9uKTsKKyAgICBHdGtXaWRnZXQgKmltYWdlID0gZ3RrX2lt
YWdlX25ld19mcm9tX3N0b2NrKEdUS19TVE9DS19HT19VUCwgR1RLX0lDT05fU0laRV9TTUFMTF9U
T09MQkFSKTsKKyAgICBndGtfYnV0dG9uX3NldF9pbWFnZShidXR0b24sIGltYWdlKTsKKyAgICBn
dGtfYnV0dG9uX3NldF9yZWxpZWYoYnV0dG9uLCBHVEtfUkVMSUVGX05PTkUpOworICAgIGd0a19i
dXR0b25fc2V0X2ZvY3VzX29uX2NsaWNrKGJ1dHRvbiwgRkFMU0UpOworICAgIGd0a19ib3hfcGFj
a19zdGFydChoQm94QnV0dG9ucywgc2VhcmNoQmFyLT5wcmV2QnV0dG9uLCBGQUxTRSwgRkFMU0Us
IDApOworCisgICAgc2VhcmNoQmFyLT5uZXh0QnV0dG9uID0gZ3RrX2J1dHRvbl9uZXcoKTsKKyAg
ICBidXR0b24gPSBHVEtfQlVUVE9OKHNlYXJjaEJhci0+bmV4dEJ1dHRvbik7CisgICAgaW1hZ2Ug
PSBndGtfaW1hZ2VfbmV3X2Zyb21fc3RvY2soR1RLX1NUT0NLX0dPX0RPV04sIEdUS19JQ09OX1NJ
WkVfU01BTExfVE9PTEJBUik7CisgICAgZ3RrX2J1dHRvbl9zZXRfaW1hZ2UoYnV0dG9uLCBpbWFn
ZSk7CisgICAgZ3RrX2J1dHRvbl9zZXRfcmVsaWVmKGJ1dHRvbiwgR1RLX1JFTElFRl9OT05FKTsK
KyAgICBndGtfYnV0dG9uX3NldF9mb2N1c19vbl9jbGljayhidXR0b24sIEZBTFNFKTsKKyAgICBn
dGtfYm94X3BhY2tfc3RhcnQoaEJveEJ1dHRvbnMsIHNlYXJjaEJhci0+bmV4dEJ1dHRvbiwgRkFM
U0UsIEZBTFNFLCAwKTsKKworICAgIEd0a1dpZGdldCAqY2xvc2VCdXR0b24gPSBndGtfYnV0dG9u
X25ldygpOworICAgIGJ1dHRvbiA9IEdUS19CVVRUT04oY2xvc2VCdXR0b24pOworICAgIGltYWdl
ID0gZ3RrX2ltYWdlX25ld19mcm9tX3N0b2NrKEdUS19TVE9DS19DTE9TRSwgR1RLX0lDT05fU0la
RV9TTUFMTF9UT09MQkFSKTsKKyAgICBndGtfYnV0dG9uX3NldF9pbWFnZShidXR0b24sIGltYWdl
KTsKKyAgICBndGtfYnV0dG9uX3NldF9yZWxpZWYoYnV0dG9uLCBHVEtfUkVMSUVGX05PTkUpOwor
ICAgIGd0a19idXR0b25fc2V0X2ZvY3VzX29uX2NsaWNrKGJ1dHRvbiwgRkFMU0UpOworICAgIGd0
a19ib3hfcGFja19lbmQoaEJveEJ1dHRvbnMsIGNsb3NlQnV0dG9uLCBGQUxTRSwgRkFMU0UsIDAp
OworCisgICAgc2VhcmNoQmFyLT5vcHRpb25zTWVudSA9IGdfb2JqZWN0X3JlZl9zaW5rKGd0a19t
ZW51X25ldygpKTsKKworICAgIHNlYXJjaEJhci0+Y2FzZUNoZWNrQnV0dG9uID0gZ3RrX2NoZWNr
X21lbnVfaXRlbV9uZXdfd2l0aF9tbmVtb25pYygiQ2Ffc2Ugc2Vuc2l0aXZlIik7CisgICAgZ3Rr
X2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUihzZWFyY2hCYXItPm9wdGlvbnNNZW51KSwgc2Vh
cmNoQmFyLT5jYXNlQ2hlY2tCdXR0b24pOworCisgICAgc2VhcmNoQmFyLT5iZWdnaW5pZ1dvcmRD
aGVja0J1dHRvbiA9IGd0a19jaGVja19tZW51X2l0ZW1fbmV3X3dpdGhfbW5lbW9uaWMoIk9ubHkg
YXQgdGhlIF9iZWdpbm5pbmcgb2Ygd29yZHMiKTsKKyAgICBndGtfY29udGFpbmVyX2FkZChHVEtf
Q09OVEFJTkVSKHNlYXJjaEJhci0+b3B0aW9uc01lbnUpLCBzZWFyY2hCYXItPmJlZ2dpbmlnV29y
ZENoZWNrQnV0dG9uKTsKKworICAgIHNlYXJjaEJhci0+Y2FwaXRhbEFzQmVnZ2luaWdXb3JkQ2hl
Y2tCdXR0b24gPSBndGtfY2hlY2tfbWVudV9pdGVtX25ld193aXRoX21uZW1vbmljKCJDYXBpdGFs
IF9hbHdheXMgYXMgYmVnaW5uaW5nIG9mIHdvcmQiKTsKKyAgICBndGtfY29udGFpbmVyX2FkZChH
VEtfQ09OVEFJTkVSKHNlYXJjaEJhci0+b3B0aW9uc01lbnUpLCBzZWFyY2hCYXItPmNhcGl0YWxB
c0JlZ2dpbmlnV29yZENoZWNrQnV0dG9uKTsKKworICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBl
ZChjbG9zZUJ1dHRvbiwgImNsaWNrZWQiLCBHX0NBTExCQUNLKHNlYXJjaENsb3NlQnV0dG9uQ2xp
Y2tlZENhbGxiYWNrKSwgc2VhcmNoQmFyKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQo
c2VhcmNoQmFyLT5lbnRyeSwgImljb24tcHJlc3MiLCBHX0NBTExCQUNLKHNlYXJjaEVudHJ5TWVu
dUljb25QcmVzc2VkQ2FsbGJhY2spLCBzZWFyY2hCYXIpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Rf
c3dhcHBlZChzZWFyY2hCYXItPmVudHJ5LCAiaWNvbi1yZWxlYXNlIiwgR19DQUxMQkFDSyhzZWFy
Y2hFbnRyeUNsZWFySWNvblJlbGVhc2VkQ2FsbGJhY2spLCBzZWFyY2hCYXIpOworICAgIGdfc2ln
bmFsX2Nvbm5lY3RfYWZ0ZXIoc2VhcmNoQmFyLT5lbnRyeSwgImNoYW5nZWQiLCBHX0NBTExCQUNL
KHNlYXJjaEVudHJ5Q2hhbmdlZENhbGxiYWNrKSwgc2VhcmNoQmFyKTsKKyAgICBnX3NpZ25hbF9j
b25uZWN0X3N3YXBwZWQoc2VhcmNoQmFyLT5lbnRyeSwgImFjdGl2YXRlIiwgR19DQUxMQkFDSyhz
ZWFyY2hFbnRyeUFjdGl2YXRlZENhbGxiYWNrKSwgc2VhcmNoQmFyKTsKKyAgICBnX3NpZ25hbF9j
b25uZWN0X3N3YXBwZWQoc2VhcmNoQmFyLT5uZXh0QnV0dG9uLCAiY2xpY2tlZCIsIEdfQ0FMTEJB
Q0soc2VhcmNoTmV4dEJ1dHRvbkNsaWNrZWRDYWxsYmFjayksIHNlYXJjaEJhcik7CisgICAgZ19z
aWduYWxfY29ubmVjdF9zd2FwcGVkKHNlYXJjaEJhci0+cHJldkJ1dHRvbiwgImNsaWNrZWQiLCBH
X0NBTExCQUNLKHNlYXJjaFByZXZCdXR0b25DbGlja2VkQ2FsbGJhY2spLCBzZWFyY2hCYXIpOwor
ICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChzZWFyY2hCYXItPmNhc2VDaGVja0J1dHRvbiwg
InRvZ2dsZWQiLCBHX0NBTExCQUNLKHNlYXJjaE1lbnVDaGVja0J1dHRvblRvZ2dsZWRDYWxsYmFj
ayksIHNlYXJjaEJhcik7CisgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKHNlYXJjaEJhci0+
YmVnZ2luaWdXb3JkQ2hlY2tCdXR0b24sICJ0b2dnbGVkIiwgR19DQUxMQkFDSyhzZWFyY2hNZW51
Q2hlY2tCdXR0b25Ub2dnbGVkQ2FsbGJhY2spLCBzZWFyY2hCYXIpOworICAgIGdfc2lnbmFsX2Nv
bm5lY3Rfc3dhcHBlZChzZWFyY2hCYXItPmNhcGl0YWxBc0JlZ2dpbmlnV29yZENoZWNrQnV0dG9u
LCAidG9nZ2xlZCIsIEdfQ0FMTEJBQ0soc2VhcmNoTWVudUNoZWNrQnV0dG9uVG9nZ2xlZENhbGxi
YWNrKSwgc2VhcmNoQmFyKTsKKworICAgIGd0a193aWRnZXRfc2hvd19hbGwoR1RLX1dJREdFVCh0
b29sSXRlbSkpOworICAgIGd0a193aWRnZXRfc2hvd19hbGwoc2VhcmNoQmFyLT5vcHRpb25zTWVu
dSk7Cit9CisKK3N0YXRpYyB2b2lkIGJyb3dzZXJTZWFyY2hCYXJGaW5hbGl6ZShHT2JqZWN0ICpn
T2JqZWN0KQoreworICAgIEJyb3dzZXJTZWFyY2hCYXIgKnNlYXJjaEJhciA9IEJST1dTRVJfU0VB
UkNIX0JBUihnT2JqZWN0KTsKKworICAgIGlmIChzZWFyY2hCYXItPndlYlZpZXcpIHsKKyAgICAg
ICAgZ19vYmplY3RfdW5yZWYoc2VhcmNoQmFyLT53ZWJWaWV3KTsKKyAgICAgICAgc2VhcmNoQmFy
LT53ZWJWaWV3ID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoc2VhcmNoQmFyLT5jc3NQcm92aWRl
cikgeworICAgICAgICBnX29iamVjdF91bnJlZihzZWFyY2hCYXItPmNzc1Byb3ZpZGVyKTsKKyAg
ICAgICAgc2VhcmNoQmFyLT5jc3NQcm92aWRlciA9IE5VTEw7CisgICAgfQorCisgICAgaWYgKHNl
YXJjaEJhci0+b3B0aW9uc01lbnUpIHsKKyAgICAgICAgZ19vYmplY3RfdW5yZWYoc2VhcmNoQmFy
LT5vcHRpb25zTWVudSk7CisgICAgICAgIHNlYXJjaEJhci0+b3B0aW9uc01lbnUgPSBOVUxMOwor
ICAgIH0KKworICAgIEdfT0JKRUNUX0NMQVNTKGJyb3dzZXJfc2VhcmNoX2Jhcl9wYXJlbnRfY2xh
c3MpLT5maW5hbGl6ZShnT2JqZWN0KTsKK30KKworc3RhdGljIHZvaWQgYnJvd3Nlcl9zZWFyY2hf
YmFyX2NsYXNzX2luaXQoQnJvd3NlclNlYXJjaEJhckNsYXNzICprbGFzcykKK3sKKyAgICBHT2Jq
ZWN0Q2xhc3MgKmdPYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGtsYXNzKTsKKworICAgIGdP
YmplY3RDbGFzcy0+ZmluYWxpemUgPSBicm93c2VyU2VhcmNoQmFyRmluYWxpemU7Cit9CisKK0d0
a1dpZGdldCAqYnJvd3Nlcl9zZWFyY2hfYmFyX25ldyhXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3KQor
eworICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwg
TlVMTCk7CisKKyAgICBHdGtXaWRnZXQgKnNlYXJjaEJhciA9IEdUS19XSURHRVQoZ19vYmplY3Rf
bmV3KEJST1dTRVJfVFlQRV9TRUFSQ0hfQkFSLCBOVUxMKSk7CisgICAgQlJPV1NFUl9TRUFSQ0hf
QkFSKHNlYXJjaEJhciktPndlYlZpZXcgPSBnX29iamVjdF9yZWYod2ViVmlldyk7CisKKyAgICBX
ZWJLaXRGaW5kQ29udHJvbGxlciAqY29udHJvbGxlciA9IHdlYmtpdF93ZWJfdmlld19nZXRfZmlu
ZF9jb250cm9sbGVyKHdlYlZpZXcpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChjb250
cm9sbGVyLCAiZmFpbGVkLXRvLWZpbmQtdGV4dCIsIEdfQ0FMTEJBQ0soZmluZENvbnRyb2xsZXJG
YWlsZWRUb0ZpbmRUZXh0Q2FsbGJhY2spLCBzZWFyY2hCYXIpOworICAgIGdfc2lnbmFsX2Nvbm5l
Y3Rfc3dhcHBlZChjb250cm9sbGVyLCAiZm91bmQtdGV4dCIsIEdfQ0FMTEJBQ0soZmluZENvbnRy
b2xsZXJGb3VuZFRleHRDYWxsYmFjayksIHNlYXJjaEJhcik7CisKKyAgICByZXR1cm4gc2VhcmNo
QmFyOworfQorCit2b2lkIGJyb3dzZXJfc2VhcmNoX2Jhcl9hZGRfYWNjZWxlcmF0b3JzKEJyb3dz
ZXJTZWFyY2hCYXIgKnNlYXJjaEJhciwgR3RrQWNjZWxHcm91cCAqYWNjZWxHcm91cCkKK3sKKyAg
ICBnX3JldHVybl9pZl9mYWlsKEJST1dTRVJfSVNfU0VBUkNIX0JBUihzZWFyY2hCYXIpKTsKKyAg
ICBnX3JldHVybl9pZl9mYWlsKEdUS19JU19BQ0NFTF9HUk9VUChhY2NlbEdyb3VwKSk7CisKKyAg
ICBndGtfd2lkZ2V0X2FkZF9hY2NlbGVyYXRvcihzZWFyY2hCYXItPm5leHRCdXR0b24sICJjbGlj
a2VkIiwgYWNjZWxHcm91cCwgR0RLX0tFWV9GMywgMCwgR1RLX0FDQ0VMX1ZJU0lCTEUpOworICAg
IGd0a193aWRnZXRfYWRkX2FjY2VsZXJhdG9yKHNlYXJjaEJhci0+bmV4dEJ1dHRvbiwgImNsaWNr
ZWQiLCBhY2NlbEdyb3VwLCBHREtfS0VZX0csIEdES19DT05UUk9MX01BU0ssIEdUS19BQ0NFTF9W
SVNJQkxFKTsKKworICAgIGd0a193aWRnZXRfYWRkX2FjY2VsZXJhdG9yKHNlYXJjaEJhci0+cHJl
dkJ1dHRvbiwgImNsaWNrZWQiLCBhY2NlbEdyb3VwLCBHREtfS0VZX0YzLCBHREtfU0hJRlRfTUFT
SywgR1RLX0FDQ0VMX1ZJU0lCTEUpOworICAgIGd0a193aWRnZXRfYWRkX2FjY2VsZXJhdG9yKHNl
YXJjaEJhci0+cHJldkJ1dHRvbiwgImNsaWNrZWQiLCBhY2NlbEdyb3VwLCBHREtfS0VZX0csIEdE
S19TSElGVF9NQVNLIHwgR0RLX0NPTlRST0xfTUFTSywgR1RLX0FDQ0VMX1ZJU0lCTEUpOworfQor
Cit2b2lkIGJyb3dzZXJfc2VhcmNoX2Jhcl9vcGVuKEJyb3dzZXJTZWFyY2hCYXIgKnNlYXJjaEJh
cikKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKEJST1dTRVJfSVNfU0VBUkNIX0JBUihzZWFyY2hC
YXIpKTsKKworICAgIGd0a193aWRnZXRfc2hvdyhHVEtfV0lER0VUKHNlYXJjaEJhcikpOworICAg
IGd0a193aWRnZXRfZ3JhYl9mb2N1cyhHVEtfV0lER0VUKHNlYXJjaEJhci0+ZW50cnkpKTsKKyAg
ICBndGtfZWRpdGFibGVfc2VsZWN0X3JlZ2lvbihHVEtfRURJVEFCTEUoc2VhcmNoQmFyLT5lbnRy
eSksIDAsIC0xKTsKK30KKwordm9pZCBicm93c2VyX3NlYXJjaF9iYXJfY2xvc2UoQnJvd3NlclNl
YXJjaEJhciAqc2VhcmNoQmFyKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoQlJPV1NFUl9JU19T
RUFSQ0hfQkFSKHNlYXJjaEJhcikpOworCisgICAgZ3RrX3dpZGdldF9oaWRlKEdUS19XSURHRVQo
c2VhcmNoQmFyKSk7CisgICAgV2ViS2l0RmluZENvbnRyb2xsZXIgKmNvbnRyb2xsZXIgPSB3ZWJr
aXRfd2ViX3ZpZXdfZ2V0X2ZpbmRfY29udHJvbGxlcihzZWFyY2hCYXItPndlYlZpZXcpOworICAg
IHdlYmtpdF9maW5kX2NvbnRyb2xsZXJfc2VhcmNoX2ZpbmlzaChjb250cm9sbGVyKTsKK30KZGlm
ZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyU2VhcmNoQmFyLmggYi9Ub29s
cy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlclNlYXJjaEJhci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFkZThkOGFi
YTJhMTY5YWI0NmQzYTgyNTU2NTgwNjg3NjEwYWYxYjAKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlclNlYXJjaEJhci5oCkBAIC0wLDAgKzEsNTcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgSWdhbGlhIFMuTC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBC
cm93c2VyU2VhcmNoQmFyX2gKKyNkZWZpbmUgQnJvd3NlclNlYXJjaEJhcl9oCisKKyNpbmNsdWRl
IDxndGsvZ3RrLmg+CisjaW5jbHVkZSA8d2Via2l0Mi93ZWJraXQyLmg+CisKK0dfQkVHSU5fREVD
TFMKKworI2RlZmluZSBCUk9XU0VSX1RZUEVfU0VBUkNIX0JBUiAgICAgICAgICAgIChicm93c2Vy
X3NlYXJjaF9iYXJfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgQlJPV1NFUl9TRUFSQ0hfQkFSKG9iaikg
ICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIEJST1dTRVJfVFlQ
RV9TRUFSQ0hfQkFSLCBCcm93c2VyU2VhcmNoQmFyKSkKKyNkZWZpbmUgQlJPV1NFUl9JU19TRUFS
Q0hfQkFSKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIEJS
T1dTRVJfVFlQRV9TRUFSQ0hfQkFSKSkKKyNkZWZpbmUgQlJPV1NFUl9TRUFSQ0hfQkFSX0NMQVNT
KGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSwgIEJST1dTRVJfVFlQ
RV9TRUFSQ0hfQkFSLCBCcm93c2VyU2VhcmNoQmFyQ2xhc3MpKQorI2RlZmluZSBCUk9XU0VSX0lT
X1NFQVJDSF9CQVJfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3Mp
LCAgQlJPV1NFUl9UWVBFX1NFQVJDSF9CQVIpKQorI2RlZmluZSBCUk9XU0VSX1NFQVJDSF9CQVJf
R0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLCAgQlJPV1NF
Ul9UWVBFX1NFQVJDSF9CQVIsIEJyb3dzZXJTZWFyY2hCYXJDbGFzcykpCisKK3R5cGVkZWYgc3Ry
dWN0IF9Ccm93c2VyU2VhcmNoQmFyICAgICAgIEJyb3dzZXJTZWFyY2hCYXI7Cit0eXBlZGVmIHN0
cnVjdCBfQnJvd3NlclNlYXJjaEJhckNsYXNzICBCcm93c2VyU2VhcmNoQmFyQ2xhc3M7CisKK3N0
cnVjdCBfQnJvd3NlclNlYXJjaEJhckNsYXNzIHsKKyAgICBHdGtUb29sYmFyQ2xhc3MgcGFyZW50
X2NsYXNzOworfTsKKworR1R5cGUgYnJvd3Nlcl9zZWFyY2hfYmFyX2dldF90eXBlKHZvaWQpOwor
CitHdGtXaWRnZXQgKmJyb3dzZXJfc2VhcmNoX2Jhcl9uZXcoV2ViS2l0V2ViVmlldyAqKTsKK3Zv
aWQgYnJvd3Nlcl9zZWFyY2hfYmFyX2FkZF9hY2NlbGVyYXRvcnMoQnJvd3NlclNlYXJjaEJhciAq
LCBHdGtBY2NlbEdyb3VwICopOwordm9pZCBicm93c2VyX3NlYXJjaF9iYXJfb3BlbihCcm93c2Vy
U2VhcmNoQmFyICopOwordm9pZCBicm93c2VyX3NlYXJjaF9iYXJfY2xvc2UoQnJvd3NlclNlYXJj
aEJhciAqKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9NaW5p
QnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dz
ZXJXaW5kb3cuYwppbmRleCBjOTVmNDljOTg1NWYzZWMwOTdiOGRlODc4MzJjNDY3N2JmOTZhNzQ5
Li5iN2UzZjA1NmFmYTUwZTE4NmM3NTcwNmViNmYxYWFhNWI4NzUzYjM5IDEwMDY0NAotLS0gYS9U
b29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCisrKyBiL1Rvb2xzL01pbmlCcm93
c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJCcm93
c2VyV2luZG93LmgiCiAKICNpbmNsdWRlICJCcm93c2VyRG93bmxvYWRzQmFyLmgiCisjaW5jbHVk
ZSAiQnJvd3NlclNlYXJjaEJhci5oIgogI2luY2x1ZGUgIkJyb3dzZXJTZXR0aW5nc0RpYWxvZy5o
IgogI2luY2x1ZGUgPGdkay9nZGtrZXlzeW1zLmg+CiAjaW5jbHVkZSA8c3RyaW5nLmg+CkBAIC00
MSw2ICs0Miw3IEBAIGVudW0gewogc3RydWN0IF9Ccm93c2VyV2luZG93IHsKICAgICBHdGtXaW5k
b3cgcGFyZW50OwogCisgICAgR3RrQWNjZWxHcm91cCAqYWNjZWxHcm91cDsKICAgICBHdGtXaWRn
ZXQgKm1haW5Cb3g7CiAgICAgR3RrV2lkZ2V0ICp0b29sYmFyOwogICAgIEd0a1dpZGdldCAqdXJp
RW50cnk7CkBAIC01Miw2ICs1NCw4IEBAIHN0cnVjdCBfQnJvd3NlcldpbmRvdyB7CiAgICAgR3Rr
V2lkZ2V0ICpzZXR0aW5nc0RpYWxvZzsKICAgICBXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3OwogICAg
IEd0a1dpZGdldCAqZG93bmxvYWRzQmFyOworICAgIEJyb3dzZXJTZWFyY2hCYXIgKnNlYXJjaEJh
cjsKKyAgICBnYm9vbGVhbiBzZWFyY2hCYXJWaXNpYmxlOwogICAgIEdka1BpeGJ1ZiAqZmF2aWNv
bjsKICAgICBHdGtXaWRnZXQgKmZ1bGxTY3JlZW5NZXNzYWdlTGFiZWw7CiAgICAgZ3VpbnQgZnVs
bFNjcmVlbk1lc3NhZ2VMYWJlbElkOwpAQCAtMzA0LDYgKzMwOCw4IEBAIHN0YXRpYyBnYm9vbGVh
biB3ZWJWaWV3RW50ZXJGdWxsU2NyZWVuKFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIEJyb3dzZXJX
aW5kb3cgKndpCiAKICAgICB3aW5kb3ctPmZ1bGxTY3JlZW5NZXNzYWdlTGFiZWxJZCA9IGdfdGlt
ZW91dF9hZGRfc2Vjb25kcygyLCAoR1NvdXJjZUZ1bmMpZnVsbFNjcmVlbk1lc3NhZ2VUaW1lb3V0
Q2FsbGJhY2ssIHdpbmRvdyk7CiAgICAgZ3RrX3dpZGdldF9oaWRlKHdpbmRvdy0+dG9vbGJhcik7
CisgICAgd2luZG93LT5zZWFyY2hCYXJWaXNpYmxlID0gZ3RrX3dpZGdldF9nZXRfdmlzaWJsZShH
VEtfV0lER0VUKHdpbmRvdy0+c2VhcmNoQmFyKSk7CisgICAgYnJvd3Nlcl9zZWFyY2hfYmFyX2Ns
b3NlKHdpbmRvdy0+c2VhcmNoQmFyKTsKIAogICAgIHJldHVybiBGQUxTRTsKIH0KQEAgLTMxNiw2
ICszMjIsMTMgQEAgc3RhdGljIGdib29sZWFuIHdlYlZpZXdMZWF2ZUZ1bGxTY3JlZW4oV2ViS2l0
V2ViVmlldyAqd2ViVmlldywgQnJvd3NlcldpbmRvdyAqd2kKICAgICB9CiAgICAgZ3RrX3dpZGdl
dF9oaWRlKHdpbmRvdy0+ZnVsbFNjcmVlbk1lc3NhZ2VMYWJlbCk7CiAgICAgZ3RrX3dpZGdldF9z
aG93KHdpbmRvdy0+dG9vbGJhcik7CisgICAgaWYgKHdpbmRvdy0+c2VhcmNoQmFyVmlzaWJsZSkg
eworICAgICAgICAvLyBPcGVuaW5nIHRoZSBzZWFyY2ggYmFyIHN0ZWFscyB0aGUgZm9jdXMuIFVz
dWFsbHksIHdlIHdhbnQKKyAgICAgICAgLy8gdGhpcyBidXQgbm90IHdoZW4gY29taW5nIGJhY2sg
ZnJvbSBmdWxsc2NyZWVuLgorICAgICAgICBHdGtXaWRnZXQgKmZvY3VzV2lkZ2V0ID0gZ3RrX3dp
bmRvd19nZXRfZm9jdXMoR1RLX1dJTkRPVyh3aW5kb3cpKTsKKyAgICAgICAgYnJvd3Nlcl9zZWFy
Y2hfYmFyX29wZW4od2luZG93LT5zZWFyY2hCYXIpOworICAgICAgICBndGtfd2luZG93X3NldF9m
b2N1cyhHVEtfV0lORE9XKHdpbmRvdyksIGZvY3VzV2lkZ2V0KTsKKyAgICB9CiAKICAgICByZXR1
cm4gRkFMU0U7CiB9CkBAIC00NjgsNiArNDgxLDExIEBAIHN0YXRpYyB2b2lkIHpvb21PdXRDYWxs
YmFjayhCcm93c2VyV2luZG93ICp3aW5kb3cpCiAgICAgd2Via2l0X3dlYl92aWV3X3NldF96b29t
X2xldmVsKHdpbmRvdy0+d2ViVmlldywgem9vbUxldmVsKTsKIH0KIAorc3RhdGljIHZvaWQgc2Vh
cmNoQ2FsbGJhY2soQnJvd3NlcldpbmRvdyAqd2luZG93KQoreworICAgIGJyb3dzZXJfc2VhcmNo
X2Jhcl9vcGVuKHdpbmRvdy0+c2VhcmNoQmFyKTsKK30KKwogc3RhdGljIHZvaWQgYnJvd3Nlcldp
bmRvd0ZpbmFsaXplKEdPYmplY3QgKmdPYmplY3QpCiB7CiAgICAgQnJvd3NlcldpbmRvdyAqd2lu
ZG93ID0gQlJPV1NFUl9XSU5ET1coZ09iamVjdCk7CkBAIC00NzYsNiArNDk0LDExIEBAIHN0YXRp
YyB2b2lkIGJyb3dzZXJXaW5kb3dGaW5hbGl6ZShHT2JqZWN0ICpnT2JqZWN0KQogICAgICAgICB3
aW5kb3ctPmZhdmljb24gPSBOVUxMOwogICAgIH0KIAorICAgIGlmICh3aW5kb3ctPmFjY2VsR3Jv
dXApIHsKKyAgICAgICAgZ19vYmplY3RfdW5yZWYod2luZG93LT5hY2NlbEdyb3VwKTsKKyAgICAg
ICAgd2luZG93LT5hY2NlbEdyb3VwID0gTlVMTDsKKyAgICB9CisKICAgICBpZiAod2luZG93LT5m
dWxsU2NyZWVuTWVzc2FnZUxhYmVsSWQpCiAgICAgICAgIGdfc291cmNlX3JlbW92ZSh3aW5kb3ct
PmZ1bGxTY3JlZW5NZXNzYWdlTGFiZWxJZCk7CiAKQEAgLTUyNCw5ICs1NDcsOCBAQCBzdGF0aWMg
dm9pZCBicm93c2VyX3dpbmRvd19pbml0KEJyb3dzZXJXaW5kb3cgKndpbmRvdykKICAgICB1cGRh
dGVVcmlFbnRyeUljb24od2luZG93KTsKIAogICAgIC8qIEtleWJvYXJkIGFjY2VsZXJhdG9ycyAq
LwotICAgIEd0a0FjY2VsR3JvdXAgKmFjY2VsR3JvdXAgPSBndGtfYWNjZWxfZ3JvdXBfbmV3KCk7
Ci0gICAgZ3RrX3dpbmRvd19hZGRfYWNjZWxfZ3JvdXAoR1RLX1dJTkRPVyh3aW5kb3cpLCBhY2Nl
bEdyb3VwKTsKLSAgICBnX29iamVjdF91bnJlZihhY2NlbEdyb3VwKTsKKyAgICB3aW5kb3ctPmFj
Y2VsR3JvdXAgPSBndGtfYWNjZWxfZ3JvdXBfbmV3KCk7CisgICAgZ3RrX3dpbmRvd19hZGRfYWNj
ZWxfZ3JvdXAoR1RLX1dJTkRPVyh3aW5kb3cpLCB3aW5kb3ctPmFjY2VsR3JvdXApOwogCiAgICAg
R3RrV2lkZ2V0ICp0b29sYmFyID0gZ3RrX3Rvb2xiYXJfbmV3KCk7CiAgICAgd2luZG93LT50b29s
YmFyID0gdG9vbGJhcjsKQEAgLTU2NCw2ICs1ODYsMTIgQEAgc3RhdGljIHZvaWQgYnJvd3Nlcl93
aW5kb3dfaW5pdChCcm93c2VyV2luZG93ICp3aW5kb3cpCiAgICAgZ3RrX3Rvb2xiYXJfaW5zZXJ0
KEdUS19UT09MQkFSKHRvb2xiYXIpLCBpdGVtLCAtMSk7CiAgICAgZ3RrX3dpZGdldF9zaG93KEdU
S19XSURHRVQoaXRlbSkpOwogCisgICAgaXRlbSA9IGd0a190b29sX2J1dHRvbl9uZXdfZnJvbV9z
dG9jayhHVEtfU1RPQ0tfRklORCk7CisgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKGl0ZW0s
ICJjbGlja2VkIiwgR19DQUxMQkFDSyhzZWFyY2hDYWxsYmFjayksIHdpbmRvdyk7CisgICAgZ3Rr
X3Rvb2xiYXJfaW5zZXJ0KEdUS19UT09MQkFSKHRvb2xiYXIpLCBpdGVtLCAtMSk7CisgICAgZ3Rr
X3dpZGdldF9hZGRfYWNjZWxlcmF0b3IoR1RLX1dJREdFVChpdGVtKSwgImNsaWNrZWQiLCB3aW5k
b3ctPmFjY2VsR3JvdXAsIEdES19LRVlfRiwgR0RLX0NPTlRST0xfTUFTSywgR1RLX0FDQ0VMX1ZJ
U0lCTEUpOworICAgIGd0a193aWRnZXRfc2hvdyhHVEtfV0lER0VUKGl0ZW0pKTsKKwogICAgIGl0
ZW0gPSBndGtfdG9vbF9pdGVtX25ldygpOwogICAgIGd0a190b29sX2l0ZW1fc2V0X2V4cGFuZChp
dGVtLCBUUlVFKTsKICAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKGl0ZW0pLCB3
aW5kb3ctPnVyaUVudHJ5KTsKQEAgLTU3NCw3ICs2MDIsNyBAQCBzdGF0aWMgdm9pZCBicm93c2Vy
X3dpbmRvd19pbml0KEJyb3dzZXJXaW5kb3cgKndpbmRvdykKICAgICBpdGVtID0gZ3RrX3Rvb2xf
YnV0dG9uX25ld19mcm9tX3N0b2NrKEdUS19TVE9DS19SRUZSRVNIKTsKICAgICBnX3NpZ25hbF9j
b25uZWN0X3N3YXBwZWQoaXRlbSwgImNsaWNrZWQiLCBHX0NBTExCQUNLKHJlbG9hZENhbGxiYWNr
KSwgd2luZG93KTsKICAgICBndGtfdG9vbGJhcl9pbnNlcnQoR1RLX1RPT0xCQVIodG9vbGJhciks
IGl0ZW0sIC0xKTsKLSAgICBndGtfd2lkZ2V0X2FkZF9hY2NlbGVyYXRvcihHVEtfV0lER0VUKGl0
ZW0pLCAiY2xpY2tlZCIsIGFjY2VsR3JvdXAsIEdES19LRVlfRjUsIDAsIEdUS19BQ0NFTF9WSVNJ
QkxFKTsKKyAgICBndGtfd2lkZ2V0X2FkZF9hY2NlbGVyYXRvcihHVEtfV0lER0VUKGl0ZW0pLCAi
Y2xpY2tlZCIsIHdpbmRvdy0+YWNjZWxHcm91cCwgR0RLX0tFWV9GNSwgMCwgR1RLX0FDQ0VMX1ZJ
U0lCTEUpOwogICAgIGd0a193aWRnZXRfc2hvdyhHVEtfV0lER0VUKGl0ZW0pKTsKIAogICAgIEd0
a1dpZGdldCAqdmJveCA9IGd0a19ib3hfbmV3KEdUS19PUklFTlRBVElPTl9WRVJUSUNBTCwgMCk7
CkBAIC02MDcsNiArNjM1LDEwIEBAIHN0YXRpYyB2b2lkIGJyb3dzZXJXaW5kb3dDb25zdHJ1Y3Rl
ZChHT2JqZWN0ICpnT2JqZWN0KQogCiAgICAgZ19zaWduYWxfY29ubmVjdCh3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X2NvbnRleHQod2luZG93LT53ZWJWaWV3KSwgImRvd25sb2FkLXN0YXJ0ZWQiLCBHX0NB
TExCQUNLKGRvd25sb2FkU3RhcnRlZCksIHdpbmRvdyk7CiAKKyAgICB3aW5kb3ctPnNlYXJjaEJh
ciA9IEJST1dTRVJfU0VBUkNIX0JBUihicm93c2VyX3NlYXJjaF9iYXJfbmV3KHdpbmRvdy0+d2Vi
VmlldykpOworICAgIGJyb3dzZXJfc2VhcmNoX2Jhcl9hZGRfYWNjZWxlcmF0b3JzKHdpbmRvdy0+
c2VhcmNoQmFyLCB3aW5kb3ctPmFjY2VsR3JvdXApOworICAgIGd0a19ib3hfcGFja19zdGFydChH
VEtfQk9YKHdpbmRvdy0+bWFpbkJveCksIEdUS19XSURHRVQod2luZG93LT5zZWFyY2hCYXIpLCBG
QUxTRSwgRkFMU0UsIDApOworCiAgICAgV2ViS2l0QmFja0ZvcndhcmRMaXN0ICpiYWNrRm9yd2Fk
bGlzdCA9IHdlYmtpdF93ZWJfdmlld19nZXRfYmFja19mb3J3YXJkX2xpc3Qod2luZG93LT53ZWJW
aWV3KTsKICAgICBnX3NpZ25hbF9jb25uZWN0KGJhY2tGb3J3YWRsaXN0LCAiY2hhbmdlZCIsIEdf
Q0FMTEJBQ0soYmFja0ZvcndhZGxpc3RDaGFuZ2VkKSwgd2luZG93KTsKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvTWluaUJyb3dzZXIvZ3RrL0dOVW1ha2VmaWxlLmFtIGIvVG9vbHMvTWluaUJyb3dzZXIv
Z3RrL0dOVW1ha2VmaWxlLmFtCmluZGV4IGY0MmEzMGI3OTJiMjcwYzVlZmJkYmE1OGI5ZWJiNmYx
ZDZlMmIxZjguLjI5ZDRlYzQxNDkxOWNhNWEyOTYzZGUxMjI5MjM5ZDIxMzcxMmZkYTggMTAwNjQ0
Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9HTlVtYWtlZmlsZS5hbQorKysgYi9Ub29scy9N
aW5pQnJvd3Nlci9ndGsvR05VbWFrZWZpbGUuYW0KQEAgLTIyLDYgKzIyLDggQEAgUHJvZ3JhbXNf
TWluaUJyb3dzZXJfU09VUkNFUyA9IFwKIAlUb29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlckNl
bGxSZW5kZXJlclZhcmlhbnQuYyBcCiAJVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJEb3du
bG9hZHNCYXIuaCBcCiAJVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJEb3dubG9hZHNCYXIu
YyBcCisJVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJTZWFyY2hCYXIuaCBcCisJVG9vbHMv
TWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJTZWFyY2hCYXIuYyBcCiAJVG9vbHMvTWluaUJyb3dzZXIv
Z3RrL0Jyb3dzZXJTZXR0aW5nc0RpYWxvZy5oIFwKIAlUb29scy9NaW5pQnJvd3Nlci9ndGsvQnJv
d3NlclNldHRpbmdzRGlhbG9nLmMgXAogCVRvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2lu
ZG93LmggXAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213598</attachid>
            <date>2013-10-07 09:28:35 -0700</date>
            <delta_ts>2013-10-10 06:17:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-117631-20131007192833.patch</filename>
            <type>text/plain</type>
            <size>22441</size>
            <attacher name="Andres Gomez Garcia">agomez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3MDMzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNmZiOTA2MTdjNjNkODFiZDIzYzdkOGRlNmQ5MmNmNjk0
M2NmMWE2ZC4uN2I1OGU1ZTEzNTI0ZTMwMWQ1M2JiYWVmOWU5ZjFiM2IwZDIzZjcxYSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQz
IEBACisyMDEzLTEwLTA3ICBBbmRyZXMgR29tZXogIDxhZ29tZXpAaWdhbGlhLmNvbT4KKworICAg
ICAgICBbR1RLXSBQcm92aWRlIHNlYXJjaCBmdW5jdGlvbmFsaXR5IHRvIE1pbmlCcm93c2VyCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTc2MzEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRzIGEgc2Vh
cmNoIGJhciB0byBNaW5pQnJvd3NlciB3aXRoIHRoZSBtaW5pbXVtIGZ1bmN0aW9uYWxpdHkKKyAg
ICAgICAgYW5kIGEgbmV3IGJ1dHRvbiB0byB0aGUgdG9vbGJhciBmb3Igc2hvd2luZyB0aGUgbmV3
IHNlYXJjaAorICAgICAgICBiYXIuIFR5cGljYWwga2V5Ym9hcmQgc2hvcnRjdXRzIGFyZSBhbHNv
IGFkZGVkLgorCisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJTZWFyY2hCYXIuYzog
QWRkZWQuCisgICAgICAgIChkb1NlYXJjaCk6CisgICAgICAgIChzZWFyY2hOZXh0KToKKyAgICAg
ICAgKHNlYXJjaFByZXZpb3VzKToKKyAgICAgICAgKHNlYXJjaENsb3NlQnV0dG9uQ2xpY2tlZENh
bGxiYWNrKToKKyAgICAgICAgKHNlYXJjaEVudHJ5TWVudUljb25QcmVzc2VkQ2FsbGJhY2spOgor
ICAgICAgICAoc2VhcmNoRW50cnlDbGVhckljb25SZWxlYXNlZENhbGxiYWNrKToKKyAgICAgICAg
KHNlYXJjaEVudHJ5Q2hhbmdlZENhbGxiYWNrKToKKyAgICAgICAgKHNlYXJjaEVudHJ5QWN0aXZh
dGVkQ2FsbGJhY2spOgorICAgICAgICAoc2VhcmNoUHJldkJ1dHRvbkNsaWNrZWRDYWxsYmFjayk6
CisgICAgICAgIChzZWFyY2hOZXh0QnV0dG9uQ2xpY2tlZENhbGxiYWNrKToKKyAgICAgICAgKHNl
YXJjaE1lbnVDaGVja0J1dHRvblRvZ2dsZWRDYWxsYmFjayk6CisgICAgICAgIChicm93c2VyX3Nl
YXJjaF9iYXJfaW5pdCk6CisgICAgICAgIChicm93c2VyU2VhcmNoQmFyRmluYWxpemUpOgorICAg
ICAgICAoYnJvd3Nlcl9zZWFyY2hfYmFyX2NsYXNzX2luaXQpOgorICAgICAgICAoYnJvd3Nlcl9z
ZWFyY2hfYmFyX25ldyk6CisgICAgICAgIChicm93c2VyX3NlYXJjaF9iYXJfYWRkX2FjY2VsZXJh
dG9ycyk6CisgICAgICAgIChicm93c2VyX3NlYXJjaF9iYXJfb3Blbik6CisgICAgICAgIChicm93
c2VyX3NlYXJjaF9iYXJfY2xvc2UpOgorICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2Vy
U2VhcmNoQmFyLmg6IEFkZGVkLgorICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2lu
ZG93LmM6CisgICAgICAgICh3ZWJWaWV3RW50ZXJGdWxsU2NyZWVuKTogQ2xvc2VzIG5ldyBzZWFy
Y2ggYmFyLgorICAgICAgICAod2ViVmlld0xlYXZlRnVsbFNjcmVlbik6IE9wZW5zIG5ldyBzZWFy
Y2ggYmFyIGlmIHByZXZpb3VzbHkKKyAgICAgICAgdmlzaWJsZS4KKyAgICAgICAgKHNlYXJjaENh
bGxiYWNrKTogQWRkZWQuIFNob3dzIGFuZCBoaWRlcyB0aGUgbmV3IHNlYXJjaCBiYXIuCisgICAg
ICAgIChicm93c2VyX3dpbmRvd19pbml0KTogQWRkZWQgc2VhcmNoIGJ1dHRvbiB0byB0aGUgdG9v
bGJhci4KKyAgICAgICAgKGJyb3dzZXJXaW5kb3dDb25zdHJ1Y3RlZCk6IENyZWF0ZXMgdGhlIG5l
dyBzZWFyY2ggYmFyLgorICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9HTlVtYWtlZmlsZS5hbTog
QWRkZWQgbmV3IGZpbGVzIHRvIGNvbXBpbGF0aW9uLgorCiAyMDEzLTEwLTA2ICBGaWxpcCBQaXps
byAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgZml4IGJ1aWxkIG9u
IG9sZCBSdWJpZXMuCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlclNl
YXJjaEJhci5jIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJTZWFyY2hCYXIuYwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lMzNlNGM1ZDA3ZmE4NTU4YzliMWE4Y2EwMmE5ZGY2ODE4ZWZhMTM5Ci0tLSAvZGV2
L251bGwKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJTZWFyY2hCYXIuYwpAQCAt
MCwwICsxLDI1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiQnJvd3NlclNlYXJjaEJhci5oIgorCisKK3N0cnVjdCBfQnJvd3Nl
clNlYXJjaEJhciB7CisgICAgR3RrVG9vbGJhciBwYXJlbnQ7CisKKyAgICBXZWJLaXRXZWJWaWV3
ICp3ZWJWaWV3OworICAgIEd0a1dpZGdldCAqZW50cnk7CisgICAgR3RrV2lkZ2V0ICpwcmV2QnV0
dG9uOworICAgIEd0a1dpZGdldCAqbmV4dEJ1dHRvbjsKKyAgICBHdGtXaWRnZXQgKm9wdGlvbnNN
ZW51OworICAgIEd0a1dpZGdldCAqY2FzZUNoZWNrQnV0dG9uOworICAgIEd0a1dpZGdldCAqYmVn
Z2luaWdXb3JkQ2hlY2tCdXR0b247CisgICAgR3RrV2lkZ2V0ICpjYXBpdGFsQXNCZWdnaW5pZ1dv
cmRDaGVja0J1dHRvbjsKK307CisKK0dfREVGSU5FX1RZUEUoQnJvd3NlclNlYXJjaEJhciwgYnJv
d3Nlcl9zZWFyY2hfYmFyLCBHVEtfVFlQRV9UT09MQkFSKQorCitzdGF0aWMgdm9pZCBkb1NlYXJj
aChCcm93c2VyU2VhcmNoQmFyICpzZWFyY2hCYXIpCit7CisgICAgR3RrRW50cnkgKmVudHJ5ID0g
R1RLX0VOVFJZKHNlYXJjaEJhci0+ZW50cnkpOworCisgICAgaWYgKCFndGtfZW50cnlfZ2V0X3Rl
eHRfbGVuZ3RoKGVudHJ5KSkgeworICAgICAgICB3ZWJraXRfZmluZF9jb250cm9sbGVyX3NlYXJj
aF9maW5pc2god2Via2l0X3dlYl92aWV3X2dldF9maW5kX2NvbnRyb2xsZXIoc2VhcmNoQmFyLT53
ZWJWaWV3KSk7CisgICAgICAgIGd0a19lbnRyeV9zZXRfaWNvbl9mcm9tX3N0b2NrKGVudHJ5LCBH
VEtfRU5UUllfSUNPTl9TRUNPTkRBUlksIE5VTEwpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKCFndGtfZW50cnlfZ2V0X2ljb25fc3RvY2soZW50cnksIEdUS19FTlRSWV9JQ09O
X1NFQ09OREFSWSkpCisgICAgICAgIGd0a19lbnRyeV9zZXRfaWNvbl9mcm9tX3N0b2NrKGVudHJ5
LCBHVEtfRU5UUllfSUNPTl9TRUNPTkRBUlksIEdUS19TVE9DS19DTEVBUik7CisKKyAgICBXZWJL
aXRGaW5kT3B0aW9ucyBvcHRpb25zID0gV0VCS0lUX0ZJTkRfT1BUSU9OU19OT05FOworICAgIGlm
ICghZ3RrX2NoZWNrX21lbnVfaXRlbV9nZXRfYWN0aXZlKEdUS19DSEVDS19NRU5VX0lURU0oc2Vh
cmNoQmFyLT5jYXNlQ2hlY2tCdXR0b24pKSkKKyAgICAgICAgb3B0aW9ucyB8PSBXRUJLSVRfRklO
RF9PUFRJT05TX0NBU0VfSU5TRU5TSVRJVkU7CisgICAgaWYgKGd0a19jaGVja19tZW51X2l0ZW1f
Z2V0X2FjdGl2ZShHVEtfQ0hFQ0tfTUVOVV9JVEVNKHNlYXJjaEJhci0+YmVnZ2luaWdXb3JkQ2hl
Y2tCdXR0b24pKSkKKyAgICAgICAgb3B0aW9ucyB8PSBXRUJLSVRfRklORF9PUFRJT05TX0FUX1dP
UkRfU1RBUlRTOworICAgIGlmIChndGtfY2hlY2tfbWVudV9pdGVtX2dldF9hY3RpdmUoR1RLX0NI
RUNLX01FTlVfSVRFTShzZWFyY2hCYXItPmNhcGl0YWxBc0JlZ2dpbmlnV29yZENoZWNrQnV0dG9u
KSkpCisgICAgICAgIG9wdGlvbnMgfD0gV0VCS0lUX0ZJTkRfT1BUSU9OU19UUkVBVF9NRURJQUxf
Q0FQSVRBTF9BU19XT1JEX1NUQVJUOworCisgICAgY29uc3QgZ2NoYXIgKnRleHQgPSBndGtfZW50
cnlfZ2V0X3RleHQoZW50cnkpOworICAgIHdlYmtpdF9maW5kX2NvbnRyb2xsZXJfc2VhcmNoKHdl
YmtpdF93ZWJfdmlld19nZXRfZmluZF9jb250cm9sbGVyKHNlYXJjaEJhci0+d2ViVmlldyksIHRl
eHQsIG9wdGlvbnMsIEdfTUFYVUlOVCk7Cit9CisKK3N0YXRpYyB2b2lkIHNlYXJjaE5leHQoQnJv
d3NlclNlYXJjaEJhciAqc2VhcmNoQmFyKQoreworICAgIHdlYmtpdF9maW5kX2NvbnRyb2xsZXJf
c2VhcmNoX25leHQod2Via2l0X3dlYl92aWV3X2dldF9maW5kX2NvbnRyb2xsZXIoc2VhcmNoQmFy
LT53ZWJWaWV3KSk7Cit9CisKK3N0YXRpYyB2b2lkIHNlYXJjaFByZXZpb3VzKEJyb3dzZXJTZWFy
Y2hCYXIgKnNlYXJjaEJhcikKK3sKKyAgICB3ZWJraXRfZmluZF9jb250cm9sbGVyX3NlYXJjaF9w
cmV2aW91cyh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2ZpbmRfY29udHJvbGxlcihzZWFyY2hCYXItPndl
YlZpZXcpKTsKK30KKworc3RhdGljIHZvaWQgc2VhcmNoQ2xvc2VCdXR0b25DbGlja2VkQ2FsbGJh
Y2soQnJvd3NlclNlYXJjaEJhciAqc2VhcmNoQmFyKQoreworICAgIGJyb3dzZXJfc2VhcmNoX2Jh
cl9jbG9zZShzZWFyY2hCYXIpOworfQorCitzdGF0aWMgdm9pZCBzZWFyY2hFbnRyeU1lbnVJY29u
UHJlc3NlZENhbGxiYWNrKEJyb3dzZXJTZWFyY2hCYXIgKnNlYXJjaEJhciwgR3RrRW50cnlJY29u
UG9zaXRpb24gaWNvblBvc2l0aW9uLCBHZGtFdmVudCAqZXZlbnQpCit7CisgICAgaWYgKGljb25Q
b3NpdGlvbiA9PSBHVEtfRU5UUllfSUNPTl9QUklNQVJZKSB7CisgICAgICAgIEdka0V2ZW50QnV0
dG9uICpldmVudEJ1dHRvbiA9IChHZGtFdmVudEJ1dHRvbiAqKWV2ZW50OworICAgICAgICBndGtf
bWVudV9wb3B1cChHVEtfTUVOVShzZWFyY2hCYXItPm9wdGlvbnNNZW51KSwgTlVMTCwgTlVMTCwg
TlVMTCwgTlVMTCwgZXZlbnRCdXR0b24tPmJ1dHRvbiwgZXZlbnRCdXR0b24tPnRpbWUpOworICAg
IH0KK30KKworc3RhdGljIHZvaWQgc2VhcmNoRW50cnlDbGVhckljb25SZWxlYXNlZENhbGxiYWNr
KEJyb3dzZXJTZWFyY2hCYXIgKnNlYXJjaEJhciwgR3RrRW50cnlJY29uUG9zaXRpb24gaWNvblBv
c2l0aW9uKQoreworICAgIGlmIChpY29uUG9zaXRpb24gPT0gR1RLX0VOVFJZX0lDT05fU0VDT05E
QVJZKQorICAgICAgICBndGtfZW50cnlfc2V0X3RleHQoR1RLX0VOVFJZKHNlYXJjaEJhci0+ZW50
cnkpLCAiIik7Cit9CisKK3N0YXRpYyB2b2lkIHNlYXJjaEVudHJ5Q2hhbmdlZENhbGxiYWNrKEd0
a0VudHJ5ICplbnRyeSwgQnJvd3NlclNlYXJjaEJhciAqc2VhcmNoQmFyKQoreworICAgIGRvU2Vh
cmNoKHNlYXJjaEJhcik7Cit9CisKK3N0YXRpYyB2b2lkIHNlYXJjaEVudHJ5QWN0aXZhdGVkQ2Fs
bGJhY2soQnJvd3NlclNlYXJjaEJhciAqc2VhcmNoQmFyKQoreworICAgIHNlYXJjaE5leHQoc2Vh
cmNoQmFyKTsKK30KKworc3RhdGljIHZvaWQgc2VhcmNoUHJldkJ1dHRvbkNsaWNrZWRDYWxsYmFj
ayhCcm93c2VyU2VhcmNoQmFyICpzZWFyY2hCYXIpCit7CisgICAgc2VhcmNoUHJldmlvdXMoc2Vh
cmNoQmFyKTsKK30KKworc3RhdGljIHZvaWQgc2VhcmNoTmV4dEJ1dHRvbkNsaWNrZWRDYWxsYmFj
ayhCcm93c2VyU2VhcmNoQmFyICpzZWFyY2hCYXIpCit7CisgICAgc2VhcmNoTmV4dChzZWFyY2hC
YXIpOworfQorCitzdGF0aWMgdm9pZCBzZWFyY2hNZW51Q2hlY2tCdXR0b25Ub2dnbGVkQ2FsbGJh
Y2soQnJvd3NlclNlYXJjaEJhciAqc2VhcmNoQmFyKQoreworICAgIGRvU2VhcmNoKHNlYXJjaEJh
cik7Cit9CisKK3N0YXRpYyB2b2lkIGJyb3dzZXJfc2VhcmNoX2Jhcl9pbml0KEJyb3dzZXJTZWFy
Y2hCYXIgKnNlYXJjaEJhcikKK3sKKyAgICBndGtfd2lkZ2V0X3NldF9oZXhwYW5kKEdUS19XSURH
RVQoc2VhcmNoQmFyKSwgVFJVRSk7CisKKyAgICBHdGtUb29sSXRlbSAqdG9vbEl0ZW0gPSBndGtf
dG9vbF9pdGVtX25ldygpOworICAgIGd0a190b29sX2l0ZW1fc2V0X2V4cGFuZCh0b29sSXRlbSwg
VFJVRSk7CisgICAgZ3RrX3Rvb2xiYXJfaW5zZXJ0KEdUS19UT09MQkFSKHNlYXJjaEJhciksIHRv
b2xJdGVtLCAwKTsKKworICAgIEd0a0JveCAqaEJveCA9IEdUS19CT1goZ3RrX2JveF9uZXcoR1RL
X09SSUVOVEFUSU9OX0hPUklaT05UQUwsIDUpKTsKKyAgICBndGtfYm94X3NldF9ob21vZ2VuZW91
cyhoQm94LCBUUlVFKTsKKyAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHRvb2xJ
dGVtKSwgR1RLX1dJREdFVChoQm94KSk7CisKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoaEJveCwg
Z3RrX2JveF9uZXcoR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUwsIDApLCBUUlVFLCBUUlVFLCAw
KTsKKworICAgIHNlYXJjaEJhci0+ZW50cnkgPSBndGtfZW50cnlfbmV3KCk7CisgICAgZ3RrX3dp
ZGdldF9zZXRfbmFtZShzZWFyY2hCYXItPmVudHJ5LCAic2VhcmNoRW50cnkiKTsKKyAgICBndGtf
ZW50cnlfc2V0X3BsYWNlaG9sZGVyX3RleHQoR1RLX0VOVFJZKHNlYXJjaEJhci0+ZW50cnkpLCAi
U2VhcmNoIik7CisgICAgZ3RrX2VudHJ5X3NldF9pY29uX2Zyb21fc3RvY2soR1RLX0VOVFJZKHNl
YXJjaEJhci0+ZW50cnkpLCBHVEtfRU5UUllfSUNPTl9QUklNQVJZLCBHVEtfU1RPQ0tfRklORCk7
CisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KGhCb3gsIHNlYXJjaEJhci0+ZW50cnksIFRSVUUsIFRS
VUUsIDApOworCisgICAgR3RrQm94ICpoQm94QnV0dG9ucyA9IEdUS19CT1goZ3RrX2JveF9uZXco
R1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUwsIDApKTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQo
aEJveCwgR1RLX1dJREdFVChoQm94QnV0dG9ucyksIFRSVUUsIFRSVUUsIDApOworCisgICAgc2Vh
cmNoQmFyLT5wcmV2QnV0dG9uID0gZ3RrX2J1dHRvbl9uZXcoKTsKKyAgICBHdGtCdXR0b24gKmJ1
dHRvbiA9IEdUS19CVVRUT04oc2VhcmNoQmFyLT5wcmV2QnV0dG9uKTsKKyAgICBHdGtXaWRnZXQg
KmltYWdlID0gZ3RrX2ltYWdlX25ld19mcm9tX3N0b2NrKEdUS19TVE9DS19HT19VUCwgR1RLX0lD
T05fU0laRV9TTUFMTF9UT09MQkFSKTsKKyAgICBndGtfYnV0dG9uX3NldF9pbWFnZShidXR0b24s
IGltYWdlKTsKKyAgICBndGtfYnV0dG9uX3NldF9yZWxpZWYoYnV0dG9uLCBHVEtfUkVMSUVGX05P
TkUpOworICAgIGd0a19idXR0b25fc2V0X2ZvY3VzX29uX2NsaWNrKGJ1dHRvbiwgRkFMU0UpOwor
ICAgIGd0a19ib3hfcGFja19zdGFydChoQm94QnV0dG9ucywgc2VhcmNoQmFyLT5wcmV2QnV0dG9u
LCBGQUxTRSwgRkFMU0UsIDApOworCisgICAgc2VhcmNoQmFyLT5uZXh0QnV0dG9uID0gZ3RrX2J1
dHRvbl9uZXcoKTsKKyAgICBidXR0b24gPSBHVEtfQlVUVE9OKHNlYXJjaEJhci0+bmV4dEJ1dHRv
bik7CisgICAgaW1hZ2UgPSBndGtfaW1hZ2VfbmV3X2Zyb21fc3RvY2soR1RLX1NUT0NLX0dPX0RP
V04sIEdUS19JQ09OX1NJWkVfU01BTExfVE9PTEJBUik7CisgICAgZ3RrX2J1dHRvbl9zZXRfaW1h
Z2UoYnV0dG9uLCBpbWFnZSk7CisgICAgZ3RrX2J1dHRvbl9zZXRfcmVsaWVmKGJ1dHRvbiwgR1RL
X1JFTElFRl9OT05FKTsKKyAgICBndGtfYnV0dG9uX3NldF9mb2N1c19vbl9jbGljayhidXR0b24s
IEZBTFNFKTsKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoaEJveEJ1dHRvbnMsIHNlYXJjaEJhci0+
bmV4dEJ1dHRvbiwgRkFMU0UsIEZBTFNFLCAwKTsKKworICAgIEd0a1dpZGdldCAqY2xvc2VCdXR0
b24gPSBndGtfYnV0dG9uX25ldygpOworICAgIGJ1dHRvbiA9IEdUS19CVVRUT04oY2xvc2VCdXR0
b24pOworICAgIGltYWdlID0gZ3RrX2ltYWdlX25ld19mcm9tX3N0b2NrKEdUS19TVE9DS19DTE9T
RSwgR1RLX0lDT05fU0laRV9TTUFMTF9UT09MQkFSKTsKKyAgICBndGtfYnV0dG9uX3NldF9pbWFn
ZShidXR0b24sIGltYWdlKTsKKyAgICBndGtfYnV0dG9uX3NldF9yZWxpZWYoYnV0dG9uLCBHVEtf
UkVMSUVGX05PTkUpOworICAgIGd0a19idXR0b25fc2V0X2ZvY3VzX29uX2NsaWNrKGJ1dHRvbiwg
RkFMU0UpOworICAgIGd0a19ib3hfcGFja19lbmQoaEJveEJ1dHRvbnMsIGNsb3NlQnV0dG9uLCBG
QUxTRSwgRkFMU0UsIDApOworCisgICAgc2VhcmNoQmFyLT5vcHRpb25zTWVudSA9IGdfb2JqZWN0
X3JlZl9zaW5rKGd0a19tZW51X25ldygpKTsKKworICAgIHNlYXJjaEJhci0+Y2FzZUNoZWNrQnV0
dG9uID0gZ3RrX2NoZWNrX21lbnVfaXRlbV9uZXdfd2l0aF9tbmVtb25pYygiQ2Ffc2Ugc2Vuc2l0
aXZlIik7CisgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUihzZWFyY2hCYXItPm9w
dGlvbnNNZW51KSwgc2VhcmNoQmFyLT5jYXNlQ2hlY2tCdXR0b24pOworCisgICAgc2VhcmNoQmFy
LT5iZWdnaW5pZ1dvcmRDaGVja0J1dHRvbiA9IGd0a19jaGVja19tZW51X2l0ZW1fbmV3X3dpdGhf
bW5lbW9uaWMoIk9ubHkgYXQgdGhlIF9iZWdpbm5pbmcgb2Ygd29yZHMiKTsKKyAgICBndGtfY29u
dGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHNlYXJjaEJhci0+b3B0aW9uc01lbnUpLCBzZWFyY2hC
YXItPmJlZ2dpbmlnV29yZENoZWNrQnV0dG9uKTsKKworICAgIHNlYXJjaEJhci0+Y2FwaXRhbEFz
QmVnZ2luaWdXb3JkQ2hlY2tCdXR0b24gPSBndGtfY2hlY2tfbWVudV9pdGVtX25ld193aXRoX21u
ZW1vbmljKCJDYXBpdGFsIF9hbHdheXMgYXMgYmVnaW5uaW5nIG9mIHdvcmQiKTsKKyAgICBndGtf
Y29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHNlYXJjaEJhci0+b3B0aW9uc01lbnUpLCBzZWFy
Y2hCYXItPmNhcGl0YWxBc0JlZ2dpbmlnV29yZENoZWNrQnV0dG9uKTsKKworICAgIGdfc2lnbmFs
X2Nvbm5lY3Rfc3dhcHBlZChjbG9zZUJ1dHRvbiwgImNsaWNrZWQiLCBHX0NBTExCQUNLKHNlYXJj
aENsb3NlQnV0dG9uQ2xpY2tlZENhbGxiYWNrKSwgc2VhcmNoQmFyKTsKKyAgICBnX3NpZ25hbF9j
b25uZWN0X3N3YXBwZWQoc2VhcmNoQmFyLT5lbnRyeSwgImljb24tcHJlc3MiLCBHX0NBTExCQUNL
KHNlYXJjaEVudHJ5TWVudUljb25QcmVzc2VkQ2FsbGJhY2spLCBzZWFyY2hCYXIpOworICAgIGdf
c2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChzZWFyY2hCYXItPmVudHJ5LCAiaWNvbi1yZWxlYXNlIiwg
R19DQUxMQkFDSyhzZWFyY2hFbnRyeUNsZWFySWNvblJlbGVhc2VkQ2FsbGJhY2spLCBzZWFyY2hC
YXIpOworICAgIGdfc2lnbmFsX2Nvbm5lY3RfYWZ0ZXIoc2VhcmNoQmFyLT5lbnRyeSwgImNoYW5n
ZWQiLCBHX0NBTExCQUNLKHNlYXJjaEVudHJ5Q2hhbmdlZENhbGxiYWNrKSwgc2VhcmNoQmFyKTsK
KyAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoc2VhcmNoQmFyLT5lbnRyeSwgImFjdGl2YXRl
IiwgR19DQUxMQkFDSyhzZWFyY2hFbnRyeUFjdGl2YXRlZENhbGxiYWNrKSwgc2VhcmNoQmFyKTsK
KyAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoc2VhcmNoQmFyLT5uZXh0QnV0dG9uLCAiY2xp
Y2tlZCIsIEdfQ0FMTEJBQ0soc2VhcmNoTmV4dEJ1dHRvbkNsaWNrZWRDYWxsYmFjayksIHNlYXJj
aEJhcik7CisgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKHNlYXJjaEJhci0+cHJldkJ1dHRv
biwgImNsaWNrZWQiLCBHX0NBTExCQUNLKHNlYXJjaFByZXZCdXR0b25DbGlja2VkQ2FsbGJhY2sp
LCBzZWFyY2hCYXIpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChzZWFyY2hCYXItPmNh
c2VDaGVja0J1dHRvbiwgInRvZ2dsZWQiLCBHX0NBTExCQUNLKHNlYXJjaE1lbnVDaGVja0J1dHRv
blRvZ2dsZWRDYWxsYmFjayksIHNlYXJjaEJhcik7CisgICAgZ19zaWduYWxfY29ubmVjdF9zd2Fw
cGVkKHNlYXJjaEJhci0+YmVnZ2luaWdXb3JkQ2hlY2tCdXR0b24sICJ0b2dnbGVkIiwgR19DQUxM
QkFDSyhzZWFyY2hNZW51Q2hlY2tCdXR0b25Ub2dnbGVkQ2FsbGJhY2spLCBzZWFyY2hCYXIpOwor
ICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChzZWFyY2hCYXItPmNhcGl0YWxBc0JlZ2dpbmln
V29yZENoZWNrQnV0dG9uLCAidG9nZ2xlZCIsIEdfQ0FMTEJBQ0soc2VhcmNoTWVudUNoZWNrQnV0
dG9uVG9nZ2xlZENhbGxiYWNrKSwgc2VhcmNoQmFyKTsKKworICAgIGd0a193aWRnZXRfc2hvd19h
bGwoR1RLX1dJREdFVCh0b29sSXRlbSkpOworICAgIGd0a193aWRnZXRfc2hvd19hbGwoc2VhcmNo
QmFyLT5vcHRpb25zTWVudSk7Cit9CisKK3N0YXRpYyB2b2lkIGJyb3dzZXJTZWFyY2hCYXJGaW5h
bGl6ZShHT2JqZWN0ICpnT2JqZWN0KQoreworICAgIEJyb3dzZXJTZWFyY2hCYXIgKnNlYXJjaEJh
ciA9IEJST1dTRVJfU0VBUkNIX0JBUihnT2JqZWN0KTsKKworICAgIGlmIChzZWFyY2hCYXItPndl
YlZpZXcpIHsKKyAgICAgICAgZ19vYmplY3RfdW5yZWYoc2VhcmNoQmFyLT53ZWJWaWV3KTsKKyAg
ICAgICAgc2VhcmNoQmFyLT53ZWJWaWV3ID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoc2VhcmNo
QmFyLT5vcHRpb25zTWVudSkgeworICAgICAgICBnX29iamVjdF91bnJlZihzZWFyY2hCYXItPm9w
dGlvbnNNZW51KTsKKyAgICAgICAgc2VhcmNoQmFyLT5vcHRpb25zTWVudSA9IE5VTEw7CisgICAg
fQorCisgICAgR19PQkpFQ1RfQ0xBU1MoYnJvd3Nlcl9zZWFyY2hfYmFyX3BhcmVudF9jbGFzcykt
PmZpbmFsaXplKGdPYmplY3QpOworfQorCitzdGF0aWMgdm9pZCBicm93c2VyX3NlYXJjaF9iYXJf
Y2xhc3NfaW5pdChCcm93c2VyU2VhcmNoQmFyQ2xhc3MgKmtsYXNzKQoreworICAgIEdPYmplY3RD
bGFzcyAqZ09iamVjdENsYXNzID0gR19PQkpFQ1RfQ0xBU1Moa2xhc3MpOworCisgICAgZ09iamVj
dENsYXNzLT5maW5hbGl6ZSA9IGJyb3dzZXJTZWFyY2hCYXJGaW5hbGl6ZTsKK30KKworR3RrV2lk
Z2V0ICpicm93c2VyX3NlYXJjaF9iYXJfbmV3KFdlYktpdFdlYlZpZXcgKndlYlZpZXcpCit7Cisg
ICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBOVUxM
KTsKKworICAgIEd0a1dpZGdldCAqc2VhcmNoQmFyID0gR1RLX1dJREdFVChnX29iamVjdF9uZXco
QlJPV1NFUl9UWVBFX1NFQVJDSF9CQVIsIE5VTEwpKTsKKyAgICBCUk9XU0VSX1NFQVJDSF9CQVIo
c2VhcmNoQmFyKS0+d2ViVmlldyA9IGdfb2JqZWN0X3JlZih3ZWJWaWV3KTsKKworICAgIHJldHVy
biBzZWFyY2hCYXI7Cit9CisKK3ZvaWQgYnJvd3Nlcl9zZWFyY2hfYmFyX2FkZF9hY2NlbGVyYXRv
cnMoQnJvd3NlclNlYXJjaEJhciAqc2VhcmNoQmFyLCBHdGtBY2NlbEdyb3VwICphY2NlbEdyb3Vw
KQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoQlJPV1NFUl9JU19TRUFSQ0hfQkFSKHNlYXJjaEJh
cikpOworICAgIGdfcmV0dXJuX2lmX2ZhaWwoR1RLX0lTX0FDQ0VMX0dST1VQKGFjY2VsR3JvdXAp
KTsKKworICAgIGd0a193aWRnZXRfYWRkX2FjY2VsZXJhdG9yKHNlYXJjaEJhci0+bmV4dEJ1dHRv
biwgImNsaWNrZWQiLCBhY2NlbEdyb3VwLCBHREtfS0VZX0YzLCAwLCBHVEtfQUNDRUxfVklTSUJM
RSk7CisgICAgZ3RrX3dpZGdldF9hZGRfYWNjZWxlcmF0b3Ioc2VhcmNoQmFyLT5uZXh0QnV0dG9u
LCAiY2xpY2tlZCIsIGFjY2VsR3JvdXAsIEdES19LRVlfRywgR0RLX0NPTlRST0xfTUFTSywgR1RL
X0FDQ0VMX1ZJU0lCTEUpOworCisgICAgZ3RrX3dpZGdldF9hZGRfYWNjZWxlcmF0b3Ioc2VhcmNo
QmFyLT5wcmV2QnV0dG9uLCAiY2xpY2tlZCIsIGFjY2VsR3JvdXAsIEdES19LRVlfRjMsIEdES19T
SElGVF9NQVNLLCBHVEtfQUNDRUxfVklTSUJMRSk7CisgICAgZ3RrX3dpZGdldF9hZGRfYWNjZWxl
cmF0b3Ioc2VhcmNoQmFyLT5wcmV2QnV0dG9uLCAiY2xpY2tlZCIsIGFjY2VsR3JvdXAsIEdES19L
RVlfRywgR0RLX1NISUZUX01BU0sgfCBHREtfQ09OVFJPTF9NQVNLLCBHVEtfQUNDRUxfVklTSUJM
RSk7Cit9CisKK3ZvaWQgYnJvd3Nlcl9zZWFyY2hfYmFyX29wZW4oQnJvd3NlclNlYXJjaEJhciAq
c2VhcmNoQmFyKQoreworICAgIGdfcmV0dXJuX2lmX2ZhaWwoQlJPV1NFUl9JU19TRUFSQ0hfQkFS
KHNlYXJjaEJhcikpOworCisgICAgZ3RrX3dpZGdldF9zaG93KEdUS19XSURHRVQoc2VhcmNoQmFy
KSk7CisgICAgZ3RrX3dpZGdldF9ncmFiX2ZvY3VzKEdUS19XSURHRVQoc2VhcmNoQmFyLT5lbnRy
eSkpOworICAgIGd0a19lZGl0YWJsZV9zZWxlY3RfcmVnaW9uKEdUS19FRElUQUJMRShzZWFyY2hC
YXItPmVudHJ5KSwgMCwgLTEpOworfQorCit2b2lkIGJyb3dzZXJfc2VhcmNoX2Jhcl9jbG9zZShC
cm93c2VyU2VhcmNoQmFyICpzZWFyY2hCYXIpCit7CisgICAgZ19yZXR1cm5faWZfZmFpbChCUk9X
U0VSX0lTX1NFQVJDSF9CQVIoc2VhcmNoQmFyKSk7CisKKyAgICBndGtfd2lkZ2V0X2hpZGUoR1RL
X1dJREdFVChzZWFyY2hCYXIpKTsKKyAgICBXZWJLaXRGaW5kQ29udHJvbGxlciAqY29udHJvbGxl
ciA9IHdlYmtpdF93ZWJfdmlld19nZXRfZmluZF9jb250cm9sbGVyKHNlYXJjaEJhci0+d2ViVmll
dyk7CisgICAgd2Via2l0X2ZpbmRfY29udHJvbGxlcl9zZWFyY2hfZmluaXNoKGNvbnRyb2xsZXIp
OworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJTZWFyY2hCYXIu
aCBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyU2VhcmNoQmFyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MWRlOGQ4YWJhMmExNjlhYjQ2ZDNhODI1NTY1ODA2ODc2MTBhZjFiMAotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyU2VhcmNoQmFyLmgKQEAgLTAsMCArMSw1
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIEJyb3dzZXJTZWFyY2hCYXJfaAorI2RlZmluZSBCcm93c2VyU2VhcmNoQmFyX2gKKwor
I2luY2x1ZGUgPGd0ay9ndGsuaD4KKyNpbmNsdWRlIDx3ZWJraXQyL3dlYmtpdDIuaD4KKworR19C
RUdJTl9ERUNMUworCisjZGVmaW5lIEJST1dTRVJfVFlQRV9TRUFSQ0hfQkFSICAgICAgICAgICAg
KGJyb3dzZXJfc2VhcmNoX2Jhcl9nZXRfdHlwZSgpKQorI2RlZmluZSBCUk9XU0VSX1NFQVJDSF9C
QVIob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgQlJP
V1NFUl9UWVBFX1NFQVJDSF9CQVIsIEJyb3dzZXJTZWFyY2hCYXIpKQorI2RlZmluZSBCUk9XU0VS
X0lTX1NFQVJDSF9CQVIob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgo
b2JqKSwgQlJPV1NFUl9UWVBFX1NFQVJDSF9CQVIpKQorI2RlZmluZSBCUk9XU0VSX1NFQVJDSF9C
QVJfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAgQlJP
V1NFUl9UWVBFX1NFQVJDSF9CQVIsIEJyb3dzZXJTZWFyY2hCYXJDbGFzcykpCisjZGVmaW5lIEJS
T1dTRVJfSVNfU0VBUkNIX0JBUl9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBF
KChrbGFzcyksICBCUk9XU0VSX1RZUEVfU0VBUkNIX0JBUikpCisjZGVmaW5lIEJST1dTRVJfU0VB
UkNIX0JBUl9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiks
ICBCUk9XU0VSX1RZUEVfU0VBUkNIX0JBUiwgQnJvd3NlclNlYXJjaEJhckNsYXNzKSkKKwordHlw
ZWRlZiBzdHJ1Y3QgX0Jyb3dzZXJTZWFyY2hCYXIgICAgICAgQnJvd3NlclNlYXJjaEJhcjsKK3R5
cGVkZWYgc3RydWN0IF9Ccm93c2VyU2VhcmNoQmFyQ2xhc3MgIEJyb3dzZXJTZWFyY2hCYXJDbGFz
czsKKworc3RydWN0IF9Ccm93c2VyU2VhcmNoQmFyQ2xhc3MgeworICAgIEd0a1Rvb2xiYXJDbGFz
cyBwYXJlbnRfY2xhc3M7Cit9OworCitHVHlwZSBicm93c2VyX3NlYXJjaF9iYXJfZ2V0X3R5cGUo
dm9pZCk7CisKK0d0a1dpZGdldCAqYnJvd3Nlcl9zZWFyY2hfYmFyX25ldyhXZWJLaXRXZWJWaWV3
ICopOwordm9pZCBicm93c2VyX3NlYXJjaF9iYXJfYWRkX2FjY2VsZXJhdG9ycyhCcm93c2VyU2Vh
cmNoQmFyICosIEd0a0FjY2VsR3JvdXAgKik7Cit2b2lkIGJyb3dzZXJfc2VhcmNoX2Jhcl9vcGVu
KEJyb3dzZXJTZWFyY2hCYXIgKik7Cit2b2lkIGJyb3dzZXJfc2VhcmNoX2Jhcl9jbG9zZShCcm93
c2VyU2VhcmNoQmFyICopOworCitHX0VORF9ERUNMUworCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Rv
b2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMgYi9Ub29scy9NaW5pQnJvd3Nlci9n
dGsvQnJvd3NlcldpbmRvdy5jCmluZGV4IDUxMzFmNjJkOWJmMjJhYzRlNWM0NjI4NzUwZjIyN2Y2
NWRjOWViZDQuLjNlZmQzOTBjMmM5N2E0ZTM4ZWM2NzVkZjg1ZDQ1ZDRhZTZjYjhmZGIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyV2luZG93LmMKKysrIGIvVG9vbHMv
TWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuYwpAQCAtMjgsNiArMjgsNyBAQAogI2luY2x1
ZGUgIkJyb3dzZXJXaW5kb3cuaCIKIAogI2luY2x1ZGUgIkJyb3dzZXJEb3dubG9hZHNCYXIuaCIK
KyNpbmNsdWRlICJCcm93c2VyU2VhcmNoQmFyLmgiCiAjaW5jbHVkZSAiQnJvd3NlclNldHRpbmdz
RGlhbG9nLmgiCiAjaW5jbHVkZSA8Z2RrL2dka2tleXN5bXMuaD4KICNpbmNsdWRlIDxzdHJpbmcu
aD4KQEAgLTQxLDYgKzQyLDcgQEAgZW51bSB7CiBzdHJ1Y3QgX0Jyb3dzZXJXaW5kb3cgewogICAg
IEd0a1dpbmRvdyBwYXJlbnQ7CiAKKyAgICBHdGtBY2NlbEdyb3VwICphY2NlbEdyb3VwOwogICAg
IEd0a1dpZGdldCAqbWFpbkJveDsKICAgICBHdGtXaWRnZXQgKnRvb2xiYXI7CiAgICAgR3RrV2lk
Z2V0ICp1cmlFbnRyeTsKQEAgLTUyLDYgKzU0LDggQEAgc3RydWN0IF9Ccm93c2VyV2luZG93IHsK
ICAgICBHdGtXaWRnZXQgKnNldHRpbmdzRGlhbG9nOwogICAgIFdlYktpdFdlYlZpZXcgKndlYlZp
ZXc7CiAgICAgR3RrV2lkZ2V0ICpkb3dubG9hZHNCYXI7CisgICAgQnJvd3NlclNlYXJjaEJhciAq
c2VhcmNoQmFyOworICAgIGdib29sZWFuIHNlYXJjaEJhclZpc2libGU7CiAgICAgR2RrUGl4YnVm
ICpmYXZpY29uOwogICAgIEd0a1dpZGdldCAqcmVsb2FkT3JTdG9wQnV0dG9uOwogICAgIEd0a1dp
ZGdldCAqZnVsbFNjcmVlbk1lc3NhZ2VMYWJlbDsKQEAgLTMwOCw2ICszMTIsOCBAQCBzdGF0aWMg
Z2Jvb2xlYW4gd2ViVmlld0VudGVyRnVsbFNjcmVlbihXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3LCBC
cm93c2VyV2luZG93ICp3aQogCiAgICAgd2luZG93LT5mdWxsU2NyZWVuTWVzc2FnZUxhYmVsSWQg
PSBnX3RpbWVvdXRfYWRkX3NlY29uZHMoMiwgKEdTb3VyY2VGdW5jKWZ1bGxTY3JlZW5NZXNzYWdl
VGltZW91dENhbGxiYWNrLCB3aW5kb3cpOwogICAgIGd0a193aWRnZXRfaGlkZSh3aW5kb3ctPnRv
b2xiYXIpOworICAgIHdpbmRvdy0+c2VhcmNoQmFyVmlzaWJsZSA9IGd0a193aWRnZXRfZ2V0X3Zp
c2libGUoR1RLX1dJREdFVCh3aW5kb3ctPnNlYXJjaEJhcikpOworICAgIGJyb3dzZXJfc2VhcmNo
X2Jhcl9jbG9zZSh3aW5kb3ctPnNlYXJjaEJhcik7CiAKICAgICByZXR1cm4gRkFMU0U7CiB9CkBA
IC0zMjAsNiArMzI2LDEzIEBAIHN0YXRpYyBnYm9vbGVhbiB3ZWJWaWV3TGVhdmVGdWxsU2NyZWVu
KFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIEJyb3dzZXJXaW5kb3cgKndpCiAgICAgfQogICAgIGd0
a193aWRnZXRfaGlkZSh3aW5kb3ctPmZ1bGxTY3JlZW5NZXNzYWdlTGFiZWwpOwogICAgIGd0a193
aWRnZXRfc2hvdyh3aW5kb3ctPnRvb2xiYXIpOworICAgIGlmICh3aW5kb3ctPnNlYXJjaEJhclZp
c2libGUpIHsKKyAgICAgICAgLy8gT3BlbmluZyB0aGUgc2VhcmNoIGJhciBzdGVhbHMgdGhlIGZv
Y3VzLiBVc3VhbGx5LCB3ZSB3YW50CisgICAgICAgIC8vIHRoaXMgYnV0IG5vdCB3aGVuIGNvbWlu
ZyBiYWNrIGZyb20gZnVsbHNjcmVlbi4KKyAgICAgICAgR3RrV2lkZ2V0ICpmb2N1c1dpZGdldCA9
IGd0a193aW5kb3dfZ2V0X2ZvY3VzKEdUS19XSU5ET1cod2luZG93KSk7CisgICAgICAgIGJyb3dz
ZXJfc2VhcmNoX2Jhcl9vcGVuKHdpbmRvdy0+c2VhcmNoQmFyKTsKKyAgICAgICAgZ3RrX3dpbmRv
d19zZXRfZm9jdXMoR1RLX1dJTkRPVyh3aW5kb3cpLCBmb2N1c1dpZGdldCk7CisgICAgfQogCiAg
ICAgcmV0dXJuIEZBTFNFOwogfQpAQCAtNDc4LDYgKzQ5MSwxMSBAQCBzdGF0aWMgdm9pZCB6b29t
T3V0Q2FsbGJhY2soQnJvd3NlcldpbmRvdyAqd2luZG93KQogICAgIHdlYmtpdF93ZWJfdmlld19z
ZXRfem9vbV9sZXZlbCh3aW5kb3ctPndlYlZpZXcsIHpvb21MZXZlbCk7CiB9CiAKK3N0YXRpYyB2
b2lkIHNlYXJjaENhbGxiYWNrKEJyb3dzZXJXaW5kb3cgKndpbmRvdykKK3sKKyAgICBicm93c2Vy
X3NlYXJjaF9iYXJfb3Blbih3aW5kb3ctPnNlYXJjaEJhcik7Cit9CisKIHN0YXRpYyB2b2lkIGJy
b3dzZXJXaW5kb3dGaW5hbGl6ZShHT2JqZWN0ICpnT2JqZWN0KQogewogICAgIEJyb3dzZXJXaW5k
b3cgKndpbmRvdyA9IEJST1dTRVJfV0lORE9XKGdPYmplY3QpOwpAQCAtNDg2LDYgKzUwNCwxMSBA
QCBzdGF0aWMgdm9pZCBicm93c2VyV2luZG93RmluYWxpemUoR09iamVjdCAqZ09iamVjdCkKICAg
ICAgICAgd2luZG93LT5mYXZpY29uID0gTlVMTDsKICAgICB9CiAKKyAgICBpZiAod2luZG93LT5h
Y2NlbEdyb3VwKSB7CisgICAgICAgIGdfb2JqZWN0X3VucmVmKHdpbmRvdy0+YWNjZWxHcm91cCk7
CisgICAgICAgIHdpbmRvdy0+YWNjZWxHcm91cCA9IE5VTEw7CisgICAgfQorCiAgICAgaWYgKHdp
bmRvdy0+ZnVsbFNjcmVlbk1lc3NhZ2VMYWJlbElkKQogICAgICAgICBnX3NvdXJjZV9yZW1vdmUo
d2luZG93LT5mdWxsU2NyZWVuTWVzc2FnZUxhYmVsSWQpOwogCkBAIC01MzQsOSArNTU3LDggQEAg
c3RhdGljIHZvaWQgYnJvd3Nlcl93aW5kb3dfaW5pdChCcm93c2VyV2luZG93ICp3aW5kb3cpCiAg
ICAgdXBkYXRlVXJpRW50cnlJY29uKHdpbmRvdyk7CiAKICAgICAvKiBLZXlib2FyZCBhY2NlbGVy
YXRvcnMgKi8KLSAgICBHdGtBY2NlbEdyb3VwICphY2NlbEdyb3VwID0gZ3RrX2FjY2VsX2dyb3Vw
X25ldygpOwotICAgIGd0a193aW5kb3dfYWRkX2FjY2VsX2dyb3VwKEdUS19XSU5ET1cod2luZG93
KSwgYWNjZWxHcm91cCk7Ci0gICAgZ19vYmplY3RfdW5yZWYoYWNjZWxHcm91cCk7CisgICAgd2lu
ZG93LT5hY2NlbEdyb3VwID0gZ3RrX2FjY2VsX2dyb3VwX25ldygpOworICAgIGd0a193aW5kb3df
YWRkX2FjY2VsX2dyb3VwKEdUS19XSU5ET1cod2luZG93KSwgd2luZG93LT5hY2NlbEdyb3VwKTsK
IAogICAgIEd0a1dpZGdldCAqdG9vbGJhciA9IGd0a190b29sYmFyX25ldygpOwogICAgIHdpbmRv
dy0+dG9vbGJhciA9IHRvb2xiYXI7CkBAIC01NzQsNiArNTk2LDEyIEBAIHN0YXRpYyB2b2lkIGJy
b3dzZXJfd2luZG93X2luaXQoQnJvd3NlcldpbmRvdyAqd2luZG93KQogICAgIGd0a190b29sYmFy
X2luc2VydChHVEtfVE9PTEJBUih0b29sYmFyKSwgaXRlbSwgLTEpOwogICAgIGd0a193aWRnZXRf
c2hvdyhHVEtfV0lER0VUKGl0ZW0pKTsKIAorICAgIGl0ZW0gPSBndGtfdG9vbF9idXR0b25fbmV3
X2Zyb21fc3RvY2soR1RLX1NUT0NLX0ZJTkQpOworICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBl
ZChpdGVtLCAiY2xpY2tlZCIsIEdfQ0FMTEJBQ0soc2VhcmNoQ2FsbGJhY2spLCB3aW5kb3cpOwor
ICAgIGd0a190b29sYmFyX2luc2VydChHVEtfVE9PTEJBUih0b29sYmFyKSwgaXRlbSwgLTEpOwor
ICAgIGd0a193aWRnZXRfYWRkX2FjY2VsZXJhdG9yKEdUS19XSURHRVQoaXRlbSksICJjbGlja2Vk
Iiwgd2luZG93LT5hY2NlbEdyb3VwLCBHREtfS0VZX0YsIEdES19DT05UUk9MX01BU0ssIEdUS19B
Q0NFTF9WSVNJQkxFKTsKKyAgICBndGtfd2lkZ2V0X3Nob3coR1RLX1dJREdFVChpdGVtKSk7CisK
ICAgICBpdGVtID0gZ3RrX3Rvb2xfaXRlbV9uZXcoKTsKICAgICBndGtfdG9vbF9pdGVtX3NldF9l
eHBhbmQoaXRlbSwgVFJVRSk7CiAgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUihp
dGVtKSwgd2luZG93LT51cmlFbnRyeSk7CkBAIC01ODUsNyArNjEzLDcgQEAgc3RhdGljIHZvaWQg
YnJvd3Nlcl93aW5kb3dfaW5pdChCcm93c2VyV2luZG93ICp3aW5kb3cpCiAgICAgd2luZG93LT5y
ZWxvYWRPclN0b3BCdXR0b24gPSBHVEtfV0lER0VUKGl0ZW0pOwogICAgIGdfc2lnbmFsX2Nvbm5l
Y3Rfc3dhcHBlZChpdGVtLCAiY2xpY2tlZCIsIEdfQ0FMTEJBQ0socmVsb2FkT3JTdG9wQ2FsbGJh
Y2spLCB3aW5kb3cpOwogICAgIGd0a190b29sYmFyX2luc2VydChHVEtfVE9PTEJBUih0b29sYmFy
KSwgaXRlbSwgLTEpOwotICAgIGd0a193aWRnZXRfYWRkX2FjY2VsZXJhdG9yKHdpbmRvdy0+cmVs
b2FkT3JTdG9wQnV0dG9uLCAiY2xpY2tlZCIsIGFjY2VsR3JvdXAsIEdES19LRVlfRjUsIDAsIEdU
S19BQ0NFTF9WSVNJQkxFKTsKKyAgICBndGtfd2lkZ2V0X2FkZF9hY2NlbGVyYXRvcih3aW5kb3ct
PnJlbG9hZE9yU3RvcEJ1dHRvbiwgImNsaWNrZWQiLCB3aW5kb3ctPmFjY2VsR3JvdXAsIEdES19L
RVlfRjUsIDAsIEdUS19BQ0NFTF9WSVNJQkxFKTsKICAgICBndGtfd2lkZ2V0X3Nob3cod2luZG93
LT5yZWxvYWRPclN0b3BCdXR0b24pOwogCiAgICAgR3RrV2lkZ2V0ICp2Ym94ID0gZ3RrX2JveF9u
ZXcoR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCAwKTsKQEAgLTYxOSw2ICs2NDcsMTAgQEAgc3Rh
dGljIHZvaWQgYnJvd3NlcldpbmRvd0NvbnN0cnVjdGVkKEdPYmplY3QgKmdPYmplY3QpCiAKICAg
ICBnX3NpZ25hbF9jb25uZWN0KHdlYmtpdF93ZWJfdmlld19nZXRfY29udGV4dCh3aW5kb3ctPndl
YlZpZXcpLCAiZG93bmxvYWQtc3RhcnRlZCIsIEdfQ0FMTEJBQ0soZG93bmxvYWRTdGFydGVkKSwg
d2luZG93KTsKIAorICAgIHdpbmRvdy0+c2VhcmNoQmFyID0gQlJPV1NFUl9TRUFSQ0hfQkFSKGJy
b3dzZXJfc2VhcmNoX2Jhcl9uZXcod2luZG93LT53ZWJWaWV3KSk7CisgICAgYnJvd3Nlcl9zZWFy
Y2hfYmFyX2FkZF9hY2NlbGVyYXRvcnMod2luZG93LT5zZWFyY2hCYXIsIHdpbmRvdy0+YWNjZWxH
cm91cCk7CisgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1god2luZG93LT5tYWluQm94KSwg
R1RLX1dJREdFVCh3aW5kb3ctPnNlYXJjaEJhciksIEZBTFNFLCBGQUxTRSwgMCk7CisKICAgICBX
ZWJLaXRCYWNrRm9yd2FyZExpc3QgKmJhY2tGb3J3YWRsaXN0ID0gd2Via2l0X3dlYl92aWV3X2dl
dF9iYWNrX2ZvcndhcmRfbGlzdCh3aW5kb3ctPndlYlZpZXcpOwogICAgIGdfc2lnbmFsX2Nvbm5l
Y3QoYmFja0ZvcndhZGxpc3QsICJjaGFuZ2VkIiwgR19DQUxMQkFDSyhiYWNrRm9yd2FkbGlzdENo
YW5nZWQpLCB3aW5kb3cpOwogCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvR05V
bWFrZWZpbGUuYW0gYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvR05VbWFrZWZpbGUuYW0KaW5kZXgg
ZDRlMTMwNWVjYzI4MzQzNDZmOWE2NGE1MjcxMGQ3N2M0OWVjOGRmYy4uNDVlODM2NzYzOGExYmFh
YjNjY2RkZGEwOTQ0ZjEyNDU1Zjg3N2Y5MCAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIv
Z3RrL0dOVW1ha2VmaWxlLmFtCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9HTlVtYWtlZmls
ZS5hbQpAQCAtMjMsNiArMjMsOCBAQCBQcm9ncmFtc19NaW5pQnJvd3Nlcl9TT1VSQ0VTID0gXAog
CVRvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudC5jIFwKIAlU
b29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlckRvd25sb2Fkc0Jhci5oIFwKIAlUb29scy9NaW5p
QnJvd3Nlci9ndGsvQnJvd3NlckRvd25sb2Fkc0Jhci5jIFwKKwlUb29scy9NaW5pQnJvd3Nlci9n
dGsvQnJvd3NlclNlYXJjaEJhci5oIFwKKwlUb29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlclNl
YXJjaEJhci5jIFwKIAlUb29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlclNldHRpbmdzRGlhbG9n
LmggXAogCVRvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyU2V0dGluZ3NEaWFsb2cuYyBcCiAJ
VG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJXaW5kb3cuaCBcCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>