<?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>135795</bug_id>
          
          <creation_ts>2014-08-11 03:02:41 -0700</creation_ts>
          <short_desc>[EFL][WK2] Minibrowser : Enhance application to be able to support history list navigation</short_desc>
          <delta_ts>2014-08-25 06:40:37 -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>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Tanay">tanay.c</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ryuan.choi</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1028159</commentid>
    <comment_count>0</comment_count>
    <who name="Tanay">tanay.c</who>
    <bug_when>2014-08-11 03:02:41 -0700</bug_when>
    <thetext>Currently minibrowser supports only single step navigation. Implementation of multistep navigation in the minibrowser so that user can long press and view the backward and forward URL lists and navigate to any of the previous or forward webpages.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1028168</commentid>
    <comment_count>1</comment_count>
      <attachid>236363</attachid>
    <who name="Tanay">tanay.c</who>
    <bug_when>2014-08-11 04:27:41 -0700</bug_when>
    <thetext>Created attachment 236363
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1028763</commentid>
    <comment_count>2</comment_count>
      <attachid>236363</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-08-13 03:27:28 -0700</bug_when>
    <thetext>Comment on attachment 236363
Patch

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

&gt; Tools/MiniBrowser/efl/main.c:62
&gt; +static Eina_Bool forward_navigation_enabled = EINA_FALSE;

Patch looks good. However, these two boolean flags may disturb upcoming patch for MiniBrowser. Can&apos;t we call callbacks when long press is detected directly ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1028766</commentid>
    <comment_count>3</comment_count>
    <who name="Tanay">tanay.c</who>
    <bug_when>2014-08-13 04:04:03 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 236363 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=236363&amp;action=review
&gt; 
&gt; &gt; Tools/MiniBrowser/efl/main.c:62
&gt; &gt; +static Eina_Bool forward_navigation_enabled = EINA_FALSE;
&gt; 
&gt; Patch looks good. However, these two boolean flags may disturb upcoming patch for MiniBrowser. Can&apos;t we call callbacks when long press is detected directly ?

The flags are required due to following reasons:
1) evas button registers both &apos;clicked&apos; + &apos;repeated&apos; event when the button is released after longpress. This results in callback for &apos;clicked&apos; which should be avoided. longpress_enabled is required to differentiate between &apos;repeated&apos; and &apos;clicked&apos; events.
  
2)Also multiple longpress callbacks are recieved when the user longpress the button. We require to process only once and ignore the rest of the calls.

3) forward_navigation flag is required to differentiate the navigation direction. Without this we would not be able to know the direction of navigation.

If there are alternatives to avoid the flags please do suggest. Due to above limitations I am using this approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1029588</commentid>
    <comment_count>4</comment_count>
      <attachid>236363</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-08-16 00:08:12 -0700</bug_when>
    <thetext>Comment on attachment 236363
Patch

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

&gt; Tools/MiniBrowser/efl/main.c:1138
&gt; +on_navigation_button_longpress(void *user_data)

This is not callback function which is registered by evas_object_event_callback_add. So, how do you think just to use navigaton_button_longpress_process() ?

&gt; Tools/MiniBrowser/efl/main.c:1149
&gt; +        int item_count, x = 0, y = 0, width = 0, height = 0;

Looks C coding style. MiniBrowser is compiled by C++ compiler.

&gt; Tools/MiniBrowser/efl/main.c:1163
&gt; +        for (index = 0; index &lt; item_count; index++) {

index -&gt; int index ?

&gt; Tools/MiniBrowser/efl/main.c:2154
&gt; +    Eina_Bool auto_repeat = elm_button_autorepeat_get(window-&gt;back_button);

Could you explain why we need to check if the autorepeat is enabled ? It looks back_button&apos;s auto repeat setting is always enabled or disabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1029741</commentid>
    <comment_count>5</comment_count>
      <attachid>236752</attachid>
    <who name="Tanay">tanay.c</who>
    <bug_when>2014-08-18 02:57:15 -0700</bug_when>
    <thetext>Created attachment 236752
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1029742</commentid>
    <comment_count>6</comment_count>
    <who name="Tanay">tanay.c</who>
    <bug_when>2014-08-18 02:58:56 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 236363 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=236363&amp;action=review
&gt; 
&gt; &gt; Tools/MiniBrowser/efl/main.c:1138
&gt; &gt; +on_navigation_button_longpress(void *user_data)
&gt; 
&gt; This is not callback function which is registered by evas_object_event_callback_add. So, how do you think just to use navigaton_button_longpress_process() ?
&gt; 

Yes, you are right. Changed the function name.

&gt; &gt; Tools/MiniBrowser/efl/main.c:1149
&gt; &gt; +        int item_count, x = 0, y = 0, width = 0, height = 0;
&gt; 
&gt; Looks C coding style. MiniBrowser is compiled by C++ compiler.
&gt; 

Fixed.

&gt; &gt; Tools/MiniBrowser/efl/main.c:1163
&gt; &gt; +        for (index = 0; index &lt; item_count; index++) {
&gt; 
&gt; index -&gt; int index ?
&gt; 

index a size_t type variable defined with other local variables at ln 1164.

&gt; &gt; Tools/MiniBrowser/efl/main.c:2154
&gt; &gt; +    Eina_Bool auto_repeat = elm_button_autorepeat_get(window-&gt;back_button);
&gt; 
&gt; Could you explain why we need to check if the autorepeat is enabled ? It looks back_button&apos;s auto repeat setting is always enabled or disabled.

This was part of the code to check if &quot;repeats&quot; is enabled for the buttons. Refactored to always enable the longpress for back and forward evas buttons</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030207</commentid>
    <comment_count>7</comment_count>
      <attachid>236752</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-08-19 21:38:24 -0700</bug_when>
    <thetext>Comment on attachment 236752
Patch

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

LGTM. However, ryuan might wanna take a final look.

&gt; Tools/MiniBrowser/efl/main.c:1204
&gt; +

nit: Unneeded line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030208</commentid>
    <comment_count>8</comment_count>
      <attachid>236752</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-08-19 22:20:09 -0700</bug_when>
    <thetext>Comment on attachment 236752
Patch

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

&gt; Tools/MiniBrowser/efl/main.c:1062
&gt; +    if (!longpress_enabled) {

Nit, why don&apos;t just escape using below?

if (longpress_enabled) return;

&gt; Tools/MiniBrowser/efl/main.c:1143
&gt; +    ewk_view_navigate_to(window-&gt;ewk_view, eina_list_nth(history_list_get(user_data), item_index-1)); 

space between - ?

&gt; Tools/MiniBrowser/efl/main.c:1149
&gt; +on_navigation_button_longpress_process(void *user_data)

on_ looks not required

&gt; Tools/MiniBrowser/efl/main.c:1151
&gt; +    if (!longpress_enabled) {

Isn&apos;t early return better?

&gt; Tools/MiniBrowser/efl/main.c:1182
&gt; +        for (index = 0; index &lt; item_count; index++) {
&gt; +            title = ewk_back_forward_list_item_title_get(eina_list_nth(list, index));
&gt; +            info(&quot; title = %s&quot;, title);
&gt; +            elm_genlist_item_append(window-&gt;history.history_list, list_item, (void*)(title), NULL, ELM_GENLIST_ITEM_NONE, on_list_item_select, user_data);
&gt; +        }

Why don&apos;t you use EINA_LIST_FOREACH ?
It&apos;s cheaper than the loop with eina_list_nth and usual way which EFL does.

&gt; Tools/MiniBrowser/efl/main.c:1195
&gt; +            if (forward_navigation_enabled) {
&gt; +                evas_object_move(window-&gt;history.history_box , x+TOOL_BAR_BUTTON_SIZE+1, y+TOOL_BAR_BUTTON_SIZE);
&gt; +                evas_object_move(window-&gt;history.history_list , x+TOOL_BAR_BUTTON_SIZE+1, y+TOOL_BAR_BUTTON_SIZE);  
&gt; +            } else {
&gt; +                evas_object_move(window-&gt;history.history_box , x, y+TOOL_BAR_BUTTON_SIZE);
&gt; +                evas_object_move(window-&gt;history.history_list , x, y+TOOL_BAR_BUTTON_SIZE);  
&gt; +            }

space between + ?

&gt; Tools/MiniBrowser/efl/main.c:1213
&gt; +    forward_navigation_enabled = EINA_TRUE;

Should we keep this as static variable?

Can we pass this as the argument of on_navigation_button_longpress_process ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030225</commentid>
    <comment_count>9</comment_count>
      <attachid>236858</attachid>
    <who name="Tanay">tanay.c</who>
    <bug_when>2014-08-20 00:00:01 -0700</bug_when>
    <thetext>Created attachment 236858
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030227</commentid>
    <comment_count>10</comment_count>
    <who name="Tanay">tanay.c</who>
    <bug_when>2014-08-20 00:05:46 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 236752 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=236752&amp;action=review
&gt; 
&gt; &gt; Tools/MiniBrowser/efl/main.c:1062
&gt; &gt; +    if (!longpress_enabled) {
&gt; 
&gt; Nit, why don&apos;t just escape using below?
&gt; 
&gt; if (longpress_enabled) return;
&gt; 

Corrected.

&gt; &gt; Tools/MiniBrowser/efl/main.c:1143
&gt; &gt; +    ewk_view_navigate_to(window-&gt;ewk_view, eina_list_nth(history_list_get(user_data), item_index-1)); 
&gt; 
&gt; space between - ?
&gt; 

Fixed.

&gt; &gt; Tools/MiniBrowser/efl/main.c:1149
&gt; &gt; +on_navigation_button_longpress_process(void *user_data)
&gt; 
&gt; on_ looks not required
&gt; 

Changed the function name to navigation_button_longpress_process.

&gt; &gt; Tools/MiniBrowser/efl/main.c:1151
&gt; &gt; +    if (!longpress_enabled) {
&gt; 
&gt; Isn&apos;t early return better?
&gt; 

Yes, modified the conditions.

&gt; &gt; Tools/MiniBrowser/efl/main.c:1182
&gt; &gt; +        for (index = 0; index &lt; item_count; index++) {
&gt; &gt; +            title = ewk_back_forward_list_item_title_get(eina_list_nth(list, index));
&gt; &gt; +            info(&quot; title = %s&quot;, title);
&gt; &gt; +            elm_genlist_item_append(window-&gt;history.history_list, list_item, (void*)(title), NULL, ELM_GENLIST_ITEM_NONE, on_list_item_select, user_data);
&gt; &gt; +        }
&gt; 
&gt; Why don&apos;t you use EINA_LIST_FOREACH ?
&gt; It&apos;s cheaper than the loop with eina_list_nth and usual way which EFL does.
&gt; 

Thanks for the suggestion, incorporated the changes. 

&gt; &gt; Tools/MiniBrowser/efl/main.c:1195
&gt; &gt; +            if (forward_navigation_enabled) {
&gt; &gt; +                evas_object_move(window-&gt;history.history_box , x+TOOL_BAR_BUTTON_SIZE+1, y+TOOL_BAR_BUTTON_SIZE);
&gt; &gt; +                evas_object_move(window-&gt;history.history_list , x+TOOL_BAR_BUTTON_SIZE+1, y+TOOL_BAR_BUTTON_SIZE);  
&gt; &gt; +            } else {
&gt; &gt; +                evas_object_move(window-&gt;history.history_box , x, y+TOOL_BAR_BUTTON_SIZE);
&gt; &gt; +                evas_object_move(window-&gt;history.history_list , x, y+TOOL_BAR_BUTTON_SIZE);  
&gt; &gt; +            }
&gt; 
&gt; space between + ?
&gt; 

Fixed.

&gt; &gt; Tools/MiniBrowser/efl/main.c:1213
&gt; &gt; +    forward_navigation_enabled = EINA_TRUE;
&gt; 
&gt; Should we keep this as static variable?
&gt; 
&gt; Can we pass this as the argument of on_navigation_button_longpress_process ?

We need to keep this as a static variable as it is being reset in history_list_hide() function which is called from key and mouse event callbacks.So, I would like to retain the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030243</commentid>
    <comment_count>11</comment_count>
      <attachid>236858</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-08-20 01:23:14 -0700</bug_when>
    <thetext>Comment on attachment 236858
Patch

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

&gt; Tools/MiniBrowser/efl/main.c:992
&gt; +    if (forward_navigation_enabled)
&gt; +        history_items = ewk_back_forward_list_n_forward_items_copy(list, count); 
&gt; +    else
&gt; +        history_items = ewk_back_forward_list_n_back_items_copy(list, count);

ewk_back_forward_list_{back|forward}_items_copy looks better. (without _n_ and count)

&gt; Tools/MiniBrowser/efl/main.c:1133
&gt; +list_item_label_get(void *data, Evas_Object *obj, const char* part)
&gt; +{
&gt; +    int len = strlen((char*)data);
&gt; +    char* buf = (char*)malloc(sizeof(char)*(len+1));

The position of * is different.

&gt; Tools/MiniBrowser/efl/main.c:1134
&gt; +    snprintf(buf, len+1, &quot;%s&quot;, (char*)data);

space between +

&gt; Tools/MiniBrowser/efl/main.c:1145
&gt; +    ewk_view_navigate_to(window-&gt;ewk_view, eina_list_nth(history_list_get(user_data), item_index - 1)); 

With you comment, I understood that forward_navigation_enabled looks required because of this line.

I think that we should not do this.
While showing history box, ewk_view can navigate back or forward so history can be changed.

So, item_index might not be same with newly allocated history_items.

Instead, I think that we should pass the Ewk_Back_Forward_List_Item as user_data.

I&apos;ll leave the comment more about it below.

&gt; Tools/MiniBrowser/efl/main.c:1159
&gt; +    Eina_List* list = history_list_get(user_data);

Leak. ( and check the position of *)

Below is doxygen of ewk_back_forward_list_n_back_items_copy.

 * @return @c Eina_List containing @c Ewk_Back_Forward_List_Item elements or @c NULL in case of error,
 *            the Eina_List and its items should be freed after use. Use ewk_object_unref()
 *            to free the items

&gt; Tools/MiniBrowser/efl/main.c:1161
&gt; +    const Eina_List* l;
&gt; +    void* data;

The position of *

&gt; Tools/MiniBrowser/efl/main.c:1186
&gt; +        elm_genlist_item_append(window-&gt;history.history_list, list_item, (void*)(title), NULL, ELM_GENLIST_ITEM_NONE, on_list_item_select, user_data);

Instead of passing user_data(which is Browser_Window), we should pass Ewk_Back_Forward_List_Item after called evas_object_ref().

I think that user_data can be passed to the callbacks using evas_object_data_set()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030261</commentid>
    <comment_count>12</comment_count>
      <attachid>236867</attachid>
    <who name="Tanay">tanay.c</who>
    <bug_when>2014-08-20 06:14:59 -0700</bug_when>
    <thetext>Created attachment 236867
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030262</commentid>
    <comment_count>13</comment_count>
      <attachid>236868</attachid>
    <who name="Tanay">tanay.c</who>
    <bug_when>2014-08-20 06:26:30 -0700</bug_when>
    <thetext>Created attachment 236868
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030263</commentid>
    <comment_count>14</comment_count>
    <who name="Tanay">tanay.c</who>
    <bug_when>2014-08-20 06:35:17 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 236858 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=236858&amp;action=review
&gt; 
&gt; &gt; Tools/MiniBrowser/efl/main.c:992
&gt; &gt; +    if (forward_navigation_enabled)
&gt; &gt; +        history_items = ewk_back_forward_list_n_forward_items_copy(list, count); 
&gt; &gt; +    else
&gt; &gt; +        history_items = ewk_back_forward_list_n_back_items_copy(list, count);
&gt; 
&gt; ewk_back_forward_list_{back|forward}_items_copy looks better. (without _n_ and count)
&gt; 
Done.

&gt; &gt; Tools/MiniBrowser/efl/main.c:1133
&gt; &gt; +list_item_label_get(void *data, Evas_Object *obj, const char* part)
&gt; &gt; +{
&gt; &gt; +    int len = strlen((char*)data);
&gt; &gt; +    char* buf = (char*)malloc(sizeof(char)*(len+1));
&gt; 
&gt; The position of * is different.
&gt; 
Done.

&gt; &gt; Tools/MiniBrowser/efl/main.c:1134
&gt; &gt; +    snprintf(buf, len+1, &quot;%s&quot;, (char*)data);
&gt; 
&gt; space between +
&gt; 
Done.

&gt; &gt; Tools/MiniBrowser/efl/main.c:1145
&gt; &gt; +    ewk_view_navigate_to(window-&gt;ewk_view, eina_list_nth(history_list_get(user_data), item_index - 1)); 
&gt; 
&gt; With you comment, I understood that forward_navigation_enabled looks required because of this line.
&gt; 
&gt; I think that we should not do this.
&gt; While showing history box, ewk_view can navigate back or forward so history can be changed.
&gt; 
&gt; So, item_index might not be same with newly allocated history_items.
&gt; 
&gt; Instead, I think that we should pass the Ewk_Back_Forward_List_Item as user_data.
&gt; 
&gt; I&apos;ll leave the comment more about it below.
&gt; 

Modified. More details below.

&gt; &gt; Tools/MiniBrowser/efl/main.c:1159
&gt; &gt; +    Eina_List* list = history_list_get(user_data);
&gt; 
&gt; Leak. ( and check the position of *)
&gt; 
&gt; Below is doxygen of ewk_back_forward_list_n_back_items_copy.
&gt; 
&gt;  * @return @c Eina_List containing @c Ewk_Back_Forward_List_Item elements or @c NULL in case of error,
&gt;  *            the Eina_List and its items should be freed after use. Use ewk_object_unref()
&gt;  *            to free the items
&gt;
Using EINA_LIST_FREE to free the list and data.
 
&gt; &gt; Tools/MiniBrowser/efl/main.c:1161
&gt; &gt; +    const Eina_List* l;
&gt; &gt; +    void* data;
&gt; 
&gt; The position of *
&gt;
Done.
 
&gt; &gt; Tools/MiniBrowser/efl/main.c:1186
&gt; &gt; +        elm_genlist_item_append(window-&gt;history.history_list, list_item, (void*)(title), NULL, ELM_GENLIST_ITEM_NONE, on_list_item_select, user_data);
&gt; 
&gt; Instead of passing user_data(which is Browser_Window), we should pass Ewk_Back_Forward_List_Item after called evas_object_ref().
&gt; 
&gt; I think that user_data can be passed to the callbacks using evas_object_data_set()

Appending the Ewk_Back_Forward_List_Item instead of user_data. Passing the window pointer using evas_object_data_set. Now ewk_view_navigate_to() in on_list_item_select uses these values instead of index.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030597</commentid>
    <comment_count>15</comment_count>
      <attachid>236868</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-08-21 17:19:50 -0700</bug_when>
    <thetext>Comment on attachment 236868
Patch

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

&gt; Tools/MiniBrowser/efl/main.c:62
&gt; +static Eina_Bool forward_navigation_enabled = EINA_FALSE;

I still think that we don&apos;t need to keep this.

&gt; Tools/MiniBrowser/efl/main.c:122
&gt; +        Evas_Object *history_list;

Keep the last allocated list.

&gt; Tools/MiniBrowser/efl/main.c:410
&gt; +static void 
&gt; +history_list_hide(Browser_Window *window)

How about moving this function to near 1127 line ?

&gt; Tools/MiniBrowser/efl/main.c:416
&gt; +

release last allocated list here like below.

EINA_LIST_FREE(list, data) {
    ewk_object_unref(data);
}

&gt; Tools/MiniBrowser/efl/main.c:981
&gt; +history_list_get(void *user_data)

history_list_get(void *user_data, Eina_Bool forward)

&gt; Tools/MiniBrowser/efl/main.c:1134
&gt; +    char *buf = (char *)malloc(sizeof(char) * (len + 1));
&gt; +    snprintf(buf, len + 1, &quot;%s&quot;, (char *)data);
&gt; +    return strdup(buf);

Who release the buf?

&gt; Tools/MiniBrowser/efl/main.c:1147
&gt; +navigation_button_longpress_process(void *user_data)

(void *user_data, Eina_Bool forward)

&gt; Tools/MiniBrowser/efl/main.c:1168
&gt; +    evas_object_ref(window-&gt;history.history_list);

It&apos;s not what I wanted.
history_list is always valid and no need to increase reference.

&gt; Tools/MiniBrowser/efl/main.c:1188
&gt; +    EINA_LIST_FREE(list, data);

Like I memtioned above, I&apos;d like to move this to history_list_hide()

&gt; Tools/MiniBrowser/efl/main.c:1211
&gt; +    evas_object_unref(window-&gt;history.history_list); 

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030689</commentid>
    <comment_count>16</comment_count>
      <attachid>236868</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-08-22 00:11:00 -0700</bug_when>
    <thetext>Comment on attachment 236868
Patch

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

&gt;&gt; Tools/MiniBrowser/efl/main.c:122
&gt;&gt; +        Evas_Object *history_list;
&gt; 
&gt; Keep the last allocated list.

ewk_back_forward_list_XXX returns Eina_List and the items of that list are reference counted.

It&apos;s because we should keep those items which webkit allocates internally although back forward list are changed.

So, I think that we&apos;d better to keep the list (with ref counted items).
It will be released in history_list_hide().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030710</commentid>
    <comment_count>17</comment_count>
    <who name="Tanay">tanay.c</who>
    <bug_when>2014-08-22 03:10:46 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 236868 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=236868&amp;action=review
&gt; 
&gt; &gt;&gt; Tools/MiniBrowser/efl/main.c:122
&gt; &gt;&gt; +        Evas_Object *history_list;
&gt; &gt; 
&gt; &gt; Keep the last allocated list.
&gt; 
&gt; ewk_back_forward_list_XXX returns Eina_List and the items of that list are reference counted.
&gt; 
&gt; It&apos;s because we should keep those items which webkit allocates internally although back forward list are changed.
&gt; 
&gt; So, I think that we&apos;d better to keep the list (with ref counted items).
&gt; It will be released in history_list_hide().

Thanks, from your explanation it looks like a valid concern.

Since the list is reference counted we will maintain it in the window-&gt;history struct and dereference the items it in the history_list_hide() call. I will make the changes and update the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030713</commentid>
    <comment_count>18</comment_count>
      <attachid>236979</attachid>
    <who name="Tanay">tanay.c</who>
    <bug_when>2014-08-22 04:00:42 -0700</bug_when>
    <thetext>Created attachment 236979
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1030715</commentid>
    <comment_count>19</comment_count>
    <who name="Tanay">tanay.c</who>
    <bug_when>2014-08-22 04:17:41 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; Created an attachment (id=236979) [details]
&gt; Patch

Incorporated the comments. 

&gt; Tools/MiniBrowser/efl/main.c:1134
&gt; +    char *buf = (char *)malloc(sizeof(char) * (len + 1));
&gt; +    snprintf(buf, len + 1, &quot;%s&quot;, (char *)data);
&gt; +    return strdup(buf);

Who release the buf?

From the EFL Genlist documentation the callback function is to return the text for the list item:

&quot;text_get - This function must return a strdup&apos;()ed string, as the caller will free() it when done.&quot;

This will be freed with the call to elm_genlist_clear():

&quot;The application can clear the list with elm_genlist_clear() which deletes all the items in the list.&quot; 

I have removed the strdup since we are allocating buf anyway and strdup does the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031106</commentid>
    <comment_count>20</comment_count>
      <attachid>236979</attachid>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-08-25 04:56:58 -0700</bug_when>
    <thetext>Comment on attachment 236979
Patch

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

Good, looks good to me (with nit)

&gt; Tools/MiniBrowser/efl/main.c:1188
&gt; +        elm_genlist_item_append(window-&gt;history.history_list, list_item, (void*)(title), NULL, ELM_GENLIST_ITEM_NONE, on_list_item_select, data);

(void *)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031117</commentid>
    <comment_count>21</comment_count>
      <attachid>237078</attachid>
    <who name="Tanay">tanay.c</who>
    <bug_when>2014-08-25 05:37:10 -0700</bug_when>
    <thetext>Created attachment 237078
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031119</commentid>
    <comment_count>22</comment_count>
    <who name="Ryuan Choi">ryuan.choi</who>
    <bug_when>2014-08-25 05:38:47 -0700</bug_when>
    <thetext>(In reply to comment #21)
&gt; Created an attachment (id=237078) [details]
&gt; Patch

looks good to me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031123</commentid>
    <comment_count>23</comment_count>
      <attachid>237078</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-08-25 05:52:53 -0700</bug_when>
    <thetext>Comment on attachment 237078
Patch

r+ed based on me and Ryuan&apos;s review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031136</commentid>
    <comment_count>24</comment_count>
      <attachid>237078</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-25 06:40:31 -0700</bug_when>
    <thetext>Comment on attachment 237078
Patch

Clearing flags on attachment: 237078

Committed r172923: &lt;http://trac.webkit.org/changeset/172923&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1031137</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-08-25 06:40:37 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236363</attachid>
            <date>2014-08-11 04:27:41 -0700</date>
            <delta_ts>2014-08-18 02:57:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135795-20140811165805.patch</filename>
            <type>text/plain</type>
            <size>14068</size>
            <attacher name="Tanay">tanay.c</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE3MjM5NCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDE0LTA4LTExICBUYW5heSBDICA8dGFuYXkuY0BzYW1zdW5nLmNvbT4KKwor
ICAgICAgICBbRUZMXVtXSzJdIE1pbmlicm93c2VyIDogRW5oYW5jZSBhcHBsaWNhdGlvbiB0byBi
ZSBhYmxlIHRvIHN1cHBvcnQgaGlzdG9yeSBsaXN0IG5hdmlnYXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTc5NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWluaUJyb3dzZXIvZWZsL21haW4u
YzogQWRkaW5nIGZ1bmN0aW9uYWxpdHkgZm9yIGxvbmcgcHJlc3MgaGlzdG9yeSBsaXN0IG5hdmln
YXRpb24KKyAgICAgICAgKGhpc3RvcnlfbGlzdF9oaWRlKTogRnVuY3Rpb25hbGl0eSB0byBoaWRl
IHRoZSBoaXN0b3J5IGxpc3QKKyAgICAgICAgKG9uX2tleV9kb3duKToKKyAgICAgICAgKG9uX21v
dXNlX2Rvd24pOgorICAgICAgICAoaGlzdG9yeV9saXN0X2dldCk6IFJldHVybiB0aGUgY3JlYXRl
ZCBsaXN0CisgICAgICAgIChvbl9iYWNrX2J1dHRvbl9jbGlja2VkKToKKyAgICAgICAgKG9uX2Zv
cndhcmRfYnV0dG9uX2NsaWNrZWQpOgorICAgICAgICAobGlzdF9pdGVtX2xhYmVsX2dldCk6IFBv
cHVsYXRlIGl0ZW0gbGFiZWxzCisgICAgICAgIChvbl9saXN0X2l0ZW1fc2VsZWN0KTogTmF2aWdh
dGVzIG9uIHNlbGVjdGlvbiBmcm9tIGhpc3RvcnkgbGlzdAorICAgICAgICAob25fbmF2aWdhdGlv
bl9idXR0b25fbG9uZ3ByZXNzKTogUG9wdWxhdGVzIHRoZSBoaXN0b3J5IGxpc3QgYW5kIGRpc3Bs
YXlzIGl0CisgICAgICAgIChvbl9mb3J3YXJkX2J1dHRvbl9sb25ncHJlc3MpOgorICAgICAgICAo
b25fYmFja19idXR0b25fbG9uZ3ByZXNzKToKKyAgICAgICAgKHdpbmRvd19jcmVhdGUpOiBBZGQg
dGhlIHdpZGdldCBmb3IgaGlzdG9yeSBsaXN0CisKIDIwMTQtMDgtMTEgIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEZpeCBH
VEsrIG1ha2UgZGlzdGNoZWNrLgpJbmRleDogVG9vbHMvTWluaUJyb3dzZXIvZWZsL21haW4uYwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9NaW5pQnJvd3Nlci9lZmwvbWFpbi5jCShyZXZpc2lvbiAxNzIz
OTQpCisrKyBUb29scy9NaW5pQnJvd3Nlci9lZmwvbWFpbi5jCSh3b3JraW5nIGNvcHkpCkBAIC0z
NSw2ICszNSw4IEBAIHN0YXRpYyBjb25zdCBpbnQgU0VBUkNIX0JVVFRPTl9TSVpFID0gMzAKIHN0
YXRpYyBjb25zdCBpbnQgTUFYX1NFQVJDSF9DT1VOVCA9IDEwMDsKIHN0YXRpYyBjb25zdCBpbnQg
REVGQVVMVF9TRUFSQ0hfRkxBR1MgPSBFV0tfRklORF9PUFRJT05TX1NIT1dfSElHSExJR0hUIHwg
RVdLX0ZJTkRfT1BUSU9OU19DQVNFX0lOU0VOU0lUSVZFIHwgRVdLX0ZJTkRfT1BUSU9OU19XUkFQ
X0FST1VORDsKIHN0YXRpYyBjb25zdCBkb3VibGUgVE9PTFRJUF9ERUxBWV9TRUNPTkRTID0gMS4w
Oworc3RhdGljIGNvbnN0IGRvdWJsZSBMT05HUFJFU1NfSU5URVJWQUxfU0VDT05EUyA9IDEuNTsK
K3N0YXRpYyBjb25zdCBkb3VibGUgTElTVF9JVEVNX0hFSUdIVCA9IDI0LjM1OwogCiAjZGVmaW5l
IGluZm8oZm9ybWF0LCBhcmdzLi4uKSAgICAgICBcCiAgICAgZG8geyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCkBAIC01Niw2ICs1OCw4IEBAIHN0YXRpYyBFaW5hX0Jvb2wgd2ViX3NlY3Vy
aXR5X2VuYWJsZWQgPQogc3RhdGljIEVpbmFfQm9vbCB0b3VjaF9ldmVudHNfZW5hYmxlZCA9IEVJ
TkFfRkFMU0U7CiBzdGF0aWMgRWluYV9Cb29sIGZpeGVkX2xheW91dF9lbmFibGVkID0gRUlOQV9G
QUxTRTsKIHN0YXRpYyBFaW5hX0Jvb2wgc2VwYXJhdGVkX3Byb2Nlc3NfZW5hYmxlZCA9IEVJTkFf
RkFMU0U7CitzdGF0aWMgRWluYV9Cb29sIGxvbmdwcmVzc19lbmFibGVkID0gRUlOQV9GQUxTRTsK
K3N0YXRpYyBFaW5hX0Jvb2wgZm9yd2FyZF9uYXZpZ2F0aW9uX2VuYWJsZWQgPSBFSU5BX0ZBTFNF
Owogc3RhdGljIGludCB3aW5kb3dfd2lkdGggPSA4MDA7CiBzdGF0aWMgaW50IHdpbmRvd19oZWln
aHQgPSA2MDA7CiAvKiBEZWZhdWx0IHZhbHVlIG9mIGRldmljZV9waXhlbF9yYXRpbyBpcyAnMCcg
c28gdGhhdCB3ZSBkb24ndCBzZXQgY3VzdG9tIGRldmljZQpAQCAtMTEzLDYgKzExNywxMCBAQCB0
eXBlZGVmIHN0cnVjdCBfQnJvd3Nlcl9XaW5kb3cgewogICAgICAgICBFdmFzX09iamVjdCAqZm9y
d2FyZF9idXR0b247CiAgICAgICAgIEV2YXNfT2JqZWN0ICpjbG9zZV9idXR0b247CiAgICAgfSBz
ZWFyY2g7CisgICAgc3RydWN0IHsKKyAgICAgICAgRXZhc19PYmplY3QgKmhpc3RvcnlfYm94Owor
ICAgICAgICBFdmFzX09iamVjdCAqaGlzdG9yeV9saXN0OworICAgIH0gaGlzdG9yeTsKICAgICBp
bnQgY3VycmVudF96b29tX2xldmVsOyAKICAgICBUb29sdGlwX0luZm9ybWF0aW9uIHRvb2x0aXA7
CiAgICAgQ29sb3JfU2VsZWN0b3IgY29sb3Jfc2VsZWN0b3I7CkBAIC0zOTgsNiArNDA2LDI0IEBA
IHNlYXJjaF9ib3hfaGlkZShCcm93c2VyX1dpbmRvdyAqd2luZG93KQogICAgIGV2YXNfb2JqZWN0
X2ZvY3VzX3NldCh3aW5kb3ctPmV3a192aWV3LCBFSU5BX1RSVUUpOwogfQogCitzdGF0aWMgdm9p
ZCAKK2hpc3RvcnlfbGlzdF9oaWRlKEJyb3dzZXJfV2luZG93ICp3aW5kb3cpCit7CisgICAgLyog
SGlkZSBhbmQgY2xlYXIgdGhlIGhpc3RvcnkgbGlzdCAqLworICAgIGV2YXNfb2JqZWN0X2hpZGUo
d2luZG93LT5oaXN0b3J5Lmhpc3RvcnlfYm94KTsKKyAgICBldmFzX29iamVjdF9oaWRlKHdpbmRv
dy0+aGlzdG9yeS5oaXN0b3J5X2xpc3QpOworICAgIGVsbV9nZW5saXN0X2NsZWFyKHdpbmRvdy0+
aGlzdG9yeS5oaXN0b3J5X2xpc3QpOworCisgICAgLyogR2l2ZSBmb2N1cyBiYWNrIHRvIHRoZSB2
aWV3ICovCisgICAgZWxtX29iamVjdF9mb2N1c19zZXQod2luZG93LT5oaXN0b3J5Lmhpc3Rvcnlf
Ym94LCBFSU5BX0ZBTFNFKTsKKyAgICBlbG1fb2JqZWN0X2ZvY3VzX3NldCh3aW5kb3ctPmhpc3Rv
cnkuaGlzdG9yeV9saXN0LCBFSU5BX0ZBTFNFKTsKKyAgICBldmFzX29iamVjdF9mb2N1c19zZXQo
d2luZG93LT5ld2tfdmlldywgRUlOQV9UUlVFKTsKKworICAgIC8qIFJlc2V0IGZsYWdzICovCisg
ICAgbG9uZ3ByZXNzX2VuYWJsZWQgPSBFSU5BX0ZBTFNFOworICAgIGZvcndhcmRfbmF2aWdhdGlv
bl9lbmFibGVkID0gRUlOQV9GQUxTRTsKK30gCisKIHN0YXRpYyB2b2lkIHNhdmVfcGFnZV9jb250
ZW50c19jYWxsYmFjayhFd2tfUGFnZV9Db250ZW50c19UeXBlIHR5cGUsIGNvbnN0IGNoYXIgKmRh
dGEsIHZvaWQgKnVzZXJfZGF0YSkKIHsKICAgICBFZXRfRmlsZSAqZWY7CkBAIC01MDUsNiArNTMx
LDggQEAgb25fa2V5X2Rvd24odm9pZCAqdXNlcl9kYXRhLCBFdmFzICplLCBFdgogICAgIH0gZWxz
ZSBpZiAoIXN0cmNtcChldi0+a2V5LCAiRXNjYXBlIikpIHsKICAgICAgICAgaWYgKGV2YXNfb2Jq
ZWN0X3Zpc2libGVfZ2V0KHdpbmRvdy0+c2VhcmNoLnNlYXJjaF9iYXIpKQogICAgICAgICAgICAg
c2VhcmNoX2JveF9oaWRlKHdpbmRvdyk7CisgICAgICAgIGVsc2UgaWYgKGV2YXNfb2JqZWN0X3Zp
c2libGVfZ2V0KHdpbmRvdy0+aGlzdG9yeS5oaXN0b3J5X2JveCkpCisgICAgICAgICAgICBoaXN0
b3J5X2xpc3RfaGlkZSh3aW5kb3cpOwogICAgICAgICBlbHNlIGlmIChlbG1fd2luX2Z1bGxzY3Jl
ZW5fZ2V0KHdpbmRvdy0+ZWxtX3dpbmRvdykpCiAgICAgICAgICAgICBld2tfdmlld19mdWxsc2Ny
ZWVuX2V4aXQoZXdrX3ZpZXcpOwogICAgIH0gZWxzZSBpZiAoY3RybFByZXNzZWQgJiYgKCFzdHJj
bXAoZXYtPmtleSwgIm1pbnVzIikgfHwgIXN0cmNtcChldi0+a2V5LCAiS1BfU3VidHJhY3QiKSkp
IHsKQEAgLTU2Myw2ICs1OTEsOCBAQCBvbl9tb3VzZV9kb3duKHZvaWQgKnVzZXJfZGF0YSwgRXZh
cyAqZSwKICAgICAvKiBDbGVhciBzZWxlY3Rpb24gZnJvbSB0aGUgVVJMIGJhciAqLwogICAgIGVs
bV9lbnRyeV9zZWxlY3Rfbm9uZSh3aW5kb3ctPnVybF9iYXIpOwogCisgICAgaWYgKGxvbmdwcmVz
c19lbmFibGVkKQorICAgICAgICBoaXN0b3J5X2xpc3RfaGlkZSh3aW5kb3cpOwogICAgIGlmIChl
di0+YnV0dG9uID09IDEpCiAgICAgICAgIHZpZXdfZm9jdXNfc2V0KHdpbmRvdywgRUlOQV9UUlVF
KTsKICAgICBlbHNlIGlmIChldi0+YnV0dG9uID09IDIpCkBAIC05MzYsNiArOTY2LDIzIEBAIHVy
bF9mcm9tX3VzZXJfaW5wdXQoY29uc3QgY2hhciAqYXJnKQogICAgIHJldHVybiB1cmw7CiB9CiAK
K3N0YXRpYyBFaW5hX0xpc3QgKgoraGlzdG9yeV9saXN0X2dldCh2b2lkICp1c2VyX2RhdGEpCit7
CisgICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9IChCcm93c2VyX1dpbmRvdyAqKXVzZXJfZGF0
YTsKKyAgICAKKyAgICBFaW5hX0xpc3QgKmhpc3RvcnlfaXRlbXMgPSBOVUxMOworICAgIEV3a19C
YWNrX0ZvcndhcmRfTGlzdCAqbGlzdCA9IGV3a192aWV3X2JhY2tfZm9yd2FyZF9saXN0X2dldCh3
aW5kb3ctPmV3a192aWV3KTsKKyAgICBjb25zdCBzaXplX3QgY291bnQgPSBld2tfYmFja19mb3J3
YXJkX2xpc3RfY291bnQobGlzdCk7CisgICAgCisgICAgaWYgKGZvcndhcmRfbmF2aWdhdGlvbl9l
bmFibGVkKQorICAgICAgICBoaXN0b3J5X2l0ZW1zID0gZXdrX2JhY2tfZm9yd2FyZF9saXN0X25f
Zm9yd2FyZF9pdGVtc19jb3B5KGxpc3QsIGNvdW50KTsgCisgICAgZWxzZQorICAgICAgICBoaXN0
b3J5X2l0ZW1zID0gZXdrX2JhY2tfZm9yd2FyZF9saXN0X25fYmFja19pdGVtc19jb3B5KGxpc3Qs
IGNvdW50KTsKKyAgICAKKyAgICByZXR1cm4gaGlzdG9yeV9pdGVtczsKK30KKwogc3RhdGljIHZv
aWQKIG9uX3VybF9iYXJfYWN0aXZhdGVkKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKnVy
bF9iYXIsIHZvaWQgKmV2ZW50X2luZm8pCiB7CkBAIC0xMDAxLDIxICsxMDQ4LDI1IEBAIG9uX3Nl
YXJjaF9maWVsZF9jbGlja2VkKHZvaWQgKnVzZXJfZGF0YSwKIHN0YXRpYyB2b2lkCiBvbl9iYWNr
X2J1dHRvbl9jbGlja2VkKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKmJhY2tfYnV0dG9u
LCB2b2lkICpldmVudF9pbmZvKQogewotICAgIEJyb3dzZXJfV2luZG93ICp3aW5kb3cgPSAoQnJv
d3Nlcl9XaW5kb3cgKil1c2VyX2RhdGE7CisgICAgaWYgKCFsb25ncHJlc3NfZW5hYmxlZCkgewor
ICAgICAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0gKEJyb3dzZXJfV2luZG93ICopdXNlcl9k
YXRhOwogCi0gICAgZXdrX3ZpZXdfYmFjayh3aW5kb3ctPmV3a192aWV3KTsKLSAgICAvKiBVcGRh
dGUgYmFjayBidXR0b24gc3RhdGUgKi8KLSAgICBlbG1fb2JqZWN0X2Rpc2FibGVkX3NldChiYWNr
X2J1dHRvbiwgIWV3a192aWV3X2JhY2tfcG9zc2libGUod2luZG93LT5ld2tfdmlldykpOworICAg
ICAgICBld2tfdmlld19iYWNrKHdpbmRvdy0+ZXdrX3ZpZXcpOworICAgICAgICAvKiBVcGRhdGUg
YmFjayBidXR0b24gc3RhdGUgKi8KKyAgICAgICAgZWxtX29iamVjdF9kaXNhYmxlZF9zZXQoYmFj
a19idXR0b24sICFld2tfdmlld19iYWNrX3Bvc3NpYmxlKHdpbmRvdy0+ZXdrX3ZpZXcpKTsKKyAg
ICB9ICAgIAogfQogCiBzdGF0aWMgdm9pZAogb25fZm9yd2FyZF9idXR0b25fY2xpY2tlZCh2b2lk
ICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpmb3J3YXJkX2J1dHRvbiwgdm9pZCAqZXZlbnRfaW5m
bykKIHsKLSAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0gKEJyb3dzZXJfV2luZG93ICopdXNl
cl9kYXRhOworICAgIGlmICghbG9uZ3ByZXNzX2VuYWJsZWQpIHsgICAgICAgIAorICAgICAgICBC
cm93c2VyX1dpbmRvdyAqd2luZG93ID0gKEJyb3dzZXJfV2luZG93ICopdXNlcl9kYXRhOwogCi0g
ICAgZXdrX3ZpZXdfZm9yd2FyZCh3aW5kb3ctPmV3a192aWV3KTsKLSAgICAvKiBVcGRhdGUgZm9y
d2FyZCBidXR0b24gc3RhdGUgKi8KLSAgICBlbG1fb2JqZWN0X2Rpc2FibGVkX3NldChmb3J3YXJk
X2J1dHRvbiwgIWV3a192aWV3X2ZvcndhcmRfcG9zc2libGUod2luZG93LT5ld2tfdmlldykpOwor
ICAgICAgICBld2tfdmlld19mb3J3YXJkKHdpbmRvdy0+ZXdrX3ZpZXcpOworICAgICAgICAvKiBV
cGRhdGUgZm9yd2FyZCBidXR0b24gc3RhdGUgKi8KKyAgICAgICAgZWxtX29iamVjdF9kaXNhYmxl
ZF9zZXQoZm9yd2FyZF9idXR0b24sICFld2tfdmlld19mb3J3YXJkX3Bvc3NpYmxlKHdpbmRvdy0+
ZXdrX3ZpZXcpKTsKKyAgICB9CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xMDYyLDYgKzExMTMsMTA0
IEBAIG9uX3JlZnJlc2hfYnV0dG9uX2NsaWNrZWQodm9pZCAqdXNlcl9kYXQKICAgICB9CiB9CiAK
K3N0YXRpYyBjaGFyICoKK2xpc3RfaXRlbV9sYWJlbF9nZXQodm9pZCAqZGF0YSwgRXZhc19PYmpl
Y3QgKm9iaiwgY29uc3QgY2hhciogcGFydCkKK3sKKyAgICBpbnQgbGVuID0gc3RybGVuKChjaGFy
KilkYXRhKTsKKyAgICBjaGFyKiBidWYgPSAoY2hhciopbWFsbG9jKHNpemVvZihjaGFyKSoobGVu
KzEpKTsKKyAgICBzbnByaW50ZihidWYsIGxlbisxLCAiJXMiLCAoY2hhciopZGF0YSk7CisgICAg
cmV0dXJuIHN0cmR1cChidWYpOworfQorCitzdGF0aWMgdm9pZAorb25fbGlzdF9pdGVtX3NlbGVj
dCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpvYmosIHZvaWQgKmV2ZW50X2luZm8pCit7
CisgICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9IChCcm93c2VyX1dpbmRvdyAqKSh1c2VyX2Rh
dGEpOworICAgIEVsbV9PYmplY3RfSXRlbSAqbGlzdF9pdGVtID0gZXZlbnRfaW5mbzsKKyAgICBp
bnQgaXRlbV9pbmRleCA9IGVsbV9nZW5saXN0X2l0ZW1faW5kZXhfZ2V0KGxpc3RfaXRlbSk7CisK
KyAgICBld2tfdmlld19uYXZpZ2F0ZV90byh3aW5kb3ctPmV3a192aWV3LCBlaW5hX2xpc3RfbnRo
KGhpc3RvcnlfbGlzdF9nZXQodXNlcl9kYXRhKSwgaXRlbV9pbmRleC0xKSk7IAorCisgICAgaGlz
dG9yeV9saXN0X2hpZGUod2luZG93KTsKK30KKworc3RhdGljIHZvaWQKK29uX25hdmlnYXRpb25f
YnV0dG9uX2xvbmdwcmVzcyh2b2lkICp1c2VyX2RhdGEpCit7CisgICAgaWYgKCFsb25ncHJlc3Nf
ZW5hYmxlZCkgeworICAgICAgICBsb25ncHJlc3NfZW5hYmxlZCA9IEVJTkFfVFJVRTsKKyAgICAg
ICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9IChCcm93c2VyX1dpbmRvdyAqKXVzZXJfZGF0YTsK
KyAgICAgICAgCisgICAgICAgIEVpbmFfTGlzdCogbGlzdCA9IGhpc3RvcnlfbGlzdF9nZXQodXNl
cl9kYXRhKTsKKyAgICAgICAgCisgICAgICAgIGNvbnN0IGNoYXIgKnRpdGxlID0gTlVMTDsKKyAg
ICAgICAgc2l6ZV90IGluZGV4ID0gMDsKKyAgICAgICAgc3RhdGljIEVsbV9HZW5saXN0X0l0ZW1f
Q2xhc3MgKmxpc3RfaXRlbSA9IE5VTEw7CisgICAgICAgIGludCBpdGVtX2NvdW50LCB4ID0gMCwg
eSA9IDAsIHdpZHRoID0gMCwgaGVpZ2h0ID0gMDsKKworICAgICAgICBpZiAoIWxpc3RfaXRlbSkg
eworICAgICAgICAgICAgbGlzdF9pdGVtID0gZWxtX2dlbmxpc3RfaXRlbV9jbGFzc19uZXcoKTsK
KyAgICAgICAgICAgIGxpc3RfaXRlbS0+aXRlbV9zdHlsZSA9ICJkZWZhdWx0IjsKKyAgICAgICAg
ICAgIGxpc3RfaXRlbS0+ZnVuYy50ZXh0X2dldCA9IGxpc3RfaXRlbV9sYWJlbF9nZXQ7CisgICAg
ICAgICAgICBsaXN0X2l0ZW0tPmZ1bmMuY29udGVudF9nZXQgPSBOVUxMOworICAgICAgICAgICAg
bGlzdF9pdGVtLT5mdW5jLnN0YXRlX2dldCA9IE5VTEw7CisgICAgICAgICAgICBsaXN0X2l0ZW0t
PmZ1bmMuZGVsID0gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGl0ZW1fY291bnQgPSBlaW5h
X2xpc3RfY291bnQobGlzdCk7CisgICAgICAgIGluZm8oIm9uX25hdmlnYXRpb25fYnV0dG9uX2xv
bmdwcmVzcyA6IEl0ZW0gY291bnQgPSAlZCBmb3J3YXJkX25hdmlnYXRpb25fZW5hYmxlZCA9ICVk
IiwgaXRlbV9jb3VudCwgZm9yd2FyZF9uYXZpZ2F0aW9uX2VuYWJsZWQpOworCisgICAgICAgIGZv
ciAoaW5kZXggPSAwOyBpbmRleCA8IGl0ZW1fY291bnQ7IGluZGV4KyspIHsKKyAgICAgICAgICAg
IHRpdGxlID0gZXdrX2JhY2tfZm9yd2FyZF9saXN0X2l0ZW1fdGl0bGVfZ2V0KGVpbmFfbGlzdF9u
dGgobGlzdCwgaW5kZXgpKTsKKyAgICAgICAgICAgIGluZm8oIiB0aXRsZSA9ICVzIiwgdGl0bGUp
OworICAgICAgICAgICAgZWxtX2dlbmxpc3RfaXRlbV9hcHBlbmQod2luZG93LT5oaXN0b3J5Lmhp
c3RvcnlfbGlzdCwgbGlzdF9pdGVtLCAodm9pZCopKHRpdGxlKSwgTlVMTCwgRUxNX0dFTkxJU1Rf
SVRFTV9OT05FLCBvbl9saXN0X2l0ZW1fc2VsZWN0LCB1c2VyX2RhdGEpOworICAgICAgICB9CisK
KyAgICAgICAgaWYgKGl0ZW1fY291bnQgPiAwKSB7CisgICAgICAgICAgICBldmFzX29iamVjdF9n
ZW9tZXRyeV9nZXQod2luZG93LT5lbG1fd2luZG93LCAmeCwgJnksICZ3aWR0aCwgJmhlaWdodCk7
CisgICAgICAgICAgICBlbG1fbGlzdF9nbyh3aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9saXN0KTsK
KyAgICAgICAgICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZSh3aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9i
b3ggLCB3aWR0aCAvIDMgLCBMSVNUX0lURU1fSEVJR0hUICogaXRlbV9jb3VudCk7CisKKyAgICAg
ICAgICAgIGlmIChmb3J3YXJkX25hdmlnYXRpb25fZW5hYmxlZCkgeworICAgICAgICAgICAgICAg
IGV2YXNfb2JqZWN0X21vdmUod2luZG93LT5oaXN0b3J5Lmhpc3RvcnlfYm94ICwgeCtUT09MX0JB
Ul9CVVRUT05fU0laRSsxLCB5K1RPT0xfQkFSX0JVVFRPTl9TSVpFKTsKKyAgICAgICAgICAgICAg
ICBldmFzX29iamVjdF9tb3ZlKHdpbmRvdy0+aGlzdG9yeS5oaXN0b3J5X2xpc3QgLCB4K1RPT0xf
QkFSX0JVVFRPTl9TSVpFKzEsIHkrVE9PTF9CQVJfQlVUVE9OX1NJWkUpOyAgCisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGV2YXNfb2JqZWN0X21vdmUod2luZG93LT5oaXN0
b3J5Lmhpc3RvcnlfYm94ICwgeCwgeStUT09MX0JBUl9CVVRUT05fU0laRSk7CisgICAgICAgICAg
ICAgICAgZXZhc19vYmplY3RfbW92ZSh3aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9saXN0ICwgeCwg
eStUT09MX0JBUl9CVVRUT05fU0laRSk7ICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgICAgICBlbG1fZ2VubGlzdF9tb2RlX3NldCh3aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9saXN0
LCBFTE1fTElTVF9DT01QUkVTUyk7CisgICAgICAgICAgICBldmFzX29iamVjdF9zaG93KHdpbmRv
dy0+aGlzdG9yeS5oaXN0b3J5X2JveCk7CisgICAgICAgICAgICBldmFzX29iamVjdF9zaG93KHdp
bmRvdy0+aGlzdG9yeS5oaXN0b3J5X2xpc3QpOworICAgICAgICAgICAgZXZhc19vYmplY3RfZm9j
dXNfc2V0KHdpbmRvdy0+ZXdrX3ZpZXcsIEVJTkFfRkFMU0UpOworICAgICAgICAgICAgZWxtX29i
amVjdF9mb2N1c19zZXQod2luZG93LT5oaXN0b3J5Lmhpc3RvcnlfbGlzdCwgRUlOQV9UUlVFKTsK
KyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBsb25ncHJlc3NfZW5hYmxlZCA9IEVJTkFfRkFM
U0U7CisKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCitvbl9mb3J3YXJkX2J1dHRvbl9sb25ncHJl
c3Modm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqZm9yd2FyZF9idXR0b24sIHZvaWQgKmV2
ZW50X2luZm8pCit7CisgICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9IChCcm93c2VyX1dpbmRv
dyAqKXVzZXJfZGF0YTsKKworICAgIGZvcndhcmRfbmF2aWdhdGlvbl9lbmFibGVkID0gRUlOQV9U
UlVFOworICAgIG9uX25hdmlnYXRpb25fYnV0dG9uX2xvbmdwcmVzcyh1c2VyX2RhdGEpOworICAg
IAorICAgIGVsbV9vYmplY3RfZGlzYWJsZWRfc2V0KGZvcndhcmRfYnV0dG9uLCAhZXdrX3ZpZXdf
YmFja19wb3NzaWJsZSh3aW5kb3ctPmV3a192aWV3KSk7Cit9CisKK3N0YXRpYyB2b2lkCitvbl9i
YWNrX2J1dHRvbl9sb25ncHJlc3Modm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqYmFja19i
dXR0b24sIHZvaWQgKmV2ZW50X2luZm8pCit7CisgICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9
IChCcm93c2VyX1dpbmRvdyAqKXVzZXJfZGF0YTsKKworICAgIGZvcndhcmRfbmF2aWdhdGlvbl9l
bmFibGVkID0gRUlOQV9GQUxTRTsKKyAgICBvbl9uYXZpZ2F0aW9uX2J1dHRvbl9sb25ncHJlc3Mo
dXNlcl9kYXRhKTsKKyAgICBlbG1fb2JqZWN0X2Rpc2FibGVkX3NldChiYWNrX2J1dHRvbiwgIWV3
a192aWV3X2JhY2tfcG9zc2libGUod2luZG93LT5ld2tfdmlldykpOworfQorCiBzdGF0aWMgdm9p
ZAogcXVpdF9ldmVudF9sb29wKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKm9iaiwgdm9p
ZCAqZXZlbnRfaW5mbykKIHsKQEAgLTE3OTMsNiArMTk0Miw3IEBAIHN0YXRpYyBCcm93c2VyX1dp
bmRvdyAqd2luZG93X2NyZWF0ZShFdmEKICAgICAvKiBDcmVhdGUgQmFjayBidXR0b24gKi8KICAg
ICB3aW5kb3ctPmJhY2tfYnV0dG9uID0gY3JlYXRlX3Rvb2xiYXJfYnV0dG9uKHdpbmRvdy0+ZWxt
X3dpbmRvdywgImFycm93X2xlZnQiKTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19h
ZGQod2luZG93LT5iYWNrX2J1dHRvbiwgImNsaWNrZWQiLCBvbl9iYWNrX2J1dHRvbl9jbGlja2Vk
LCB3aW5kb3cpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmJh
Y2tfYnV0dG9uLCAicmVwZWF0ZWQiLCBvbl9iYWNrX2J1dHRvbl9sb25ncHJlc3MsIHdpbmRvdyk7
CiAgICAgZWxtX29iamVjdF9kaXNhYmxlZF9zZXQod2luZG93LT5iYWNrX2J1dHRvbiwgRUlOQV9U
UlVFKTsKICAgICBldmFzX29iamVjdF9zaXplX2hpbnRfd2VpZ2h0X3NldCh3aW5kb3ctPmJhY2tf
YnV0dG9uLCAwLjAsIEVWQVNfSElOVF9FWFBBTkQpOwogICAgIGV2YXNfb2JqZWN0X3NpemVfaGlu
dF9hbGlnbl9zZXQod2luZG93LT5iYWNrX2J1dHRvbiwgMC4wLCAwLjUpOwpAQCAtMTgwMiw2ICsx
OTUyLDcgQEAgc3RhdGljIEJyb3dzZXJfV2luZG93ICp3aW5kb3dfY3JlYXRlKEV2YQogICAgIC8q
IENyZWF0ZSBGb3J3YXJkIGJ1dHRvbiAqLwogICAgIHdpbmRvdy0+Zm9yd2FyZF9idXR0b24gPSBj
cmVhdGVfdG9vbGJhcl9idXR0b24od2luZG93LT5lbG1fd2luZG93LCAiYXJyb3dfcmlnaHQiKTsK
ICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2luZG93LT5mb3J3YXJkX2J1dHRv
biwgImNsaWNrZWQiLCBvbl9mb3J3YXJkX2J1dHRvbl9jbGlja2VkLCB3aW5kb3cpOworICAgIGV2
YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmZvcndhcmRfYnV0dG9uLCAicmVw
ZWF0ZWQiLCBvbl9mb3J3YXJkX2J1dHRvbl9sb25ncHJlc3MsIHdpbmRvdyk7CiAgICAgZWxtX29i
amVjdF9kaXNhYmxlZF9zZXQod2luZG93LT5mb3J3YXJkX2J1dHRvbiwgRUlOQV9UUlVFKTsKICAg
ICBldmFzX29iamVjdF9zaXplX2hpbnRfd2VpZ2h0X3NldCh3aW5kb3ctPmZvcndhcmRfYnV0dG9u
LCAwLjAsIEVWQVNfSElOVF9FWFBBTkQpOwogICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF9hbGln
bl9zZXQod2luZG93LT5mb3J3YXJkX2J1dHRvbiwgMC4wLCAwLjUpOwpAQCAtMTg5NSw2ICsyMDQ2
LDE4IEBAIHN0YXRpYyBCcm93c2VyX1dpbmRvdyAqd2luZG93X2NyZWF0ZShFdmEKICAgICBldmFz
X29iamVjdF9zaXplX2hpbnRfbWluX3NldCh3aW5kb3ctPnNlYXJjaC5jbG9zZV9idXR0b24sIFNF
QVJDSF9CVVRUT05fU0laRSwgU0VBUkNIX0JVVFRPTl9TSVpFKTsKICAgICBlbG1fYm94X3BhY2tf
ZW5kKHdpbmRvdy0+c2VhcmNoLnNlYXJjaF9iYXIsIHdpbmRvdy0+c2VhcmNoLmNsb3NlX2J1dHRv
bik7CiAKKyAgICAvKiBDcmVhdGUgaGlzdG9yeSBib3ggKi8KKyAgICB3aW5kb3ctPmhpc3Rvcnku
aGlzdG9yeV9ib3ggPSBlbG1fYm94X2FkZCh3aW5kb3ctPmVsbV93aW5kb3cpOworICAgIGV2YXNf
b2JqZWN0X3NpemVfaGludF9hc3BlY3Rfc2V0KHdpbmRvdy0+aGlzdG9yeS5oaXN0b3J5X2JveCwg
RVZBU19BU1BFQ1RfQ09OVFJPTF9WRVJUSUNBTCwgMSwgMSk7CisgICAgZXZhc19vYmplY3Rfc2l6
ZV9oaW50X3dlaWdodF9zZXQod2luZG93LT5oaXN0b3J5Lmhpc3RvcnlfYm94LCBFVkFTX0hJTlRf
RVhQQU5EICwgRVZBU19ISU5UX0VYUEFORCk7CisKKyAgICAvKiBDcmVhdGUgaGlzdG9yeSBsaXN0
ICovCisgICAgd2luZG93LT5oaXN0b3J5Lmhpc3RvcnlfbGlzdCA9IGVsbV9nZW5saXN0X2FkZCh3
aW5kb3ctPmVsbV93aW5kb3cpOworICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF93ZWlnaHRfc2V0
KHdpbmRvdy0+aGlzdG9yeS5oaXN0b3J5X2xpc3QsIEVWQVNfSElOVF9FWFBBTkQsIEVWQVNfSElO
VF9FWFBBTkQpOworICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF9hbGlnbl9zZXQod2luZG93LT5o
aXN0b3J5Lmhpc3RvcnlfbGlzdCwgRVZBU19ISU5UX0ZJTEwsIEVWQVNfSElOVF9GSUxMKTsKKyAg
ICBlbG1fd2luX3Jlc2l6ZV9vYmplY3RfYWRkKHdpbmRvdy0+aGlzdG9yeS5oaXN0b3J5X2xpc3Qs
IHdpbmRvdy0+aGlzdG9yeS5oaXN0b3J5X2JveCk7CisgICAgZWxtX2JveF9wYWNrX2VuZCh3aW5k
b3ctPmhpc3RvcnkuaGlzdG9yeV9ib3gsIHdpbmRvdy0+aGlzdG9yeS5oaXN0b3J5X2xpc3QpOwor
ICAgIAogICAgIC8qIENyZWF0ZSBld2tfdmlldyAqLwogICAgIEV3a19WaWV3X1NtYXJ0X0NsYXNz
ICpld2tWaWV3Q2xhc3MgPSBtaW5pQnJvd3NlclZpZXdTbWFydENsYXNzKCk7CiAgICAgZXdrVmll
d0NsYXNzLT5ydW5famF2YXNjcmlwdF9hbGVydCA9IG9uX2phdmFzY3JpcHRfYWxlcnQ7CkBAIC0x
OTg3LDYgKzIxNTAsMTcgQEAgc3RhdGljIEJyb3dzZXJfV2luZG93ICp3aW5kb3dfY3JlYXRlKEV2
YQogICAgIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmV3a192aWV3LCBF
VkFTX0NBTExCQUNLX01PVVNFX09VVCwgb25fbW91c2Vfb3V0LCB3aW5kb3cpOwogICAgIGV2YXNf
b2JqZWN0X2V2ZW50X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmV3a192aWV3LCBFVkFTX0NBTExCQUNL
X01PVVNFX01PVkUsIG9uX21vdXNlX21vdmUsIHdpbmRvdyk7CiAgICAgZXZhc19vYmplY3RfZXZl
bnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+ZWxtX3dpbmRvdywgRVZBU19DQUxMQkFDS19SRVNJWkUs
IG9uX3dpbmRvd19yZXNpemUsIHdpbmRvdyk7CisgICAgCisgICAgRWluYV9Cb29sIGF1dG9fcmVw
ZWF0ID0gZWxtX2J1dHRvbl9hdXRvcmVwZWF0X2dldCh3aW5kb3ctPmJhY2tfYnV0dG9uKTsKKyAg
ICBpZiAoYXV0b19yZXBlYXQpIHsKKyAgICAgICAgZWxtX2J1dHRvbl9hdXRvcmVwZWF0X2luaXRp
YWxfdGltZW91dF9zZXQod2luZG93LT5iYWNrX2J1dHRvbiwgTE9OR1BSRVNTX0lOVEVSVkFMX1NF
Q09ORFMpOworICAgICAgICBlbG1fYnV0dG9uX2F1dG9yZXBlYXRfaW5pdGlhbF90aW1lb3V0X3Nl
dCh3aW5kb3ctPmZvcndhcmRfYnV0dG9uLCBMT05HUFJFU1NfSU5URVJWQUxfU0VDT05EUyk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgZWxtX2J1dHRvbl9hdXRvcmVwZWF0X3NldCh3aW5kb3ctPmJh
Y2tfYnV0dG9uLCBFSU5BX1RSVUUpOworICAgICAgICBlbG1fYnV0dG9uX2F1dG9yZXBlYXRfc2V0
KHdpbmRvdy0+Zm9yd2FyZF9idXR0b24sIEVJTkFfVFJVRSk7CisgICAgICAgIGVsbV9idXR0b25f
YXV0b3JlcGVhdF9pbml0aWFsX3RpbWVvdXRfc2V0KHdpbmRvdy0+YmFja19idXR0b24sIExPTkdQ
UkVTU19JTlRFUlZBTF9TRUNPTkRTKTsKKyAgICAgICAgZWxtX2J1dHRvbl9hdXRvcmVwZWF0X2lu
aXRpYWxfdGltZW91dF9zZXQod2luZG93LT5mb3J3YXJkX2J1dHRvbiwgTE9OR1BSRVNTX0lOVEVS
VkFMX1NFQ09ORFMpOworICAgIH0KIAogICAgIHJldHVybiB3aW5kb3c7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236752</attachid>
            <date>2014-08-18 02:57:15 -0700</date>
            <delta_ts>2014-08-19 23:59:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135795-20140818152741.patch</filename>
            <type>text/plain</type>
            <size>13818</size>
            <attacher name="Tanay">tanay.c</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE3MjcwMSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDE0LTA4LTE4ICBUYW5heSBDICA8dGFuYXkuY0BzYW1zdW5nLmNvbT4KKwor
ICAgICAgICBbRUZMXVtXSzJdIE1pbmlicm93c2VyIDogRW5oYW5jZSBhcHBsaWNhdGlvbiB0byBi
ZSBhYmxlIHRvIHN1cHBvcnQgaGlzdG9yeSBsaXN0IG5hdmlnYXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTc5NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWluaUJyb3dzZXIvZWZsL21haW4u
YzogQWRkaW5nIGZ1bmN0aW9uYWxpdHkgZm9yIGxvbmcgcHJlc3MgaGlzdG9yeSBsaXN0IG5hdmln
YXRpb24KKyAgICAgICAgKGhpc3RvcnlfbGlzdF9oaWRlKTogIEZ1bmN0aW9uYWxpdHkgdG8gaGlk
ZSB0aGUgaGlzdG9yeSBsaXN0CisgICAgICAgIChvbl9rZXlfZG93bik6CisgICAgICAgIChvbl9t
b3VzZV9kb3duKToKKyAgICAgICAgKGhpc3RvcnlfbGlzdF9nZXQpOiBSZXR1cm4gdGhlIGNyZWF0
ZWQgbGlzdAorICAgICAgICAob25fYmFja19idXR0b25fY2xpY2tlZCk6CisgICAgICAgIChvbl9m
b3J3YXJkX2J1dHRvbl9jbGlja2VkKToKKyAgICAgICAgKGxpc3RfaXRlbV9sYWJlbF9nZXQpOiBQ
b3B1bGF0ZSBpdGVtIGxhYmVscworICAgICAgICAob25fbGlzdF9pdGVtX3NlbGVjdCk6IE5hdmln
YXRlcyBvbiBzZWxlY3Rpb24gZnJvbSBoaXN0b3J5IGxpc3QKKyAgICAgICAgKG9uX25hdmlnYXRp
b25fYnV0dG9uX2xvbmdwcmVzc19wcm9jZXNzKTogUG9wdWxhdGVzIHRoZSBoaXN0b3J5IGxpc3Qg
YW5kIGRpc3BsYXlzIGl0CisgICAgICAgIChvbl9mb3J3YXJkX2J1dHRvbl9sb25ncHJlc3MpOgor
ICAgICAgICAob25fYmFja19idXR0b25fbG9uZ3ByZXNzKToKKyAgICAgICAgKHdpbmRvd19jcmVh
dGUpOiBBZGQgdGhlIHdpZGdldCBmb3IgaGlzdG9yeSBsaXN0CisKIDIwMTQtMDgtMTggIFJlbmF0
byBOYWd5ICA8bmFneS5yZW5hdG9Ac3R1ZC51LXN6ZWdlZC5odT4KIAogICAgICAgICBtYXN0ZXIu
Y2ZnIHNob3VsZCBoYW5kbGUgc3BlY2lhbCByZXR1cm4gY29kZXMgb2YgcnVuLXBlcmYtdGVzdHMK
SW5kZXg6IFRvb2xzL01pbmlCcm93c2VyL2VmbC9tYWluLmMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
TWluaUJyb3dzZXIvZWZsL21haW4uYwkocmV2aXNpb24gMTcyNjk3KQorKysgVG9vbHMvTWluaUJy
b3dzZXIvZWZsL21haW4uYwkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsOCBAQCBzdGF0aWMg
Y29uc3QgaW50IFNFQVJDSF9CVVRUT05fU0laRSA9IDMwCiBzdGF0aWMgY29uc3QgaW50IE1BWF9T
RUFSQ0hfQ09VTlQgPSAxMDA7CiBzdGF0aWMgY29uc3QgaW50IERFRkFVTFRfU0VBUkNIX0ZMQUdT
ID0gRVdLX0ZJTkRfT1BUSU9OU19TSE9XX0hJR0hMSUdIVCB8IEVXS19GSU5EX09QVElPTlNfQ0FT
RV9JTlNFTlNJVElWRSB8IEVXS19GSU5EX09QVElPTlNfV1JBUF9BUk9VTkQ7CiBzdGF0aWMgY29u
c3QgZG91YmxlIFRPT0xUSVBfREVMQVlfU0VDT05EUyA9IDEuMDsKK3N0YXRpYyBjb25zdCBkb3Vi
bGUgTE9OR1BSRVNTX0lOVEVSVkFMX1NFQ09ORFMgPSAxLjU7CitzdGF0aWMgY29uc3QgZG91Ymxl
IExJU1RfSVRFTV9IRUlHSFQgPSAyNC4zNTsKIAogI2RlZmluZSBpbmZvKGZvcm1hdCwgYXJncy4u
LikgICAgICAgXAogICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtNTYs
NiArNTgsOCBAQCBzdGF0aWMgRWluYV9Cb29sIHdlYl9zZWN1cml0eV9lbmFibGVkID0KIHN0YXRp
YyBFaW5hX0Jvb2wgdG91Y2hfZXZlbnRzX2VuYWJsZWQgPSBFSU5BX0ZBTFNFOwogc3RhdGljIEVp
bmFfQm9vbCBmaXhlZF9sYXlvdXRfZW5hYmxlZCA9IEVJTkFfRkFMU0U7CiBzdGF0aWMgRWluYV9C
b29sIHNlcGFyYXRlZF9wcm9jZXNzX2VuYWJsZWQgPSBFSU5BX0ZBTFNFOworc3RhdGljIEVpbmFf
Qm9vbCBsb25ncHJlc3NfZW5hYmxlZCA9IEVJTkFfRkFMU0U7CitzdGF0aWMgRWluYV9Cb29sIGZv
cndhcmRfbmF2aWdhdGlvbl9lbmFibGVkID0gRUlOQV9GQUxTRTsKIHN0YXRpYyBpbnQgd2luZG93
X3dpZHRoID0gODAwOwogc3RhdGljIGludCB3aW5kb3dfaGVpZ2h0ID0gNjAwOwogLyogRGVmYXVs
dCB2YWx1ZSBvZiBkZXZpY2VfcGl4ZWxfcmF0aW8gaXMgJzAnIHNvIHRoYXQgd2UgZG9uJ3Qgc2V0
IGN1c3RvbSBkZXZpY2UKQEAgLTExMyw2ICsxMTcsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgX0Jyb3dz
ZXJfV2luZG93IHsKICAgICAgICAgRXZhc19PYmplY3QgKmZvcndhcmRfYnV0dG9uOwogICAgICAg
ICBFdmFzX09iamVjdCAqY2xvc2VfYnV0dG9uOwogICAgIH0gc2VhcmNoOworICAgIHN0cnVjdCB7
CisgICAgICAgIEV2YXNfT2JqZWN0ICpoaXN0b3J5X2JveDsKKyAgICAgICAgRXZhc19PYmplY3Qg
Kmhpc3RvcnlfbGlzdDsKKyAgICB9IGhpc3Rvcnk7CiAgICAgaW50IGN1cnJlbnRfem9vbV9sZXZl
bDsgCiAgICAgVG9vbHRpcF9JbmZvcm1hdGlvbiB0b29sdGlwOwogICAgIENvbG9yX1NlbGVjdG9y
IGNvbG9yX3NlbGVjdG9yOwpAQCAtMzk4LDYgKzQwNiwyNCBAQCBzZWFyY2hfYm94X2hpZGUoQnJv
d3Nlcl9XaW5kb3cgKndpbmRvdykKICAgICBldmFzX29iamVjdF9mb2N1c19zZXQod2luZG93LT5l
d2tfdmlldywgRUlOQV9UUlVFKTsKIH0KIAorc3RhdGljIHZvaWQgCitoaXN0b3J5X2xpc3RfaGlk
ZShCcm93c2VyX1dpbmRvdyAqd2luZG93KQoreworICAgIC8qIEhpZGUgYW5kIGNsZWFyIHRoZSBo
aXN0b3J5IGxpc3QgKi8KKyAgICBldmFzX29iamVjdF9oaWRlKHdpbmRvdy0+aGlzdG9yeS5oaXN0
b3J5X2JveCk7CisgICAgZXZhc19vYmplY3RfaGlkZSh3aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9s
aXN0KTsKKyAgICBlbG1fZ2VubGlzdF9jbGVhcih3aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9saXN0
KTsKKworICAgIC8qIEdpdmUgZm9jdXMgYmFjayB0byB0aGUgdmlldyAqLworICAgIGVsbV9vYmpl
Y3RfZm9jdXNfc2V0KHdpbmRvdy0+aGlzdG9yeS5oaXN0b3J5X2JveCwgRUlOQV9GQUxTRSk7Cisg
ICAgZWxtX29iamVjdF9mb2N1c19zZXQod2luZG93LT5oaXN0b3J5Lmhpc3RvcnlfbGlzdCwgRUlO
QV9GQUxTRSk7CisgICAgZXZhc19vYmplY3RfZm9jdXNfc2V0KHdpbmRvdy0+ZXdrX3ZpZXcsIEVJ
TkFfVFJVRSk7CisKKyAgICAvKiBSZXNldCBmbGFncyAqLworICAgIGxvbmdwcmVzc19lbmFibGVk
ID0gRUlOQV9GQUxTRTsKKyAgICBmb3J3YXJkX25hdmlnYXRpb25fZW5hYmxlZCA9IEVJTkFfRkFM
U0U7Cit9IAorCiBzdGF0aWMgdm9pZCBzYXZlX3BhZ2VfY29udGVudHNfY2FsbGJhY2soRXdrX1Bh
Z2VfQ29udGVudHNfVHlwZSB0eXBlLCBjb25zdCBjaGFyICpkYXRhLCB2b2lkICp1c2VyX2RhdGEp
CiB7CiAgICAgRWV0X0ZpbGUgKmVmOwpAQCAtNTA1LDYgKzUzMSw4IEBAIG9uX2tleV9kb3duKHZv
aWQgKnVzZXJfZGF0YSwgRXZhcyAqZSwgRXYKICAgICB9IGVsc2UgaWYgKCFzdHJjbXAoZXYtPmtl
eSwgIkVzY2FwZSIpKSB7CiAgICAgICAgIGlmIChldmFzX29iamVjdF92aXNpYmxlX2dldCh3aW5k
b3ctPnNlYXJjaC5zZWFyY2hfYmFyKSkKICAgICAgICAgICAgIHNlYXJjaF9ib3hfaGlkZSh3aW5k
b3cpOworICAgICAgICBlbHNlIGlmIChldmFzX29iamVjdF92aXNpYmxlX2dldCh3aW5kb3ctPmhp
c3RvcnkuaGlzdG9yeV9ib3gpKQorICAgICAgICAgICAgaGlzdG9yeV9saXN0X2hpZGUod2luZG93
KTsKICAgICAgICAgZWxzZSBpZiAoZWxtX3dpbl9mdWxsc2NyZWVuX2dldCh3aW5kb3ctPmVsbV93
aW5kb3cpKQogICAgICAgICAgICAgZXdrX3ZpZXdfZnVsbHNjcmVlbl9leGl0KGV3a192aWV3KTsK
ICAgICB9IGVsc2UgaWYgKGN0cmxQcmVzc2VkICYmICghc3RyY21wKGV2LT5rZXksICJtaW51cyIp
IHx8ICFzdHJjbXAoZXYtPmtleSwgIktQX1N1YnRyYWN0IikpKSB7CkBAIC01NjMsNiArNTkxLDgg
QEAgb25fbW91c2VfZG93bih2b2lkICp1c2VyX2RhdGEsIEV2YXMgKmUsCiAgICAgLyogQ2xlYXIg
c2VsZWN0aW9uIGZyb20gdGhlIFVSTCBiYXIgKi8KICAgICBlbG1fZW50cnlfc2VsZWN0X25vbmUo
d2luZG93LT51cmxfYmFyKTsKIAorICAgIGlmIChsb25ncHJlc3NfZW5hYmxlZCkKKyAgICAgICAg
aGlzdG9yeV9saXN0X2hpZGUod2luZG93KTsKICAgICBpZiAoZXYtPmJ1dHRvbiA9PSAxKQogICAg
ICAgICB2aWV3X2ZvY3VzX3NldCh3aW5kb3csIEVJTkFfVFJVRSk7CiAgICAgZWxzZSBpZiAoZXYt
PmJ1dHRvbiA9PSAyKQpAQCAtOTQ3LDYgKzk3NywyMyBAQCB1cmxfZnJvbV91c2VyX2lucHV0KGNv
bnN0IGNoYXIgKmFyZykKICAgICByZXR1cm4gdXJsOwogfQogCitzdGF0aWMgRWluYV9MaXN0ICoK
K2hpc3RvcnlfbGlzdF9nZXQodm9pZCAqdXNlcl9kYXRhKQoreworICAgIEJyb3dzZXJfV2luZG93
ICp3aW5kb3cgPSAoQnJvd3Nlcl9XaW5kb3cgKil1c2VyX2RhdGE7CisgICAgCisgICAgRWluYV9M
aXN0ICpoaXN0b3J5X2l0ZW1zID0gTlVMTDsKKyAgICBFd2tfQmFja19Gb3J3YXJkX0xpc3QgKmxp
c3QgPSBld2tfdmlld19iYWNrX2ZvcndhcmRfbGlzdF9nZXQod2luZG93LT5ld2tfdmlldyk7Cisg
ICAgY29uc3Qgc2l6ZV90IGNvdW50ID0gZXdrX2JhY2tfZm9yd2FyZF9saXN0X2NvdW50KGxpc3Qp
OworICAgIAorICAgIGlmIChmb3J3YXJkX25hdmlnYXRpb25fZW5hYmxlZCkKKyAgICAgICAgaGlz
dG9yeV9pdGVtcyA9IGV3a19iYWNrX2ZvcndhcmRfbGlzdF9uX2ZvcndhcmRfaXRlbXNfY29weShs
aXN0LCBjb3VudCk7IAorICAgIGVsc2UKKyAgICAgICAgaGlzdG9yeV9pdGVtcyA9IGV3a19iYWNr
X2ZvcndhcmRfbGlzdF9uX2JhY2tfaXRlbXNfY29weShsaXN0LCBjb3VudCk7CisgICAgCisgICAg
cmV0dXJuIGhpc3RvcnlfaXRlbXM7Cit9CisKIHN0YXRpYyB2b2lkCiBvbl91cmxfYmFyX2FjdGl2
YXRlZCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICp1cmxfYmFyLCB2b2lkICpldmVudF9p
bmZvKQogewpAQCAtMTAxMiwyMSArMTA1OSwyNSBAQCBvbl9zZWFyY2hfZmllbGRfY2xpY2tlZCh2
b2lkICp1c2VyX2RhdGEsCiBzdGF0aWMgdm9pZAogb25fYmFja19idXR0b25fY2xpY2tlZCh2b2lk
ICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpiYWNrX2J1dHRvbiwgdm9pZCAqZXZlbnRfaW5mbykK
IHsKLSAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0gKEJyb3dzZXJfV2luZG93ICopdXNlcl9k
YXRhOworICAgIGlmICghbG9uZ3ByZXNzX2VuYWJsZWQpIHsKKyAgICAgICAgQnJvd3Nlcl9XaW5k
b3cgKndpbmRvdyA9IChCcm93c2VyX1dpbmRvdyAqKXVzZXJfZGF0YTsKIAotICAgIGV3a192aWV3
X2JhY2sod2luZG93LT5ld2tfdmlldyk7Ci0gICAgLyogVXBkYXRlIGJhY2sgYnV0dG9uIHN0YXRl
ICovCi0gICAgZWxtX29iamVjdF9kaXNhYmxlZF9zZXQoYmFja19idXR0b24sICFld2tfdmlld19i
YWNrX3Bvc3NpYmxlKHdpbmRvdy0+ZXdrX3ZpZXcpKTsKKyAgICAgICAgZXdrX3ZpZXdfYmFjayh3
aW5kb3ctPmV3a192aWV3KTsKKyAgICAgICAgLyogVXBkYXRlIGJhY2sgYnV0dG9uIHN0YXRlICov
CisgICAgICAgIGVsbV9vYmplY3RfZGlzYWJsZWRfc2V0KGJhY2tfYnV0dG9uLCAhZXdrX3ZpZXdf
YmFja19wb3NzaWJsZSh3aW5kb3ctPmV3a192aWV3KSk7CisgICAgfSAgICAKIH0KIAogc3RhdGlj
IHZvaWQKIG9uX2ZvcndhcmRfYnV0dG9uX2NsaWNrZWQodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09i
amVjdCAqZm9yd2FyZF9idXR0b24sIHZvaWQgKmV2ZW50X2luZm8pCiB7Ci0gICAgQnJvd3Nlcl9X
aW5kb3cgKndpbmRvdyA9IChCcm93c2VyX1dpbmRvdyAqKXVzZXJfZGF0YTsKKyAgICBpZiAoIWxv
bmdwcmVzc19lbmFibGVkKSB7ICAgICAgICAKKyAgICAgICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRv
dyA9IChCcm93c2VyX1dpbmRvdyAqKXVzZXJfZGF0YTsKIAotICAgIGV3a192aWV3X2ZvcndhcmQo
d2luZG93LT5ld2tfdmlldyk7Ci0gICAgLyogVXBkYXRlIGZvcndhcmQgYnV0dG9uIHN0YXRlICov
Ci0gICAgZWxtX29iamVjdF9kaXNhYmxlZF9zZXQoZm9yd2FyZF9idXR0b24sICFld2tfdmlld19m
b3J3YXJkX3Bvc3NpYmxlKHdpbmRvdy0+ZXdrX3ZpZXcpKTsKKyAgICAgICAgZXdrX3ZpZXdfZm9y
d2FyZCh3aW5kb3ctPmV3a192aWV3KTsKKyAgICAgICAgLyogVXBkYXRlIGZvcndhcmQgYnV0dG9u
IHN0YXRlICovCisgICAgICAgIGVsbV9vYmplY3RfZGlzYWJsZWRfc2V0KGZvcndhcmRfYnV0dG9u
LCAhZXdrX3ZpZXdfZm9yd2FyZF9wb3NzaWJsZSh3aW5kb3ctPmV3a192aWV3KSk7CisgICAgfQog
fQogCiBzdGF0aWMgdm9pZApAQCAtMTA3Myw2ICsxMTI0LDEwOCBAQCBvbl9yZWZyZXNoX2J1dHRv
bl9jbGlja2VkKHZvaWQgKnVzZXJfZGF0CiAgICAgfQogfQogCitzdGF0aWMgY2hhciAqCitsaXN0
X2l0ZW1fbGFiZWxfZ2V0KHZvaWQgKmRhdGEsIEV2YXNfT2JqZWN0ICpvYmosIGNvbnN0IGNoYXIq
IHBhcnQpCit7CisgICAgaW50IGxlbiA9IHN0cmxlbigoY2hhciopZGF0YSk7CisgICAgY2hhciog
YnVmID0gKGNoYXIqKW1hbGxvYyhzaXplb2YoY2hhcikqKGxlbisxKSk7CisgICAgc25wcmludGYo
YnVmLCBsZW4rMSwgIiVzIiwgKGNoYXIqKWRhdGEpOworICAgIHJldHVybiBzdHJkdXAoYnVmKTsK
K30KKworc3RhdGljIHZvaWQKK29uX2xpc3RfaXRlbV9zZWxlY3Qodm9pZCAqdXNlcl9kYXRhLCBF
dmFzX09iamVjdCAqb2JqLCB2b2lkICpldmVudF9pbmZvKQoreworICAgIEJyb3dzZXJfV2luZG93
ICp3aW5kb3cgPSAoQnJvd3Nlcl9XaW5kb3cgKikodXNlcl9kYXRhKTsKKyAgICBFbG1fT2JqZWN0
X0l0ZW0gKmxpc3RfaXRlbSA9IGV2ZW50X2luZm87CisgICAgaW50IGl0ZW1faW5kZXggPSBlbG1f
Z2VubGlzdF9pdGVtX2luZGV4X2dldChsaXN0X2l0ZW0pOworCisgICAgZXdrX3ZpZXdfbmF2aWdh
dGVfdG8od2luZG93LT5ld2tfdmlldywgZWluYV9saXN0X250aChoaXN0b3J5X2xpc3RfZ2V0KHVz
ZXJfZGF0YSksIGl0ZW1faW5kZXgtMSkpOyAKKworICAgIGhpc3RvcnlfbGlzdF9oaWRlKHdpbmRv
dyk7Cit9CisKK3N0YXRpYyB2b2lkCitvbl9uYXZpZ2F0aW9uX2J1dHRvbl9sb25ncHJlc3NfcHJv
Y2Vzcyh2b2lkICp1c2VyX2RhdGEpCit7CisgICAgaWYgKCFsb25ncHJlc3NfZW5hYmxlZCkgewor
ICAgICAgICBsb25ncHJlc3NfZW5hYmxlZCA9IEVJTkFfVFJVRTsKKyAgICAgICAgQnJvd3Nlcl9X
aW5kb3cgKndpbmRvdyA9IChCcm93c2VyX1dpbmRvdyAqKXVzZXJfZGF0YTsKKyAgICAgICAgCisg
ICAgICAgIEVpbmFfTGlzdCogbGlzdCA9IGhpc3RvcnlfbGlzdF9nZXQodXNlcl9kYXRhKTsKKwor
ICAgICAgICBzdGF0aWMgRWxtX0dlbmxpc3RfSXRlbV9DbGFzcyAqbGlzdF9pdGVtID0gTlVMTDsK
KyAgICAgICAgY29uc3QgY2hhciAqdGl0bGUgPSBOVUxMOworICAgICAgICBpbnQgaXRlbV9jb3Vu
dDsKKyAgICAgICAgaW50IHg7CisgICAgICAgIGludCB5OworICAgICAgICBpbnQgd2lkdGg7Cisg
ICAgICAgIGludCBoZWlnaHQ7CisgICAgICAgIHNpemVfdCBpbmRleDsKKworICAgICAgICBpZiAo
IWxpc3RfaXRlbSkgeworICAgICAgICAgICAgbGlzdF9pdGVtID0gZWxtX2dlbmxpc3RfaXRlbV9j
bGFzc19uZXcoKTsKKyAgICAgICAgICAgIGxpc3RfaXRlbS0+aXRlbV9zdHlsZSA9ICJkZWZhdWx0
IjsKKyAgICAgICAgICAgIGxpc3RfaXRlbS0+ZnVuYy50ZXh0X2dldCA9IGxpc3RfaXRlbV9sYWJl
bF9nZXQ7CisgICAgICAgICAgICBsaXN0X2l0ZW0tPmZ1bmMuY29udGVudF9nZXQgPSBOVUxMOwor
ICAgICAgICAgICAgbGlzdF9pdGVtLT5mdW5jLnN0YXRlX2dldCA9IE5VTEw7CisgICAgICAgICAg
ICBsaXN0X2l0ZW0tPmZ1bmMuZGVsID0gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGl0ZW1f
Y291bnQgPSBlaW5hX2xpc3RfY291bnQobGlzdCk7CisgICAgICAgIGluZm8oIm9uX25hdmlnYXRp
b25fYnV0dG9uX2xvbmdwcmVzc19wcm9jZXNzIDogSXRlbSBjb3VudCA9ICVkIGZvcndhcmRfbmF2
aWdhdGlvbl9lbmFibGVkID0gJWQiLCBpdGVtX2NvdW50LCBmb3J3YXJkX25hdmlnYXRpb25fZW5h
YmxlZCk7CisKKyAgICAgICAgZm9yIChpbmRleCA9IDA7IGluZGV4IDwgaXRlbV9jb3VudDsgaW5k
ZXgrKykgeworICAgICAgICAgICAgdGl0bGUgPSBld2tfYmFja19mb3J3YXJkX2xpc3RfaXRlbV90
aXRsZV9nZXQoZWluYV9saXN0X250aChsaXN0LCBpbmRleCkpOworICAgICAgICAgICAgaW5mbygi
IHRpdGxlID0gJXMiLCB0aXRsZSk7CisgICAgICAgICAgICBlbG1fZ2VubGlzdF9pdGVtX2FwcGVu
ZCh3aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9saXN0LCBsaXN0X2l0ZW0sICh2b2lkKikodGl0bGUp
LCBOVUxMLCBFTE1fR0VOTElTVF9JVEVNX05PTkUsIG9uX2xpc3RfaXRlbV9zZWxlY3QsIHVzZXJf
ZGF0YSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaXRlbV9jb3VudCA+IDApIHsKKyAgICAg
ICAgICAgIGV2YXNfb2JqZWN0X2dlb21ldHJ5X2dldCh3aW5kb3ctPmVsbV93aW5kb3csICZ4LCAm
eSwgJndpZHRoLCAmaGVpZ2h0KTsKKyAgICAgICAgICAgIGVsbV9saXN0X2dvKHdpbmRvdy0+aGlz
dG9yeS5oaXN0b3J5X2xpc3QpOworICAgICAgICAgICAgZXZhc19vYmplY3RfcmVzaXplKHdpbmRv
dy0+aGlzdG9yeS5oaXN0b3J5X2JveCAsIHdpZHRoIC8gMyAsIExJU1RfSVRFTV9IRUlHSFQgKiBp
dGVtX2NvdW50KTsKKworICAgICAgICAgICAgaWYgKGZvcndhcmRfbmF2aWdhdGlvbl9lbmFibGVk
KSB7CisgICAgICAgICAgICAgICAgZXZhc19vYmplY3RfbW92ZSh3aW5kb3ctPmhpc3RvcnkuaGlz
dG9yeV9ib3ggLCB4K1RPT0xfQkFSX0JVVFRPTl9TSVpFKzEsIHkrVE9PTF9CQVJfQlVUVE9OX1NJ
WkUpOworICAgICAgICAgICAgICAgIGV2YXNfb2JqZWN0X21vdmUod2luZG93LT5oaXN0b3J5Lmhp
c3RvcnlfbGlzdCAsIHgrVE9PTF9CQVJfQlVUVE9OX1NJWkUrMSwgeStUT09MX0JBUl9CVVRUT05f
U0laRSk7ICAKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZXZhc19vYmpl
Y3RfbW92ZSh3aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9ib3ggLCB4LCB5K1RPT0xfQkFSX0JVVFRP
Tl9TSVpFKTsKKyAgICAgICAgICAgICAgICBldmFzX29iamVjdF9tb3ZlKHdpbmRvdy0+aGlzdG9y
eS5oaXN0b3J5X2xpc3QgLCB4LCB5K1RPT0xfQkFSX0JVVFRPTl9TSVpFKTsgIAorICAgICAgICAg
ICAgfQorICAgICAgICAKKyAgICAgICAgICAgIGVsbV9nZW5saXN0X21vZGVfc2V0KHdpbmRvdy0+
aGlzdG9yeS5oaXN0b3J5X2xpc3QsIEVMTV9MSVNUX0NPTVBSRVNTKTsKKyAgICAgICAgICAgIGV2
YXNfb2JqZWN0X3Nob3cod2luZG93LT5oaXN0b3J5Lmhpc3RvcnlfYm94KTsKKyAgICAgICAgICAg
IGV2YXNfb2JqZWN0X3Nob3cod2luZG93LT5oaXN0b3J5Lmhpc3RvcnlfbGlzdCk7CisgICAgICAg
ICAgICBldmFzX29iamVjdF9mb2N1c19zZXQod2luZG93LT5ld2tfdmlldywgRUlOQV9GQUxTRSk7
CisgICAgICAgICAgICBlbG1fb2JqZWN0X2ZvY3VzX3NldCh3aW5kb3ctPmhpc3RvcnkuaGlzdG9y
eV9saXN0LCBFSU5BX1RSVUUpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIGxvbmdwcmVz
c19lbmFibGVkID0gRUlOQV9GQUxTRTsKKworICAgIH0KK30KKworc3RhdGljIHZvaWQKK29uX2Zv
cndhcmRfYnV0dG9uX2xvbmdwcmVzcyh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpmb3J3
YXJkX2J1dHRvbiwgdm9pZCAqZXZlbnRfaW5mbykKK3sKKyAgICBCcm93c2VyX1dpbmRvdyAqd2lu
ZG93ID0gKEJyb3dzZXJfV2luZG93ICopdXNlcl9kYXRhOworCisgICAgZm9yd2FyZF9uYXZpZ2F0
aW9uX2VuYWJsZWQgPSBFSU5BX1RSVUU7CisgICAgb25fbmF2aWdhdGlvbl9idXR0b25fbG9uZ3By
ZXNzX3Byb2Nlc3ModXNlcl9kYXRhKTsKKyAgICAKKyAgICBlbG1fb2JqZWN0X2Rpc2FibGVkX3Nl
dChmb3J3YXJkX2J1dHRvbiwgIWV3a192aWV3X2JhY2tfcG9zc2libGUod2luZG93LT5ld2tfdmll
dykpOworfQorCitzdGF0aWMgdm9pZAorb25fYmFja19idXR0b25fbG9uZ3ByZXNzKHZvaWQgKnVz
ZXJfZGF0YSwgRXZhc19PYmplY3QgKmJhY2tfYnV0dG9uLCB2b2lkICpldmVudF9pbmZvKQorewor
ICAgIEJyb3dzZXJfV2luZG93ICp3aW5kb3cgPSAoQnJvd3Nlcl9XaW5kb3cgKil1c2VyX2RhdGE7
CisKKyAgICBmb3J3YXJkX25hdmlnYXRpb25fZW5hYmxlZCA9IEVJTkFfRkFMU0U7CisgICAgb25f
bmF2aWdhdGlvbl9idXR0b25fbG9uZ3ByZXNzX3Byb2Nlc3ModXNlcl9kYXRhKTsKKyAgICBlbG1f
b2JqZWN0X2Rpc2FibGVkX3NldChiYWNrX2J1dHRvbiwgIWV3a192aWV3X2JhY2tfcG9zc2libGUo
d2luZG93LT5ld2tfdmlldykpOworfQorCiBzdGF0aWMgdm9pZAogcXVpdF9ldmVudF9sb29wKHZv
aWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKm9iaiwgdm9pZCAqZXZlbnRfaW5mbykKIHsKQEAg
LTE4MDQsNiArMTk1Nyw3IEBAIHN0YXRpYyBCcm93c2VyX1dpbmRvdyAqd2luZG93X2NyZWF0ZShF
dmEKICAgICAvKiBDcmVhdGUgQmFjayBidXR0b24gKi8KICAgICB3aW5kb3ctPmJhY2tfYnV0dG9u
ID0gY3JlYXRlX3Rvb2xiYXJfYnV0dG9uKHdpbmRvdy0+ZWxtX3dpbmRvdywgImFycm93X2xlZnQi
KTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2luZG93LT5iYWNrX2J1dHRv
biwgImNsaWNrZWQiLCBvbl9iYWNrX2J1dHRvbl9jbGlja2VkLCB3aW5kb3cpOworICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmJhY2tfYnV0dG9uLCAicmVwZWF0ZWQi
LCBvbl9iYWNrX2J1dHRvbl9sb25ncHJlc3MsIHdpbmRvdyk7CiAgICAgZWxtX29iamVjdF9kaXNh
YmxlZF9zZXQod2luZG93LT5iYWNrX2J1dHRvbiwgRUlOQV9UUlVFKTsKICAgICBldmFzX29iamVj
dF9zaXplX2hpbnRfd2VpZ2h0X3NldCh3aW5kb3ctPmJhY2tfYnV0dG9uLCAwLjAsIEVWQVNfSElO
VF9FWFBBTkQpOwogICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF9hbGlnbl9zZXQod2luZG93LT5i
YWNrX2J1dHRvbiwgMC4wLCAwLjUpOwpAQCAtMTgxMyw2ICsxOTY3LDcgQEAgc3RhdGljIEJyb3dz
ZXJfV2luZG93ICp3aW5kb3dfY3JlYXRlKEV2YQogICAgIC8qIENyZWF0ZSBGb3J3YXJkIGJ1dHRv
biAqLwogICAgIHdpbmRvdy0+Zm9yd2FyZF9idXR0b24gPSBjcmVhdGVfdG9vbGJhcl9idXR0b24o
d2luZG93LT5lbG1fd2luZG93LCAiYXJyb3dfcmlnaHQiKTsKICAgICBldmFzX29iamVjdF9zbWFy
dF9jYWxsYmFja19hZGQod2luZG93LT5mb3J3YXJkX2J1dHRvbiwgImNsaWNrZWQiLCBvbl9mb3J3
YXJkX2J1dHRvbl9jbGlja2VkLCB3aW5kb3cpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxi
YWNrX2FkZCh3aW5kb3ctPmZvcndhcmRfYnV0dG9uLCAicmVwZWF0ZWQiLCBvbl9mb3J3YXJkX2J1
dHRvbl9sb25ncHJlc3MsIHdpbmRvdyk7CiAgICAgZWxtX29iamVjdF9kaXNhYmxlZF9zZXQod2lu
ZG93LT5mb3J3YXJkX2J1dHRvbiwgRUlOQV9UUlVFKTsKICAgICBldmFzX29iamVjdF9zaXplX2hp
bnRfd2VpZ2h0X3NldCh3aW5kb3ctPmZvcndhcmRfYnV0dG9uLCAwLjAsIEVWQVNfSElOVF9FWFBB
TkQpOwogICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF9hbGlnbl9zZXQod2luZG93LT5mb3J3YXJk
X2J1dHRvbiwgMC4wLCAwLjUpOwpAQCAtMTkwNiw2ICsyMDYxLDE4IEBAIHN0YXRpYyBCcm93c2Vy
X1dpbmRvdyAqd2luZG93X2NyZWF0ZShFdmEKICAgICBldmFzX29iamVjdF9zaXplX2hpbnRfbWlu
X3NldCh3aW5kb3ctPnNlYXJjaC5jbG9zZV9idXR0b24sIFNFQVJDSF9CVVRUT05fU0laRSwgU0VB
UkNIX0JVVFRPTl9TSVpFKTsKICAgICBlbG1fYm94X3BhY2tfZW5kKHdpbmRvdy0+c2VhcmNoLnNl
YXJjaF9iYXIsIHdpbmRvdy0+c2VhcmNoLmNsb3NlX2J1dHRvbik7CiAKKyAgICAvKiBDcmVhdGUg
aGlzdG9yeSBib3ggKi8KKyAgICB3aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9ib3ggPSBlbG1fYm94
X2FkZCh3aW5kb3ctPmVsbV93aW5kb3cpOworICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF9hc3Bl
Y3Rfc2V0KHdpbmRvdy0+aGlzdG9yeS5oaXN0b3J5X2JveCwgRVZBU19BU1BFQ1RfQ09OVFJPTF9W
RVJUSUNBTCwgMSwgMSk7CisgICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50X3dlaWdodF9zZXQod2lu
ZG93LT5oaXN0b3J5Lmhpc3RvcnlfYm94LCBFVkFTX0hJTlRfRVhQQU5EICwgRVZBU19ISU5UX0VY
UEFORCk7CisKKyAgICAvKiBDcmVhdGUgaGlzdG9yeSBsaXN0ICovCisgICAgd2luZG93LT5oaXN0
b3J5Lmhpc3RvcnlfbGlzdCA9IGVsbV9nZW5saXN0X2FkZCh3aW5kb3ctPmVsbV93aW5kb3cpOwor
ICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF93ZWlnaHRfc2V0KHdpbmRvdy0+aGlzdG9yeS5oaXN0
b3J5X2xpc3QsIEVWQVNfSElOVF9FWFBBTkQsIEVWQVNfSElOVF9FWFBBTkQpOworICAgIGV2YXNf
b2JqZWN0X3NpemVfaGludF9hbGlnbl9zZXQod2luZG93LT5oaXN0b3J5Lmhpc3RvcnlfbGlzdCwg
RVZBU19ISU5UX0ZJTEwsIEVWQVNfSElOVF9GSUxMKTsKKyAgICBlbG1fd2luX3Jlc2l6ZV9vYmpl
Y3RfYWRkKHdpbmRvdy0+aGlzdG9yeS5oaXN0b3J5X2xpc3QsIHdpbmRvdy0+aGlzdG9yeS5oaXN0
b3J5X2JveCk7CisgICAgZWxtX2JveF9wYWNrX2VuZCh3aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9i
b3gsIHdpbmRvdy0+aGlzdG9yeS5oaXN0b3J5X2xpc3QpOworICAgIAogICAgIC8qIENyZWF0ZSBl
d2tfdmlldyAqLwogICAgIEV3a19WaWV3X1NtYXJ0X0NsYXNzICpld2tWaWV3Q2xhc3MgPSBtaW5p
QnJvd3NlclZpZXdTbWFydENsYXNzKCk7CiAgICAgZXdrVmlld0NsYXNzLT5ydW5famF2YXNjcmlw
dF9hbGVydCA9IG9uX2phdmFzY3JpcHRfYWxlcnQ7CkBAIC0xOTk4LDYgKzIxNjUsMTEgQEAgc3Rh
dGljIEJyb3dzZXJfV2luZG93ICp3aW5kb3dfY3JlYXRlKEV2YQogICAgIGV2YXNfb2JqZWN0X2V2
ZW50X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmV3a192aWV3LCBFVkFTX0NBTExCQUNLX01PVVNFX09V
VCwgb25fbW91c2Vfb3V0LCB3aW5kb3cpOwogICAgIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNr
X2FkZCh3aW5kb3ctPmV3a192aWV3LCBFVkFTX0NBTExCQUNLX01PVVNFX01PVkUsIG9uX21vdXNl
X21vdmUsIHdpbmRvdyk7CiAgICAgZXZhc19vYmplY3RfZXZlbnRfY2FsbGJhY2tfYWRkKHdpbmRv
dy0+ZWxtX3dpbmRvdywgRVZBU19DQUxMQkFDS19SRVNJWkUsIG9uX3dpbmRvd19yZXNpemUsIHdp
bmRvdyk7CisgICAgCisgICAgZWxtX2J1dHRvbl9hdXRvcmVwZWF0X3NldCh3aW5kb3ctPmJhY2tf
YnV0dG9uLCBFSU5BX1RSVUUpOworICAgIGVsbV9idXR0b25fYXV0b3JlcGVhdF9zZXQod2luZG93
LT5mb3J3YXJkX2J1dHRvbiwgRUlOQV9UUlVFKTsKKyAgICBlbG1fYnV0dG9uX2F1dG9yZXBlYXRf
aW5pdGlhbF90aW1lb3V0X3NldCh3aW5kb3ctPmJhY2tfYnV0dG9uLCBMT05HUFJFU1NfSU5URVJW
QUxfU0VDT05EUyk7CisgICAgZWxtX2J1dHRvbl9hdXRvcmVwZWF0X2luaXRpYWxfdGltZW91dF9z
ZXQod2luZG93LT5mb3J3YXJkX2J1dHRvbiwgTE9OR1BSRVNTX0lOVEVSVkFMX1NFQ09ORFMpOwog
CiAgICAgcmV0dXJuIHdpbmRvdzsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236858</attachid>
            <date>2014-08-20 00:00:01 -0700</date>
            <delta_ts>2014-08-20 06:14:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135795-20140820123026.patch</filename>
            <type>text/plain</type>
            <size>12970</size>
            <attacher name="Tanay">tanay.c</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE3Mjc5NikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDE0LTA4LTE5ICBUYW5heSBDICA8dGFuYXkuY0BzYW1zdW5nLmNvbT4KKwor
ICAgICAgICBbRUZMXVtXSzJdIE1pbmlicm93c2VyIDogRW5oYW5jZSBhcHBsaWNhdGlvbiB0byBi
ZSBhYmxlIHRvIHN1cHBvcnQgaGlzdG9yeSBsaXN0IG5hdmlnYXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTc5NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWluaUJyb3dzZXIvZWZsL21haW4u
YzogQWRkaW5nIGZ1bmN0aW9uYWxpdHkgZm9yIGxvbmcgcHJlc3MgaGlzdG9yeSBsaXN0IG5hdmln
YXRpb24KKyAgICAgICAgKGhpc3RvcnlfbGlzdF9oaWRlKTogRnVuY3Rpb25hbGl0eSB0byBoaWRl
IHRoZSBoaXN0b3J5IGxpc3QKKyAgICAgICAgKG9uX2tleV9kb3duKTogCisgICAgICAgIChvbl9t
b3VzZV9kb3duKToKKyAgICAgICAgKGhpc3RvcnlfbGlzdF9nZXQpOiBSZXR1cm4gdGhlIGNyZWF0
ZWQgbGlzdAorICAgICAgICAob25fYmFja19idXR0b25fY2xpY2tlZCk6CisgICAgICAgIChvbl9m
b3J3YXJkX2J1dHRvbl9jbGlja2VkKToKKyAgICAgICAgKGxpc3RfaXRlbV9sYWJlbF9nZXQpOiBQ
b3B1bGF0ZSBpdGVtIGxhYmVscworICAgICAgICAob25fbGlzdF9pdGVtX3NlbGVjdCk6IE5hdmln
YXRlcyBvbiBzZWxlY3Rpb24gZnJvbSBoaXN0b3J5IGxpc3QKKyAgICAgICAgKG5hdmlnYXRpb25f
YnV0dG9uX2xvbmdwcmVzc19wcm9jZXNzKTogUG9wdWxhdGVzIHRoZSBoaXN0b3J5IGxpc3QgYW5k
IGRpc3BsYXlzIGl0CisgICAgICAgIChvbl9mb3J3YXJkX2J1dHRvbl9sb25ncHJlc3MpOgorICAg
ICAgICAob25fYmFja19idXR0b25fbG9uZ3ByZXNzKToKKyAgICAgICAgKHdpbmRvd19jcmVhdGUp
OiBBZGQgdGhlIHdpZGdldCBmb3IgaGlzdG9yeSBsaXN0CisKIDIwMTQtMDgtMTkgIERhbiBCZXJu
c3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICB1cGRhdGUtd2Via2l0IHNob3VsZCBu
b3QgY2hlY2sgZm9yIHRoZSBwcmVzZW5jZSBvZiBBcHBsZeKAmXMgSW50ZXJuYWwgZGlyZWN0b3J5
CkluZGV4OiBUb29scy9NaW5pQnJvd3Nlci9lZmwvbWFpbi5jCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L01pbmlCcm93c2VyL2VmbC9tYWluLmMJKHJldmlzaW9uIDE3Mjc5NikKKysrIFRvb2xzL01pbmlC
cm93c2VyL2VmbC9tYWluLmMJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDggQEAgc3RhdGlj
IGNvbnN0IGludCBTRUFSQ0hfQlVUVE9OX1NJWkUgPSAzMAogc3RhdGljIGNvbnN0IGludCBNQVhf
U0VBUkNIX0NPVU5UID0gMTAwOwogc3RhdGljIGNvbnN0IGludCBERUZBVUxUX1NFQVJDSF9GTEFH
UyA9IEVXS19GSU5EX09QVElPTlNfU0hPV19ISUdITElHSFQgfCBFV0tfRklORF9PUFRJT05TX0NB
U0VfSU5TRU5TSVRJVkUgfCBFV0tfRklORF9PUFRJT05TX1dSQVBfQVJPVU5EOwogc3RhdGljIGNv
bnN0IGRvdWJsZSBUT09MVElQX0RFTEFZX1NFQ09ORFMgPSAxLjA7CitzdGF0aWMgY29uc3QgZG91
YmxlIExPTkdQUkVTU19JTlRFUlZBTF9TRUNPTkRTID0gMS41Oworc3RhdGljIGNvbnN0IGRvdWJs
ZSBMSVNUX0lURU1fSEVJR0hUID0gMjQuMzU7CiAKICNkZWZpbmUgaW5mbyhmb3JtYXQsIGFyZ3Mu
Li4pICAgICAgIFwKICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTU2
LDYgKzU4LDggQEAgc3RhdGljIEVpbmFfQm9vbCB3ZWJfc2VjdXJpdHlfZW5hYmxlZCA9CiBzdGF0
aWMgRWluYV9Cb29sIHRvdWNoX2V2ZW50c19lbmFibGVkID0gRUlOQV9GQUxTRTsKIHN0YXRpYyBF
aW5hX0Jvb2wgZml4ZWRfbGF5b3V0X2VuYWJsZWQgPSBFSU5BX0ZBTFNFOwogc3RhdGljIEVpbmFf
Qm9vbCBzZXBhcmF0ZWRfcHJvY2Vzc19lbmFibGVkID0gRUlOQV9GQUxTRTsKK3N0YXRpYyBFaW5h
X0Jvb2wgbG9uZ3ByZXNzX2VuYWJsZWQgPSBFSU5BX0ZBTFNFOworc3RhdGljIEVpbmFfQm9vbCBm
b3J3YXJkX25hdmlnYXRpb25fZW5hYmxlZCA9IEVJTkFfRkFMU0U7CiBzdGF0aWMgaW50IHdpbmRv
d193aWR0aCA9IDgwMDsKIHN0YXRpYyBpbnQgd2luZG93X2hlaWdodCA9IDYwMDsKIC8qIERlZmF1
bHQgdmFsdWUgb2YgZGV2aWNlX3BpeGVsX3JhdGlvIGlzICcwJyBzbyB0aGF0IHdlIGRvbid0IHNl
dCBjdXN0b20gZGV2aWNlCkBAIC0xMTMsNiArMTE3LDEwIEBAIHR5cGVkZWYgc3RydWN0IF9Ccm93
c2VyX1dpbmRvdyB7CiAgICAgICAgIEV2YXNfT2JqZWN0ICpmb3J3YXJkX2J1dHRvbjsKICAgICAg
ICAgRXZhc19PYmplY3QgKmNsb3NlX2J1dHRvbjsKICAgICB9IHNlYXJjaDsKKyAgICBzdHJ1Y3Qg
eworICAgICAgICBFdmFzX09iamVjdCAqaGlzdG9yeV9ib3g7CisgICAgICAgIEV2YXNfT2JqZWN0
ICpoaXN0b3J5X2xpc3Q7CisgICAgfSBoaXN0b3J5OwogICAgIGludCBjdXJyZW50X3pvb21fbGV2
ZWw7IAogICAgIFRvb2x0aXBfSW5mb3JtYXRpb24gdG9vbHRpcDsKICAgICBDb2xvcl9TZWxlY3Rv
ciBjb2xvcl9zZWxlY3RvcjsKQEAgLTM5OCw2ICs0MDYsMjQgQEAgc2VhcmNoX2JveF9oaWRlKEJy
b3dzZXJfV2luZG93ICp3aW5kb3cpCiAgICAgZXZhc19vYmplY3RfZm9jdXNfc2V0KHdpbmRvdy0+
ZXdrX3ZpZXcsIEVJTkFfVFJVRSk7CiB9CiAKK3N0YXRpYyB2b2lkIAoraGlzdG9yeV9saXN0X2hp
ZGUoQnJvd3Nlcl9XaW5kb3cgKndpbmRvdykKK3sKKyAgICAvKiBIaWRlIGFuZCBjbGVhciB0aGUg
aGlzdG9yeSBsaXN0ICovCisgICAgZXZhc19vYmplY3RfaGlkZSh3aW5kb3ctPmhpc3RvcnkuaGlz
dG9yeV9ib3gpOworICAgIGV2YXNfb2JqZWN0X2hpZGUod2luZG93LT5oaXN0b3J5Lmhpc3Rvcnlf
bGlzdCk7CisgICAgZWxtX2dlbmxpc3RfY2xlYXIod2luZG93LT5oaXN0b3J5Lmhpc3RvcnlfbGlz
dCk7CisKKyAgICAvKiBHaXZlIGZvY3VzIGJhY2sgdG8gdGhlIHZpZXcgKi8KKyAgICBlbG1fb2Jq
ZWN0X2ZvY3VzX3NldCh3aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9ib3gsIEVJTkFfRkFMU0UpOwor
ICAgIGVsbV9vYmplY3RfZm9jdXNfc2V0KHdpbmRvdy0+aGlzdG9yeS5oaXN0b3J5X2xpc3QsIEVJ
TkFfRkFMU0UpOworICAgIGV2YXNfb2JqZWN0X2ZvY3VzX3NldCh3aW5kb3ctPmV3a192aWV3LCBF
SU5BX1RSVUUpOworCisgICAgLyogUmVzZXQgZmxhZ3MgKi8KKyAgICBsb25ncHJlc3NfZW5hYmxl
ZCA9IEVJTkFfRkFMU0U7CisgICAgZm9yd2FyZF9uYXZpZ2F0aW9uX2VuYWJsZWQgPSBFSU5BX0ZB
TFNFOworfSAKKwogc3RhdGljIHZvaWQgc2F2ZV9wYWdlX2NvbnRlbnRzX2NhbGxiYWNrKEV3a19Q
YWdlX0NvbnRlbnRzX1R5cGUgdHlwZSwgY29uc3QgY2hhciAqZGF0YSwgdm9pZCAqdXNlcl9kYXRh
KQogewogICAgIEVldF9GaWxlICplZjsKQEAgLTUwNSw2ICs1MzEsOCBAQCBvbl9rZXlfZG93bih2
b2lkICp1c2VyX2RhdGEsIEV2YXMgKmUsIEV2CiAgICAgfSBlbHNlIGlmICghc3RyY21wKGV2LT5r
ZXksICJFc2NhcGUiKSkgewogICAgICAgICBpZiAoZXZhc19vYmplY3RfdmlzaWJsZV9nZXQod2lu
ZG93LT5zZWFyY2guc2VhcmNoX2JhcikpCiAgICAgICAgICAgICBzZWFyY2hfYm94X2hpZGUod2lu
ZG93KTsKKyAgICAgICAgZWxzZSBpZiAoZXZhc19vYmplY3RfdmlzaWJsZV9nZXQod2luZG93LT5o
aXN0b3J5Lmhpc3RvcnlfYm94KSkKKyAgICAgICAgICAgIGhpc3RvcnlfbGlzdF9oaWRlKHdpbmRv
dyk7CiAgICAgICAgIGVsc2UgaWYgKGVsbV93aW5fZnVsbHNjcmVlbl9nZXQod2luZG93LT5lbG1f
d2luZG93KSkKICAgICAgICAgICAgIGV3a192aWV3X2Z1bGxzY3JlZW5fZXhpdChld2tfdmlldyk7
CiAgICAgfSBlbHNlIGlmIChjdHJsUHJlc3NlZCAmJiAoIXN0cmNtcChldi0+a2V5LCAibWludXMi
KSB8fCAhc3RyY21wKGV2LT5rZXksICJLUF9TdWJ0cmFjdCIpKSkgewpAQCAtNTYzLDYgKzU5MSw4
IEBAIG9uX21vdXNlX2Rvd24odm9pZCAqdXNlcl9kYXRhLCBFdmFzICplLAogICAgIC8qIENsZWFy
IHNlbGVjdGlvbiBmcm9tIHRoZSBVUkwgYmFyICovCiAgICAgZWxtX2VudHJ5X3NlbGVjdF9ub25l
KHdpbmRvdy0+dXJsX2Jhcik7CiAKKyAgICBpZiAobG9uZ3ByZXNzX2VuYWJsZWQpCisgICAgICAg
IGhpc3RvcnlfbGlzdF9oaWRlKHdpbmRvdyk7CiAgICAgaWYgKGV2LT5idXR0b24gPT0gMSkKICAg
ICAgICAgdmlld19mb2N1c19zZXQod2luZG93LCBFSU5BX1RSVUUpOwogICAgIGVsc2UgaWYgKGV2
LT5idXR0b24gPT0gMikKQEAgLTk0Nyw2ICs5NzcsMjMgQEAgdXJsX2Zyb21fdXNlcl9pbnB1dChj
b25zdCBjaGFyICphcmcpCiAgICAgcmV0dXJuIHVybDsKIH0KIAorc3RhdGljIEVpbmFfTGlzdCAq
CitoaXN0b3J5X2xpc3RfZ2V0KHZvaWQgKnVzZXJfZGF0YSkKK3sKKyAgICBCcm93c2VyX1dpbmRv
dyAqd2luZG93ID0gKEJyb3dzZXJfV2luZG93ICopdXNlcl9kYXRhOworICAgIAorICAgIEVpbmFf
TGlzdCAqaGlzdG9yeV9pdGVtcyA9IE5VTEw7CisgICAgRXdrX0JhY2tfRm9yd2FyZF9MaXN0ICps
aXN0ID0gZXdrX3ZpZXdfYmFja19mb3J3YXJkX2xpc3RfZ2V0KHdpbmRvdy0+ZXdrX3ZpZXcpOwor
ICAgIGNvbnN0IHNpemVfdCBjb3VudCA9IGV3a19iYWNrX2ZvcndhcmRfbGlzdF9jb3VudChsaXN0
KTsKKyAgICAKKyAgICBpZiAoZm9yd2FyZF9uYXZpZ2F0aW9uX2VuYWJsZWQpCisgICAgICAgIGhp
c3RvcnlfaXRlbXMgPSBld2tfYmFja19mb3J3YXJkX2xpc3Rfbl9mb3J3YXJkX2l0ZW1zX2NvcHko
bGlzdCwgY291bnQpOyAKKyAgICBlbHNlCisgICAgICAgIGhpc3RvcnlfaXRlbXMgPSBld2tfYmFj
a19mb3J3YXJkX2xpc3Rfbl9iYWNrX2l0ZW1zX2NvcHkobGlzdCwgY291bnQpOworICAgIAorICAg
IHJldHVybiBoaXN0b3J5X2l0ZW1zOworfQorCiBzdGF0aWMgdm9pZAogb25fdXJsX2Jhcl9hY3Rp
dmF0ZWQodm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqdXJsX2Jhciwgdm9pZCAqZXZlbnRf
aW5mbykKIHsKQEAgLTEwMTIsNiArMTA1OSw5IEBAIG9uX3NlYXJjaF9maWVsZF9jbGlja2VkKHZv
aWQgKnVzZXJfZGF0YSwKIHN0YXRpYyB2b2lkCiBvbl9iYWNrX2J1dHRvbl9jbGlja2VkKHZvaWQg
KnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKmJhY2tfYnV0dG9uLCB2b2lkICpldmVudF9pbmZvKQog
eworICAgIGlmIChsb25ncHJlc3NfZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworICAgIAogICAg
IEJyb3dzZXJfV2luZG93ICp3aW5kb3cgPSAoQnJvd3Nlcl9XaW5kb3cgKil1c2VyX2RhdGE7CiAK
ICAgICBld2tfdmlld19iYWNrKHdpbmRvdy0+ZXdrX3ZpZXcpOwpAQCAtMTAyMiw2ICsxMDcyLDkg
QEAgb25fYmFja19idXR0b25fY2xpY2tlZCh2b2lkICp1c2VyX2RhdGEsCiBzdGF0aWMgdm9pZAog
b25fZm9yd2FyZF9idXR0b25fY2xpY2tlZCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpm
b3J3YXJkX2J1dHRvbiwgdm9pZCAqZXZlbnRfaW5mbykKIHsKKyAgICBpZiAobG9uZ3ByZXNzX2Vu
YWJsZWQpCisgICAgICAgIHJldHVybjsKKwogICAgIEJyb3dzZXJfV2luZG93ICp3aW5kb3cgPSAo
QnJvd3Nlcl9XaW5kb3cgKil1c2VyX2RhdGE7CiAKICAgICBld2tfdmlld19mb3J3YXJkKHdpbmRv
dy0+ZXdrX3ZpZXcpOwpAQCAtMTA3Myw2ICsxMTI2LDEwOSBAQCBvbl9yZWZyZXNoX2J1dHRvbl9j
bGlja2VkKHZvaWQgKnVzZXJfZGF0CiAgICAgfQogfQogCitzdGF0aWMgY2hhciAqCitsaXN0X2l0
ZW1fbGFiZWxfZ2V0KHZvaWQgKmRhdGEsIEV2YXNfT2JqZWN0ICpvYmosIGNvbnN0IGNoYXIqIHBh
cnQpCit7CisgICAgaW50IGxlbiA9IHN0cmxlbigoY2hhciopZGF0YSk7CisgICAgY2hhciogYnVm
ID0gKGNoYXIqKW1hbGxvYyhzaXplb2YoY2hhcikqKGxlbisxKSk7CisgICAgc25wcmludGYoYnVm
LCBsZW4rMSwgIiVzIiwgKGNoYXIqKWRhdGEpOworICAgIHJldHVybiBzdHJkdXAoYnVmKTsKK30K
Kworc3RhdGljIHZvaWQKK29uX2xpc3RfaXRlbV9zZWxlY3Qodm9pZCAqdXNlcl9kYXRhLCBFdmFz
X09iamVjdCAqb2JqLCB2b2lkICpldmVudF9pbmZvKQoreworICAgIEJyb3dzZXJfV2luZG93ICp3
aW5kb3cgPSAoQnJvd3Nlcl9XaW5kb3cgKikodXNlcl9kYXRhKTsKKyAgICBFbG1fT2JqZWN0X0l0
ZW0gKmxpc3RfaXRlbSA9IGV2ZW50X2luZm87CisgICAgaW50IGl0ZW1faW5kZXggPSBlbG1fZ2Vu
bGlzdF9pdGVtX2luZGV4X2dldChsaXN0X2l0ZW0pOworCisgICAgZXdrX3ZpZXdfbmF2aWdhdGVf
dG8od2luZG93LT5ld2tfdmlldywgZWluYV9saXN0X250aChoaXN0b3J5X2xpc3RfZ2V0KHVzZXJf
ZGF0YSksIGl0ZW1faW5kZXggLSAxKSk7IAorCisgICAgaGlzdG9yeV9saXN0X2hpZGUod2luZG93
KTsKK30KKworc3RhdGljIHZvaWQKK25hdmlnYXRpb25fYnV0dG9uX2xvbmdwcmVzc19wcm9jZXNz
KHZvaWQgKnVzZXJfZGF0YSkKK3sKKyAgICBpZiAobG9uZ3ByZXNzX2VuYWJsZWQpCisgICAgICAg
IHJldHVybjsKKworICAgIGxvbmdwcmVzc19lbmFibGVkID0gRUlOQV9UUlVFOworICAgIEJyb3dz
ZXJfV2luZG93ICp3aW5kb3cgPSAoQnJvd3Nlcl9XaW5kb3cgKil1c2VyX2RhdGE7CisgICAgCisg
ICAgRWluYV9MaXN0KiBsaXN0ID0gaGlzdG9yeV9saXN0X2dldCh1c2VyX2RhdGEpOworICAgIGNv
bnN0IEVpbmFfTGlzdCogbDsKKyAgICB2b2lkKiBkYXRhOworICAgIHN0YXRpYyBFbG1fR2VubGlz
dF9JdGVtX0NsYXNzICpsaXN0X2l0ZW0gPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKnRpdGxlID0g
TlVMTDsKKyAgICBpbnQgaXRlbV9jb3VudDsKKyAgICBpbnQgeDsKKyAgICBpbnQgeTsKKyAgICBp
bnQgd2lkdGg7CisgICAgaW50IGhlaWdodDsKKyAgICBzaXplX3QgaW5kZXg7CisKKyAgICBpZiAo
IWxpc3RfaXRlbSkgeworICAgICAgICBsaXN0X2l0ZW0gPSBlbG1fZ2VubGlzdF9pdGVtX2NsYXNz
X25ldygpOworICAgICAgICBsaXN0X2l0ZW0tPml0ZW1fc3R5bGUgPSAiZGVmYXVsdCI7CisgICAg
ICAgIGxpc3RfaXRlbS0+ZnVuYy50ZXh0X2dldCA9IGxpc3RfaXRlbV9sYWJlbF9nZXQ7CisgICAg
ICAgIGxpc3RfaXRlbS0+ZnVuYy5jb250ZW50X2dldCA9IE5VTEw7CisgICAgICAgIGxpc3RfaXRl
bS0+ZnVuYy5zdGF0ZV9nZXQgPSBOVUxMOworICAgICAgICBsaXN0X2l0ZW0tPmZ1bmMuZGVsID0g
TlVMTDsKKyAgICB9CisKKyAgICBpdGVtX2NvdW50ID0gZWluYV9saXN0X2NvdW50KGxpc3QpOwor
ICAgIGluZm8oIm5hdmlnYXRpb25fYnV0dG9uX2xvbmdwcmVzc19wcm9jZXNzIDogSXRlbSBjb3Vu
dCA9ICVkIGZvcndhcmRfbmF2aWdhdGlvbl9lbmFibGVkID0gJWQiLCBpdGVtX2NvdW50LCBmb3J3
YXJkX25hdmlnYXRpb25fZW5hYmxlZCk7CisKKyAgICBFSU5BX0xJU1RfRk9SRUFDSChsaXN0LCBs
LCBkYXRhKSB7CisgICAgICAgIHRpdGxlID0gZXdrX2JhY2tfZm9yd2FyZF9saXN0X2l0ZW1fdGl0
bGVfZ2V0KGRhdGEpOworICAgICAgICBpbmZvKCIgdGl0bGUgPSAlcyIsIHRpdGxlKTsKKyAgICAg
ICAgZWxtX2dlbmxpc3RfaXRlbV9hcHBlbmQod2luZG93LT5oaXN0b3J5Lmhpc3RvcnlfbGlzdCwg
bGlzdF9pdGVtLCAodm9pZCopKHRpdGxlKSwgTlVMTCwgRUxNX0dFTkxJU1RfSVRFTV9OT05FLCBv
bl9saXN0X2l0ZW1fc2VsZWN0LCB1c2VyX2RhdGEpOworICAgIH0KKyAgICAKKyAgICBpZiAoaXRl
bV9jb3VudCA+IDApIHsKKyAgICAgICAgZXZhc19vYmplY3RfZ2VvbWV0cnlfZ2V0KHdpbmRvdy0+
ZWxtX3dpbmRvdywgJngsICZ5LCAmd2lkdGgsICZoZWlnaHQpOworICAgICAgICBlbG1fbGlzdF9n
byh3aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9saXN0KTsKKyAgICAgICAgZXZhc19vYmplY3RfcmVz
aXplKHdpbmRvdy0+aGlzdG9yeS5oaXN0b3J5X2JveCAsIHdpZHRoIC8gMyAsIExJU1RfSVRFTV9I
RUlHSFQgKiBpdGVtX2NvdW50KTsKKworICAgICAgICBpZiAoZm9yd2FyZF9uYXZpZ2F0aW9uX2Vu
YWJsZWQpIHsKKyAgICAgICAgICAgIGV2YXNfb2JqZWN0X21vdmUod2luZG93LT5oaXN0b3J5Lmhp
c3RvcnlfYm94ICwgeCArIFRPT0xfQkFSX0JVVFRPTl9TSVpFICsgMSwgeSArIFRPT0xfQkFSX0JV
VFRPTl9TSVpFKTsKKyAgICAgICAgICAgIGV2YXNfb2JqZWN0X21vdmUod2luZG93LT5oaXN0b3J5
Lmhpc3RvcnlfbGlzdCAsIHggKyBUT09MX0JBUl9CVVRUT05fU0laRSArIDEsIHkgKyBUT09MX0JB
Ul9CVVRUT05fU0laRSk7ICAKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGV2YXNfb2Jq
ZWN0X21vdmUod2luZG93LT5oaXN0b3J5Lmhpc3RvcnlfYm94ICwgeCwgeSArIFRPT0xfQkFSX0JV
VFRPTl9TSVpFKTsKKyAgICAgICAgICAgIGV2YXNfb2JqZWN0X21vdmUod2luZG93LT5oaXN0b3J5
Lmhpc3RvcnlfbGlzdCAsIHgsIHkgKyBUT09MX0JBUl9CVVRUT05fU0laRSk7ICAKKyAgICAgICAg
fQorICAgIAorICAgICAgICBlbG1fZ2VubGlzdF9tb2RlX3NldCh3aW5kb3ctPmhpc3RvcnkuaGlz
dG9yeV9saXN0LCBFTE1fTElTVF9DT01QUkVTUyk7CisgICAgICAgIGV2YXNfb2JqZWN0X3Nob3co
d2luZG93LT5oaXN0b3J5Lmhpc3RvcnlfYm94KTsKKyAgICAgICAgZXZhc19vYmplY3Rfc2hvdyh3
aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9saXN0KTsKKyAgICAgICAgZXZhc19vYmplY3RfZm9jdXNf
c2V0KHdpbmRvdy0+ZXdrX3ZpZXcsIEVJTkFfRkFMU0UpOworICAgICAgICBlbG1fb2JqZWN0X2Zv
Y3VzX3NldCh3aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9saXN0LCBFSU5BX1RSVUUpOworICAgIH0g
ZWxzZQorICAgICAgICBsb25ncHJlc3NfZW5hYmxlZCA9IEVJTkFfRkFMU0U7Cit9CisKK3N0YXRp
YyB2b2lkCitvbl9mb3J3YXJkX2J1dHRvbl9sb25ncHJlc3Modm9pZCAqdXNlcl9kYXRhLCBFdmFz
X09iamVjdCAqZm9yd2FyZF9idXR0b24sIHZvaWQgKmV2ZW50X2luZm8pCit7CisgICAgQnJvd3Nl
cl9XaW5kb3cgKndpbmRvdyA9IChCcm93c2VyX1dpbmRvdyAqKXVzZXJfZGF0YTsKKworICAgIGZv
cndhcmRfbmF2aWdhdGlvbl9lbmFibGVkID0gRUlOQV9UUlVFOworICAgIG5hdmlnYXRpb25fYnV0
dG9uX2xvbmdwcmVzc19wcm9jZXNzKHVzZXJfZGF0YSk7CisgICAgCisgICAgZWxtX29iamVjdF9k
aXNhYmxlZF9zZXQoZm9yd2FyZF9idXR0b24sICFld2tfdmlld19iYWNrX3Bvc3NpYmxlKHdpbmRv
dy0+ZXdrX3ZpZXcpKTsKK30KKworc3RhdGljIHZvaWQKK29uX2JhY2tfYnV0dG9uX2xvbmdwcmVz
cyh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpiYWNrX2J1dHRvbiwgdm9pZCAqZXZlbnRf
aW5mbykKK3sKKyAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0gKEJyb3dzZXJfV2luZG93ICop
dXNlcl9kYXRhOworCisgICAgZm9yd2FyZF9uYXZpZ2F0aW9uX2VuYWJsZWQgPSBFSU5BX0ZBTFNF
OworICAgIG5hdmlnYXRpb25fYnV0dG9uX2xvbmdwcmVzc19wcm9jZXNzKHVzZXJfZGF0YSk7Cisg
ICAgZWxtX29iamVjdF9kaXNhYmxlZF9zZXQoYmFja19idXR0b24sICFld2tfdmlld19iYWNrX3Bv
c3NpYmxlKHdpbmRvdy0+ZXdrX3ZpZXcpKTsKK30KKwogc3RhdGljIHZvaWQKIHF1aXRfZXZlbnRf
bG9vcCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpvYmosIHZvaWQgKmV2ZW50X2luZm8p
CiB7CkBAIC0xODA0LDYgKzE5NjAsNyBAQCBzdGF0aWMgQnJvd3Nlcl9XaW5kb3cgKndpbmRvd19j
cmVhdGUoRXZhCiAgICAgLyogQ3JlYXRlIEJhY2sgYnV0dG9uICovCiAgICAgd2luZG93LT5iYWNr
X2J1dHRvbiA9IGNyZWF0ZV90b29sYmFyX2J1dHRvbih3aW5kb3ctPmVsbV93aW5kb3csICJhcnJv
d19sZWZ0Iik7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+YmFj
a19idXR0b24sICJjbGlja2VkIiwgb25fYmFja19idXR0b25fY2xpY2tlZCwgd2luZG93KTsKKyAg
ICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2luZG93LT5iYWNrX2J1dHRvbiwgInJl
cGVhdGVkIiwgb25fYmFja19idXR0b25fbG9uZ3ByZXNzLCB3aW5kb3cpOwogICAgIGVsbV9vYmpl
Y3RfZGlzYWJsZWRfc2V0KHdpbmRvdy0+YmFja19idXR0b24sIEVJTkFfVFJVRSk7CiAgICAgZXZh
c19vYmplY3Rfc2l6ZV9oaW50X3dlaWdodF9zZXQod2luZG93LT5iYWNrX2J1dHRvbiwgMC4wLCBF
VkFTX0hJTlRfRVhQQU5EKTsKICAgICBldmFzX29iamVjdF9zaXplX2hpbnRfYWxpZ25fc2V0KHdp
bmRvdy0+YmFja19idXR0b24sIDAuMCwgMC41KTsKQEAgLTE4MTMsNiArMTk3MCw3IEBAIHN0YXRp
YyBCcm93c2VyX1dpbmRvdyAqd2luZG93X2NyZWF0ZShFdmEKICAgICAvKiBDcmVhdGUgRm9yd2Fy
ZCBidXR0b24gKi8KICAgICB3aW5kb3ctPmZvcndhcmRfYnV0dG9uID0gY3JlYXRlX3Rvb2xiYXJf
YnV0dG9uKHdpbmRvdy0+ZWxtX3dpbmRvdywgImFycm93X3JpZ2h0Iik7CiAgICAgZXZhc19vYmpl
Y3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+Zm9yd2FyZF9idXR0b24sICJjbGlja2VkIiwg
b25fZm9yd2FyZF9idXR0b25fY2xpY2tlZCwgd2luZG93KTsKKyAgICBldmFzX29iamVjdF9zbWFy
dF9jYWxsYmFja19hZGQod2luZG93LT5mb3J3YXJkX2J1dHRvbiwgInJlcGVhdGVkIiwgb25fZm9y
d2FyZF9idXR0b25fbG9uZ3ByZXNzLCB3aW5kb3cpOwogICAgIGVsbV9vYmplY3RfZGlzYWJsZWRf
c2V0KHdpbmRvdy0+Zm9yd2FyZF9idXR0b24sIEVJTkFfVFJVRSk7CiAgICAgZXZhc19vYmplY3Rf
c2l6ZV9oaW50X3dlaWdodF9zZXQod2luZG93LT5mb3J3YXJkX2J1dHRvbiwgMC4wLCBFVkFTX0hJ
TlRfRVhQQU5EKTsKICAgICBldmFzX29iamVjdF9zaXplX2hpbnRfYWxpZ25fc2V0KHdpbmRvdy0+
Zm9yd2FyZF9idXR0b24sIDAuMCwgMC41KTsKQEAgLTE5MDYsNiArMjA2NCwxOCBAQCBzdGF0aWMg
QnJvd3Nlcl9XaW5kb3cgKndpbmRvd19jcmVhdGUoRXZhCiAgICAgZXZhc19vYmplY3Rfc2l6ZV9o
aW50X21pbl9zZXQod2luZG93LT5zZWFyY2guY2xvc2VfYnV0dG9uLCBTRUFSQ0hfQlVUVE9OX1NJ
WkUsIFNFQVJDSF9CVVRUT05fU0laRSk7CiAgICAgZWxtX2JveF9wYWNrX2VuZCh3aW5kb3ctPnNl
YXJjaC5zZWFyY2hfYmFyLCB3aW5kb3ctPnNlYXJjaC5jbG9zZV9idXR0b24pOwogCisgICAgLyog
Q3JlYXRlIGhpc3RvcnkgYm94ICovCisgICAgd2luZG93LT5oaXN0b3J5Lmhpc3RvcnlfYm94ID0g
ZWxtX2JveF9hZGQod2luZG93LT5lbG1fd2luZG93KTsKKyAgICBldmFzX29iamVjdF9zaXplX2hp
bnRfYXNwZWN0X3NldCh3aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9ib3gsIEVWQVNfQVNQRUNUX0NP
TlRST0xfVkVSVElDQUwsIDEsIDEpOworICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF93ZWlnaHRf
c2V0KHdpbmRvdy0+aGlzdG9yeS5oaXN0b3J5X2JveCwgRVZBU19ISU5UX0VYUEFORCAsIEVWQVNf
SElOVF9FWFBBTkQpOworCisgICAgLyogQ3JlYXRlIGhpc3RvcnkgbGlzdCAqLworICAgIHdpbmRv
dy0+aGlzdG9yeS5oaXN0b3J5X2xpc3QgPSBlbG1fZ2VubGlzdF9hZGQod2luZG93LT5lbG1fd2lu
ZG93KTsKKyAgICBldmFzX29iamVjdF9zaXplX2hpbnRfd2VpZ2h0X3NldCh3aW5kb3ctPmhpc3Rv
cnkuaGlzdG9yeV9saXN0LCBFVkFTX0hJTlRfRVhQQU5ELCBFVkFTX0hJTlRfRVhQQU5EKTsKKyAg
ICBldmFzX29iamVjdF9zaXplX2hpbnRfYWxpZ25fc2V0KHdpbmRvdy0+aGlzdG9yeS5oaXN0b3J5
X2xpc3QsIEVWQVNfSElOVF9GSUxMLCBFVkFTX0hJTlRfRklMTCk7CisgICAgZWxtX3dpbl9yZXNp
emVfb2JqZWN0X2FkZCh3aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9saXN0LCB3aW5kb3ctPmhpc3Rv
cnkuaGlzdG9yeV9ib3gpOworICAgIGVsbV9ib3hfcGFja19lbmQod2luZG93LT5oaXN0b3J5Lmhp
c3RvcnlfYm94LCB3aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9saXN0KTsKKyAgICAKICAgICAvKiBD
cmVhdGUgZXdrX3ZpZXcgKi8KICAgICBFd2tfVmlld19TbWFydF9DbGFzcyAqZXdrVmlld0NsYXNz
ID0gbWluaUJyb3dzZXJWaWV3U21hcnRDbGFzcygpOwogICAgIGV3a1ZpZXdDbGFzcy0+cnVuX2ph
dmFzY3JpcHRfYWxlcnQgPSBvbl9qYXZhc2NyaXB0X2FsZXJ0OwpAQCAtMTk5OCw2ICsyMTY4LDEx
IEBAIHN0YXRpYyBCcm93c2VyX1dpbmRvdyAqd2luZG93X2NyZWF0ZShFdmEKICAgICBldmFzX29i
amVjdF9ldmVudF9jYWxsYmFja19hZGQod2luZG93LT5ld2tfdmlldywgRVZBU19DQUxMQkFDS19N
T1VTRV9PVVQsIG9uX21vdXNlX291dCwgd2luZG93KTsKICAgICBldmFzX29iamVjdF9ldmVudF9j
YWxsYmFja19hZGQod2luZG93LT5ld2tfdmlldywgRVZBU19DQUxMQkFDS19NT1VTRV9NT1ZFLCBv
bl9tb3VzZV9tb3ZlLCB3aW5kb3cpOwogICAgIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2Fk
ZCh3aW5kb3ctPmVsbV93aW5kb3csIEVWQVNfQ0FMTEJBQ0tfUkVTSVpFLCBvbl93aW5kb3dfcmVz
aXplLCB3aW5kb3cpOworICAgIAorICAgIGVsbV9idXR0b25fYXV0b3JlcGVhdF9zZXQod2luZG93
LT5iYWNrX2J1dHRvbiwgRUlOQV9UUlVFKTsKKyAgICBlbG1fYnV0dG9uX2F1dG9yZXBlYXRfc2V0
KHdpbmRvdy0+Zm9yd2FyZF9idXR0b24sIEVJTkFfVFJVRSk7CisgICAgZWxtX2J1dHRvbl9hdXRv
cmVwZWF0X2luaXRpYWxfdGltZW91dF9zZXQod2luZG93LT5iYWNrX2J1dHRvbiwgTE9OR1BSRVNT
X0lOVEVSVkFMX1NFQ09ORFMpOworICAgIGVsbV9idXR0b25fYXV0b3JlcGVhdF9pbml0aWFsX3Rp
bWVvdXRfc2V0KHdpbmRvdy0+Zm9yd2FyZF9idXR0b24sIExPTkdQUkVTU19JTlRFUlZBTF9TRUNP
TkRTKTsKIAogICAgIHJldHVybiB3aW5kb3c7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236867</attachid>
            <date>2014-08-20 06:14:59 -0700</date>
            <delta_ts>2014-08-20 06:26:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135795-20140820184525.patch</filename>
            <type>text/plain</type>
            <size>13024</size>
            <attacher name="Tanay">tanay.c</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE3Mjc5NikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDE0LTA4LTIwICBUYW5heSBDICA8dGFuYXkuY0BzYW1zdW5nLmNvbT4KKwor
ICAgICAgICBbRUZMXVtXSzJdIE1pbmlicm93c2VyIDogRW5oYW5jZSBhcHBsaWNhdGlvbiB0byBi
ZSBhYmxlIHRvIHN1cHBvcnQgaGlzdG9yeSBsaXN0IG5hdmlnYXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTc5NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWluaUJyb3dzZXIvZWZsL21haW4u
YzogQWRkaW5nIGZ1bmN0aW9uYWxpdHkgZm9yIGxvbmcgcHJlc3MgaGlzdG9yeSBsaXN0IG5hdmln
YXRpb24KKyAgICAgICAgKGhpc3RvcnlfbGlzdF9oaWRlKTogRnVuY3Rpb25hbGl0eSB0byBoaWRl
IHRoZSBoaXN0b3J5IGxpc3QKKyAgICAgICAgKG9uX2tleV9kb3duKToKKyAgICAgICAgKG9uX21v
dXNlX2Rvd24pOgorICAgICAgICAoaGlzdG9yeV9saXN0X2dldCk6IFJldHVybiB0aGUgY3JlYXRl
ZCBsaXN0CisgICAgICAgIChvbl9iYWNrX2J1dHRvbl9jbGlja2VkKToKKyAgICAgICAgKG9uX2Zv
cndhcmRfYnV0dG9uX2NsaWNrZWQpOgorICAgICAgICAobGlzdF9pdGVtX2xhYmVsX2dldCk6IFBv
cHVsYXRlIGl0ZW0gbGFiZWxzCisgICAgICAgIChvbl9saXN0X2l0ZW1fc2VsZWN0KTogTmF2aWdh
dGVzIG9uIHNlbGVjdGlvbiBmcm9tIGhpc3RvcnkgbGlzdAorICAgICAgICAobmF2aWdhdGlvbl9i
dXR0b25fbG9uZ3ByZXNzX3Byb2Nlc3MpOiBQb3B1bGF0ZXMgdGhlIGhpc3RvcnkgbGlzdCBhbmQg
ZGlzcGxheXMgaXQKKyAgICAgICAgKG9uX2ZvcndhcmRfYnV0dG9uX2xvbmdwcmVzcyk6CisgICAg
ICAgIChvbl9iYWNrX2J1dHRvbl9sb25ncHJlc3MpOgorICAgICAgICAod2luZG93X2NyZWF0ZSk6
IEFkZCB0aGUgd2lkZ2V0IGZvciBoaXN0b3J5IGxpc3QKKwogMjAxNC0wOC0xOSAgRGFuIEJlcm5z
dGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIHVwZGF0ZS13ZWJraXQgc2hvdWxkIG5v
dCBjaGVjayBmb3IgdGhlIHByZXNlbmNlIG9mIEFwcGxl4oCZcyBJbnRlcm5hbCBkaXJlY3RvcnkK
SW5kZXg6IFRvb2xzL01pbmlCcm93c2VyL2VmbC9tYWluLmMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
TWluaUJyb3dzZXIvZWZsL21haW4uYwkocmV2aXNpb24gMTcyNzk2KQorKysgVG9vbHMvTWluaUJy
b3dzZXIvZWZsL21haW4uYwkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsOCBAQCBzdGF0aWMg
Y29uc3QgaW50IFNFQVJDSF9CVVRUT05fU0laRSA9IDMwCiBzdGF0aWMgY29uc3QgaW50IE1BWF9T
RUFSQ0hfQ09VTlQgPSAxMDA7CiBzdGF0aWMgY29uc3QgaW50IERFRkFVTFRfU0VBUkNIX0ZMQUdT
ID0gRVdLX0ZJTkRfT1BUSU9OU19TSE9XX0hJR0hMSUdIVCB8IEVXS19GSU5EX09QVElPTlNfQ0FT
RV9JTlNFTlNJVElWRSB8IEVXS19GSU5EX09QVElPTlNfV1JBUF9BUk9VTkQ7CiBzdGF0aWMgY29u
c3QgZG91YmxlIFRPT0xUSVBfREVMQVlfU0VDT05EUyA9IDEuMDsKK3N0YXRpYyBjb25zdCBkb3Vi
bGUgTE9OR1BSRVNTX0lOVEVSVkFMX1NFQ09ORFMgPSAxLjU7CitzdGF0aWMgY29uc3QgZG91Ymxl
IExJU1RfSVRFTV9IRUlHSFQgPSAyNC4zNTsKIAogI2RlZmluZSBpbmZvKGZvcm1hdCwgYXJncy4u
LikgICAgICAgXAogICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtNTYs
NiArNTgsOCBAQCBzdGF0aWMgRWluYV9Cb29sIHdlYl9zZWN1cml0eV9lbmFibGVkID0KIHN0YXRp
YyBFaW5hX0Jvb2wgdG91Y2hfZXZlbnRzX2VuYWJsZWQgPSBFSU5BX0ZBTFNFOwogc3RhdGljIEVp
bmFfQm9vbCBmaXhlZF9sYXlvdXRfZW5hYmxlZCA9IEVJTkFfRkFMU0U7CiBzdGF0aWMgRWluYV9C
b29sIHNlcGFyYXRlZF9wcm9jZXNzX2VuYWJsZWQgPSBFSU5BX0ZBTFNFOworc3RhdGljIEVpbmFf
Qm9vbCBsb25ncHJlc3NfZW5hYmxlZCA9IEVJTkFfRkFMU0U7CitzdGF0aWMgRWluYV9Cb29sIGZv
cndhcmRfbmF2aWdhdGlvbl9lbmFibGVkID0gRUlOQV9GQUxTRTsKIHN0YXRpYyBpbnQgd2luZG93
X3dpZHRoID0gODAwOwogc3RhdGljIGludCB3aW5kb3dfaGVpZ2h0ID0gNjAwOwogLyogRGVmYXVs
dCB2YWx1ZSBvZiBkZXZpY2VfcGl4ZWxfcmF0aW8gaXMgJzAnIHNvIHRoYXQgd2UgZG9uJ3Qgc2V0
IGN1c3RvbSBkZXZpY2UKQEAgLTExMyw2ICsxMTcsMTAgQEAgdHlwZWRlZiBzdHJ1Y3QgX0Jyb3dz
ZXJfV2luZG93IHsKICAgICAgICAgRXZhc19PYmplY3QgKmZvcndhcmRfYnV0dG9uOwogICAgICAg
ICBFdmFzX09iamVjdCAqY2xvc2VfYnV0dG9uOwogICAgIH0gc2VhcmNoOworICAgIHN0cnVjdCB7
CisgICAgICAgIEV2YXNfT2JqZWN0ICpoaXN0b3J5X2JveDsKKyAgICAgICAgRXZhc19PYmplY3Qg
Kmhpc3RvcnlfbGlzdDsKKyAgICB9IGhpc3Rvcnk7CiAgICAgaW50IGN1cnJlbnRfem9vbV9sZXZl
bDsgCiAgICAgVG9vbHRpcF9JbmZvcm1hdGlvbiB0b29sdGlwOwogICAgIENvbG9yX1NlbGVjdG9y
IGNvbG9yX3NlbGVjdG9yOwpAQCAtMzk4LDYgKzQwNiwyNCBAQCBzZWFyY2hfYm94X2hpZGUoQnJv
d3Nlcl9XaW5kb3cgKndpbmRvdykKICAgICBldmFzX29iamVjdF9mb2N1c19zZXQod2luZG93LT5l
d2tfdmlldywgRUlOQV9UUlVFKTsKIH0KIAorc3RhdGljIHZvaWQgCitoaXN0b3J5X2xpc3RfaGlk
ZShCcm93c2VyX1dpbmRvdyAqd2luZG93KQoreworICAgIC8qIEhpZGUgYW5kIGNsZWFyIHRoZSBo
aXN0b3J5IGxpc3QgKi8KKyAgICBldmFzX29iamVjdF9oaWRlKHdpbmRvdy0+aGlzdG9yeS5oaXN0
b3J5X2JveCk7CisgICAgZXZhc19vYmplY3RfaGlkZSh3aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9s
aXN0KTsKKyAgICBlbG1fZ2VubGlzdF9jbGVhcih3aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9saXN0
KTsKKworICAgIC8qIEdpdmUgZm9jdXMgYmFjayB0byB0aGUgdmlldyAqLworICAgIGVsbV9vYmpl
Y3RfZm9jdXNfc2V0KHdpbmRvdy0+aGlzdG9yeS5oaXN0b3J5X2JveCwgRUlOQV9GQUxTRSk7Cisg
ICAgZWxtX29iamVjdF9mb2N1c19zZXQod2luZG93LT5oaXN0b3J5Lmhpc3RvcnlfbGlzdCwgRUlO
QV9GQUxTRSk7CisgICAgZXZhc19vYmplY3RfZm9jdXNfc2V0KHdpbmRvdy0+ZXdrX3ZpZXcsIEVJ
TkFfVFJVRSk7CisKKyAgICAvKiBSZXNldCBmbGFncyAqLworICAgIGxvbmdwcmVzc19lbmFibGVk
ID0gRUlOQV9GQUxTRTsKKyAgICBmb3J3YXJkX25hdmlnYXRpb25fZW5hYmxlZCA9IEVJTkFfRkFM
U0U7Cit9IAorCiBzdGF0aWMgdm9pZCBzYXZlX3BhZ2VfY29udGVudHNfY2FsbGJhY2soRXdrX1Bh
Z2VfQ29udGVudHNfVHlwZSB0eXBlLCBjb25zdCBjaGFyICpkYXRhLCB2b2lkICp1c2VyX2RhdGEp
CiB7CiAgICAgRWV0X0ZpbGUgKmVmOwpAQCAtNTA1LDYgKzUzMSw4IEBAIG9uX2tleV9kb3duKHZv
aWQgKnVzZXJfZGF0YSwgRXZhcyAqZSwgRXYKICAgICB9IGVsc2UgaWYgKCFzdHJjbXAoZXYtPmtl
eSwgIkVzY2FwZSIpKSB7CiAgICAgICAgIGlmIChldmFzX29iamVjdF92aXNpYmxlX2dldCh3aW5k
b3ctPnNlYXJjaC5zZWFyY2hfYmFyKSkKICAgICAgICAgICAgIHNlYXJjaF9ib3hfaGlkZSh3aW5k
b3cpOworICAgICAgICBlbHNlIGlmIChldmFzX29iamVjdF92aXNpYmxlX2dldCh3aW5kb3ctPmhp
c3RvcnkuaGlzdG9yeV9ib3gpKQorICAgICAgICAgICAgaGlzdG9yeV9saXN0X2hpZGUod2luZG93
KTsKICAgICAgICAgZWxzZSBpZiAoZWxtX3dpbl9mdWxsc2NyZWVuX2dldCh3aW5kb3ctPmVsbV93
aW5kb3cpKQogICAgICAgICAgICAgZXdrX3ZpZXdfZnVsbHNjcmVlbl9leGl0KGV3a192aWV3KTsK
ICAgICB9IGVsc2UgaWYgKGN0cmxQcmVzc2VkICYmICghc3RyY21wKGV2LT5rZXksICJtaW51cyIp
IHx8ICFzdHJjbXAoZXYtPmtleSwgIktQX1N1YnRyYWN0IikpKSB7CkBAIC01NjMsNiArNTkxLDgg
QEAgb25fbW91c2VfZG93bih2b2lkICp1c2VyX2RhdGEsIEV2YXMgKmUsCiAgICAgLyogQ2xlYXIg
c2VsZWN0aW9uIGZyb20gdGhlIFVSTCBiYXIgKi8KICAgICBlbG1fZW50cnlfc2VsZWN0X25vbmUo
d2luZG93LT51cmxfYmFyKTsKIAorICAgIGlmIChsb25ncHJlc3NfZW5hYmxlZCkKKyAgICAgICAg
aGlzdG9yeV9saXN0X2hpZGUod2luZG93KTsKICAgICBpZiAoZXYtPmJ1dHRvbiA9PSAxKQogICAg
ICAgICB2aWV3X2ZvY3VzX3NldCh3aW5kb3csIEVJTkFfVFJVRSk7CiAgICAgZWxzZSBpZiAoZXYt
PmJ1dHRvbiA9PSAyKQpAQCAtOTQ3LDYgKzk3NywyMiBAQCB1cmxfZnJvbV91c2VyX2lucHV0KGNv
bnN0IGNoYXIgKmFyZykKICAgICByZXR1cm4gdXJsOwogfQogCitzdGF0aWMgRWluYV9MaXN0ICoK
K2hpc3RvcnlfbGlzdF9nZXQodm9pZCAqdXNlcl9kYXRhKQoreworICAgIEJyb3dzZXJfV2luZG93
ICp3aW5kb3cgPSAoQnJvd3Nlcl9XaW5kb3cgKil1c2VyX2RhdGE7CisgICAgCisgICAgRWluYV9M
aXN0ICpoaXN0b3J5X2l0ZW1zID0gTlVMTDsKKyAgICBFd2tfQmFja19Gb3J3YXJkX0xpc3QgKmxp
c3QgPSBld2tfdmlld19iYWNrX2ZvcndhcmRfbGlzdF9nZXQod2luZG93LT5ld2tfdmlldyk7Cisg
ICAgCisgICAgaWYgKGZvcndhcmRfbmF2aWdhdGlvbl9lbmFibGVkKQorICAgICAgICBoaXN0b3J5
X2l0ZW1zID0gZXdrX2JhY2tfZm9yd2FyZF9saXN0X2ZvcndhcmRfaXRlbXNfY29weShsaXN0KTsg
CisgICAgZWxzZQorICAgICAgICBoaXN0b3J5X2l0ZW1zID0gZXdrX2JhY2tfZm9yd2FyZF9saXN0
X2JhY2tfaXRlbXNfY29weShsaXN0KTsKKworICAgIHJldHVybiBoaXN0b3J5X2l0ZW1zOworfQor
CiBzdGF0aWMgdm9pZAogb25fdXJsX2Jhcl9hY3RpdmF0ZWQodm9pZCAqdXNlcl9kYXRhLCBFdmFz
X09iamVjdCAqdXJsX2Jhciwgdm9pZCAqZXZlbnRfaW5mbykKIHsKQEAgLTEwMTIsNiArMTA1OCw5
IEBAIG9uX3NlYXJjaF9maWVsZF9jbGlja2VkKHZvaWQgKnVzZXJfZGF0YSwKIHN0YXRpYyB2b2lk
CiBvbl9iYWNrX2J1dHRvbl9jbGlja2VkKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKmJh
Y2tfYnV0dG9uLCB2b2lkICpldmVudF9pbmZvKQogeworICAgIGlmIChsb25ncHJlc3NfZW5hYmxl
ZCkKKyAgICAgICAgcmV0dXJuOworICAgIAogICAgIEJyb3dzZXJfV2luZG93ICp3aW5kb3cgPSAo
QnJvd3Nlcl9XaW5kb3cgKil1c2VyX2RhdGE7CiAKICAgICBld2tfdmlld19iYWNrKHdpbmRvdy0+
ZXdrX3ZpZXcpOwpAQCAtMTAyMiw2ICsxMDcxLDkgQEAgb25fYmFja19idXR0b25fY2xpY2tlZCh2
b2lkICp1c2VyX2RhdGEsCiBzdGF0aWMgdm9pZAogb25fZm9yd2FyZF9idXR0b25fY2xpY2tlZCh2
b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpmb3J3YXJkX2J1dHRvbiwgdm9pZCAqZXZlbnRf
aW5mbykKIHsKKyAgICBpZiAobG9uZ3ByZXNzX2VuYWJsZWQpCisgICAgICAgIHJldHVybjsKKwog
ICAgIEJyb3dzZXJfV2luZG93ICp3aW5kb3cgPSAoQnJvd3Nlcl9XaW5kb3cgKil1c2VyX2RhdGE7
CiAKICAgICBld2tfdmlld19mb3J3YXJkKHdpbmRvdy0+ZXdrX3ZpZXcpOwpAQCAtMTA3Myw2ICsx
MTI1LDExMiBAQCBvbl9yZWZyZXNoX2J1dHRvbl9jbGlja2VkKHZvaWQgKnVzZXJfZGF0CiAgICAg
fQogfQogCitzdGF0aWMgY2hhciAqCitsaXN0X2l0ZW1fbGFiZWxfZ2V0KHZvaWQgKmRhdGEsIEV2
YXNfT2JqZWN0ICpvYmosIGNvbnN0IGNoYXIqIHBhcnQpCit7CisgICAgaW50IGxlbiA9IHN0cmxl
bigoY2hhciopZGF0YSk7CisgICAgY2hhciAqYnVmID0gKGNoYXIqKW1hbGxvYyhzaXplb2YoY2hh
cikqKGxlbiArIDEpKTsKKyAgICBzbnByaW50ZihidWYsIGxlbiArIDEsICIlcyIsIChjaGFyKilk
YXRhKTsKKyAgICByZXR1cm4gc3RyZHVwKGJ1Zik7Cit9CisKK3N0YXRpYyB2b2lkCitvbl9saXN0
X2l0ZW1fc2VsZWN0KHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKm9iaiwgdm9pZCAqZXZl
bnRfaW5mbykKK3sKKyAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0gZXZhc19vYmplY3RfZGF0
YV9nZXQob2JqLCAiQnJvd3Nlcl9XaW5kb3ciKTsKKyAgICBld2tfdmlld19uYXZpZ2F0ZV90byh3
aW5kb3ctPmV3a192aWV3LCB1c2VyX2RhdGEpOyAKKyAgICBoaXN0b3J5X2xpc3RfaGlkZSh3aW5k
b3cpOworICAgIGV2YXNfb2JqZWN0X2RhdGFfZGVsKG9iaiwgIkJyb3dzZXJfV2luZG93Iik7Cit9
CisKK3N0YXRpYyB2b2lkCituYXZpZ2F0aW9uX2J1dHRvbl9sb25ncHJlc3NfcHJvY2Vzcyh2b2lk
ICp1c2VyX2RhdGEpCit7CisgICAgaWYgKGxvbmdwcmVzc19lbmFibGVkKQorICAgICAgICByZXR1
cm47CisKKyAgICBsb25ncHJlc3NfZW5hYmxlZCA9IEVJTkFfVFJVRTsKKyAgICBCcm93c2VyX1dp
bmRvdyAqd2luZG93ID0gKEJyb3dzZXJfV2luZG93ICopdXNlcl9kYXRhOworICAgIAorICAgIEVp
bmFfTGlzdCAqbGlzdCA9IGhpc3RvcnlfbGlzdF9nZXQodXNlcl9kYXRhKTsKKyAgICBjb25zdCBF
aW5hX0xpc3QgKmw7CisgICAgdm9pZCAqZGF0YTsKKyAgICBzdGF0aWMgRWxtX0dlbmxpc3RfSXRl
bV9DbGFzcyAqbGlzdF9pdGVtID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICp0aXRsZSA9IE5VTEw7
CisgICAgaW50IGl0ZW1fY291bnQ7CisgICAgaW50IHg7CisgICAgaW50IHk7CisgICAgaW50IHdp
ZHRoOworICAgIGludCBoZWlnaHQ7CisgICAgc2l6ZV90IGluZGV4OworCisgICAgZXZhc19vYmpl
Y3RfZGF0YV9zZXQod2luZG93LT5oaXN0b3J5Lmhpc3RvcnlfbGlzdCwgIkJyb3dzZXJfV2luZG93
Iiwgd2luZG93KTsKKyAgICBldmFzX29iamVjdF9yZWYod2luZG93LT5oaXN0b3J5Lmhpc3Rvcnlf
bGlzdCk7CisKKyAgICBpZiAoIWxpc3RfaXRlbSkgeworICAgICAgICBsaXN0X2l0ZW0gPSBlbG1f
Z2VubGlzdF9pdGVtX2NsYXNzX25ldygpOworICAgICAgICBsaXN0X2l0ZW0tPml0ZW1fc3R5bGUg
PSAiZGVmYXVsdCI7CisgICAgICAgIGxpc3RfaXRlbS0+ZnVuYy50ZXh0X2dldCA9IGxpc3RfaXRl
bV9sYWJlbF9nZXQ7CisgICAgICAgIGxpc3RfaXRlbS0+ZnVuYy5jb250ZW50X2dldCA9IE5VTEw7
CisgICAgICAgIGxpc3RfaXRlbS0+ZnVuYy5zdGF0ZV9nZXQgPSBOVUxMOworICAgICAgICBsaXN0
X2l0ZW0tPmZ1bmMuZGVsID0gTlVMTDsKKyAgICB9CisKKyAgICBpdGVtX2NvdW50ID0gZWluYV9s
aXN0X2NvdW50KGxpc3QpOworICAgIGluZm8oIm5hdmlnYXRpb25fYnV0dG9uX2xvbmdwcmVzc19w
cm9jZXNzIDogSXRlbSBjb3VudCA9ICVkIGZvcndhcmRfbmF2aWdhdGlvbl9lbmFibGVkID0gJWQi
LCBpdGVtX2NvdW50LCBmb3J3YXJkX25hdmlnYXRpb25fZW5hYmxlZCk7CisKKyAgICBFSU5BX0xJ
U1RfRk9SRUFDSChsaXN0LCBsLCBkYXRhKSB7CisgICAgICAgIHRpdGxlID0gZXdrX2JhY2tfZm9y
d2FyZF9saXN0X2l0ZW1fdGl0bGVfZ2V0KGRhdGEpOworICAgICAgICBpbmZvKCIgdGl0bGUgPSAl
cyIsIHRpdGxlKTsKKyAgICAgICAgZWxtX2dlbmxpc3RfaXRlbV9hcHBlbmQod2luZG93LT5oaXN0
b3J5Lmhpc3RvcnlfbGlzdCwgbGlzdF9pdGVtLCAodm9pZCopKHRpdGxlKSwgTlVMTCwgRUxNX0dF
TkxJU1RfSVRFTV9OT05FLCBvbl9saXN0X2l0ZW1fc2VsZWN0LCBkYXRhKTsKKyAgICB9CisgICAg
ICAgIAorICAgIEVJTkFfTElTVF9GUkVFKGxpc3QsIGRhdGEpOworICAgIAorICAgIGlmIChpdGVt
X2NvdW50ID4gMCkgeworICAgICAgICBldmFzX29iamVjdF9nZW9tZXRyeV9nZXQod2luZG93LT5l
bG1fd2luZG93LCAmeCwgJnksICZ3aWR0aCwgJmhlaWdodCk7CisgICAgICAgIGVsbV9saXN0X2dv
KHdpbmRvdy0+aGlzdG9yeS5oaXN0b3J5X2xpc3QpOworICAgICAgICBldmFzX29iamVjdF9yZXNp
emUod2luZG93LT5oaXN0b3J5Lmhpc3RvcnlfYm94ICwgd2lkdGggLyAzICwgTElTVF9JVEVNX0hF
SUdIVCAqIGl0ZW1fY291bnQpOworCisgICAgICAgIGlmIChmb3J3YXJkX25hdmlnYXRpb25fZW5h
YmxlZCkgeworICAgICAgICAgICAgZXZhc19vYmplY3RfbW92ZSh3aW5kb3ctPmhpc3RvcnkuaGlz
dG9yeV9ib3ggLCB4ICsgVE9PTF9CQVJfQlVUVE9OX1NJWkUgKyAxLCB5ICsgVE9PTF9CQVJfQlVU
VE9OX1NJWkUpOworICAgICAgICAgICAgZXZhc19vYmplY3RfbW92ZSh3aW5kb3ctPmhpc3Rvcnku
aGlzdG9yeV9saXN0ICwgeCArIFRPT0xfQkFSX0JVVFRPTl9TSVpFICsgMSwgeSArIFRPT0xfQkFS
X0JVVFRPTl9TSVpFKTsgIAorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZXZhc19vYmpl
Y3RfbW92ZSh3aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9ib3ggLCB4LCB5ICsgVE9PTF9CQVJfQlVU
VE9OX1NJWkUpOworICAgICAgICAgICAgZXZhc19vYmplY3RfbW92ZSh3aW5kb3ctPmhpc3Rvcnku
aGlzdG9yeV9saXN0ICwgeCwgeSArIFRPT0xfQkFSX0JVVFRPTl9TSVpFKTsgIAorICAgICAgICB9
CisgICAgCisgICAgICAgIGVsbV9nZW5saXN0X21vZGVfc2V0KHdpbmRvdy0+aGlzdG9yeS5oaXN0
b3J5X2xpc3QsIEVMTV9MSVNUX0NPTVBSRVNTKTsKKyAgICAgICAgZXZhc19vYmplY3Rfc2hvdyh3
aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9ib3gpOworICAgICAgICBldmFzX29iamVjdF9zaG93KHdp
bmRvdy0+aGlzdG9yeS5oaXN0b3J5X2xpc3QpOworICAgICAgICBldmFzX29iamVjdF9mb2N1c19z
ZXQod2luZG93LT5ld2tfdmlldywgRUlOQV9GQUxTRSk7CisgICAgICAgIGVsbV9vYmplY3RfZm9j
dXNfc2V0KHdpbmRvdy0+aGlzdG9yeS5oaXN0b3J5X2xpc3QsIEVJTkFfVFJVRSk7CisgICAgfSBl
bHNlCisgICAgICAgIGxvbmdwcmVzc19lbmFibGVkID0gRUlOQV9GQUxTRTsKKyAgICAKKyAgICBl
dmFzX29iamVjdF91bnJlZih3aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9saXN0KTsgCit9CisKK3N0
YXRpYyB2b2lkCitvbl9mb3J3YXJkX2J1dHRvbl9sb25ncHJlc3Modm9pZCAqdXNlcl9kYXRhLCBF
dmFzX09iamVjdCAqZm9yd2FyZF9idXR0b24sIHZvaWQgKmV2ZW50X2luZm8pCit7CisgICAgQnJv
d3Nlcl9XaW5kb3cgKndpbmRvdyA9IChCcm93c2VyX1dpbmRvdyAqKXVzZXJfZGF0YTsKKworICAg
IGZvcndhcmRfbmF2aWdhdGlvbl9lbmFibGVkID0gRUlOQV9UUlVFOworICAgIG5hdmlnYXRpb25f
YnV0dG9uX2xvbmdwcmVzc19wcm9jZXNzKHVzZXJfZGF0YSk7CisgICAgZWxtX29iamVjdF9kaXNh
YmxlZF9zZXQoZm9yd2FyZF9idXR0b24sICFld2tfdmlld19iYWNrX3Bvc3NpYmxlKHdpbmRvdy0+
ZXdrX3ZpZXcpKTsKK30KKworc3RhdGljIHZvaWQKK29uX2JhY2tfYnV0dG9uX2xvbmdwcmVzcyh2
b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpiYWNrX2J1dHRvbiwgdm9pZCAqZXZlbnRfaW5m
bykKK3sKKyAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0gKEJyb3dzZXJfV2luZG93ICopdXNl
cl9kYXRhOworCisgICAgZm9yd2FyZF9uYXZpZ2F0aW9uX2VuYWJsZWQgPSBFSU5BX0ZBTFNFOwor
ICAgIG5hdmlnYXRpb25fYnV0dG9uX2xvbmdwcmVzc19wcm9jZXNzKHVzZXJfZGF0YSk7CisgICAg
ZWxtX29iamVjdF9kaXNhYmxlZF9zZXQoYmFja19idXR0b24sICFld2tfdmlld19iYWNrX3Bvc3Np
YmxlKHdpbmRvdy0+ZXdrX3ZpZXcpKTsKK30KKwogc3RhdGljIHZvaWQKIHF1aXRfZXZlbnRfbG9v
cCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpvYmosIHZvaWQgKmV2ZW50X2luZm8pCiB7
CkBAIC0xODA0LDYgKzE5NjIsNyBAQCBzdGF0aWMgQnJvd3Nlcl9XaW5kb3cgKndpbmRvd19jcmVh
dGUoRXZhCiAgICAgLyogQ3JlYXRlIEJhY2sgYnV0dG9uICovCiAgICAgd2luZG93LT5iYWNrX2J1
dHRvbiA9IGNyZWF0ZV90b29sYmFyX2J1dHRvbih3aW5kb3ctPmVsbV93aW5kb3csICJhcnJvd19s
ZWZ0Iik7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+YmFja19i
dXR0b24sICJjbGlja2VkIiwgb25fYmFja19idXR0b25fY2xpY2tlZCwgd2luZG93KTsKKyAgICBl
dmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2luZG93LT5iYWNrX2J1dHRvbiwgInJlcGVh
dGVkIiwgb25fYmFja19idXR0b25fbG9uZ3ByZXNzLCB3aW5kb3cpOwogICAgIGVsbV9vYmplY3Rf
ZGlzYWJsZWRfc2V0KHdpbmRvdy0+YmFja19idXR0b24sIEVJTkFfVFJVRSk7CiAgICAgZXZhc19v
YmplY3Rfc2l6ZV9oaW50X3dlaWdodF9zZXQod2luZG93LT5iYWNrX2J1dHRvbiwgMC4wLCBFVkFT
X0hJTlRfRVhQQU5EKTsKICAgICBldmFzX29iamVjdF9zaXplX2hpbnRfYWxpZ25fc2V0KHdpbmRv
dy0+YmFja19idXR0b24sIDAuMCwgMC41KTsKQEAgLTE4MTMsNiArMTk3Miw3IEBAIHN0YXRpYyBC
cm93c2VyX1dpbmRvdyAqd2luZG93X2NyZWF0ZShFdmEKICAgICAvKiBDcmVhdGUgRm9yd2FyZCBi
dXR0b24gKi8KICAgICB3aW5kb3ctPmZvcndhcmRfYnV0dG9uID0gY3JlYXRlX3Rvb2xiYXJfYnV0
dG9uKHdpbmRvdy0+ZWxtX3dpbmRvdywgImFycm93X3JpZ2h0Iik7CiAgICAgZXZhc19vYmplY3Rf
c21hcnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+Zm9yd2FyZF9idXR0b24sICJjbGlja2VkIiwgb25f
Zm9yd2FyZF9idXR0b25fY2xpY2tlZCwgd2luZG93KTsKKyAgICBldmFzX29iamVjdF9zbWFydF9j
YWxsYmFja19hZGQod2luZG93LT5mb3J3YXJkX2J1dHRvbiwgInJlcGVhdGVkIiwgb25fZm9yd2Fy
ZF9idXR0b25fbG9uZ3ByZXNzLCB3aW5kb3cpOwogICAgIGVsbV9vYmplY3RfZGlzYWJsZWRfc2V0
KHdpbmRvdy0+Zm9yd2FyZF9idXR0b24sIEVJTkFfVFJVRSk7CiAgICAgZXZhc19vYmplY3Rfc2l6
ZV9oaW50X3dlaWdodF9zZXQod2luZG93LT5mb3J3YXJkX2J1dHRvbiwgMC4wLCBFVkFTX0hJTlRf
RVhQQU5EKTsKICAgICBldmFzX29iamVjdF9zaXplX2hpbnRfYWxpZ25fc2V0KHdpbmRvdy0+Zm9y
d2FyZF9idXR0b24sIDAuMCwgMC41KTsKQEAgLTE5MDYsNiArMjA2NiwxOCBAQCBzdGF0aWMgQnJv
d3Nlcl9XaW5kb3cgKndpbmRvd19jcmVhdGUoRXZhCiAgICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50
X21pbl9zZXQod2luZG93LT5zZWFyY2guY2xvc2VfYnV0dG9uLCBTRUFSQ0hfQlVUVE9OX1NJWkUs
IFNFQVJDSF9CVVRUT05fU0laRSk7CiAgICAgZWxtX2JveF9wYWNrX2VuZCh3aW5kb3ctPnNlYXJj
aC5zZWFyY2hfYmFyLCB3aW5kb3ctPnNlYXJjaC5jbG9zZV9idXR0b24pOwogCisgICAgLyogQ3Jl
YXRlIGhpc3RvcnkgYm94ICovCisgICAgd2luZG93LT5oaXN0b3J5Lmhpc3RvcnlfYm94ID0gZWxt
X2JveF9hZGQod2luZG93LT5lbG1fd2luZG93KTsKKyAgICBldmFzX29iamVjdF9zaXplX2hpbnRf
YXNwZWN0X3NldCh3aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9ib3gsIEVWQVNfQVNQRUNUX0NPTlRS
T0xfVkVSVElDQUwsIDEsIDEpOworICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF93ZWlnaHRfc2V0
KHdpbmRvdy0+aGlzdG9yeS5oaXN0b3J5X2JveCwgRVZBU19ISU5UX0VYUEFORCAsIEVWQVNfSElO
VF9FWFBBTkQpOworCisgICAgLyogQ3JlYXRlIGhpc3RvcnkgbGlzdCAqLworICAgIHdpbmRvdy0+
aGlzdG9yeS5oaXN0b3J5X2xpc3QgPSBlbG1fZ2VubGlzdF9hZGQod2luZG93LT5lbG1fd2luZG93
KTsKKyAgICBldmFzX29iamVjdF9zaXplX2hpbnRfd2VpZ2h0X3NldCh3aW5kb3ctPmhpc3Rvcnku
aGlzdG9yeV9saXN0LCBFVkFTX0hJTlRfRVhQQU5ELCBFVkFTX0hJTlRfRVhQQU5EKTsKKyAgICBl
dmFzX29iamVjdF9zaXplX2hpbnRfYWxpZ25fc2V0KHdpbmRvdy0+aGlzdG9yeS5oaXN0b3J5X2xp
c3QsIEVWQVNfSElOVF9GSUxMLCBFVkFTX0hJTlRfRklMTCk7CisgICAgZWxtX3dpbl9yZXNpemVf
b2JqZWN0X2FkZCh3aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9saXN0LCB3aW5kb3ctPmhpc3Rvcnku
aGlzdG9yeV9ib3gpOworICAgIGVsbV9ib3hfcGFja19lbmQod2luZG93LT5oaXN0b3J5Lmhpc3Rv
cnlfYm94LCB3aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9saXN0KTsKKyAgICAKICAgICAvKiBDcmVh
dGUgZXdrX3ZpZXcgKi8KICAgICBFd2tfVmlld19TbWFydF9DbGFzcyAqZXdrVmlld0NsYXNzID0g
bWluaUJyb3dzZXJWaWV3U21hcnRDbGFzcygpOwogICAgIGV3a1ZpZXdDbGFzcy0+cnVuX2phdmFz
Y3JpcHRfYWxlcnQgPSBvbl9qYXZhc2NyaXB0X2FsZXJ0OwpAQCAtMTk5OCw2ICsyMTcwLDExIEBA
IHN0YXRpYyBCcm93c2VyX1dpbmRvdyAqd2luZG93X2NyZWF0ZShFdmEKICAgICBldmFzX29iamVj
dF9ldmVudF9jYWxsYmFja19hZGQod2luZG93LT5ld2tfdmlldywgRVZBU19DQUxMQkFDS19NT1VT
RV9PVVQsIG9uX21vdXNlX291dCwgd2luZG93KTsKICAgICBldmFzX29iamVjdF9ldmVudF9jYWxs
YmFja19hZGQod2luZG93LT5ld2tfdmlldywgRVZBU19DQUxMQkFDS19NT1VTRV9NT1ZFLCBvbl9t
b3VzZV9tb3ZlLCB3aW5kb3cpOwogICAgIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2FkZCh3
aW5kb3ctPmVsbV93aW5kb3csIEVWQVNfQ0FMTEJBQ0tfUkVTSVpFLCBvbl93aW5kb3dfcmVzaXpl
LCB3aW5kb3cpOworICAgIAorICAgIGVsbV9idXR0b25fYXV0b3JlcGVhdF9zZXQod2luZG93LT5i
YWNrX2J1dHRvbiwgRUlOQV9UUlVFKTsKKyAgICBlbG1fYnV0dG9uX2F1dG9yZXBlYXRfc2V0KHdp
bmRvdy0+Zm9yd2FyZF9idXR0b24sIEVJTkFfVFJVRSk7CisgICAgZWxtX2J1dHRvbl9hdXRvcmVw
ZWF0X2luaXRpYWxfdGltZW91dF9zZXQod2luZG93LT5iYWNrX2J1dHRvbiwgTE9OR1BSRVNTX0lO
VEVSVkFMX1NFQ09ORFMpOworICAgIGVsbV9idXR0b25fYXV0b3JlcGVhdF9pbml0aWFsX3RpbWVv
dXRfc2V0KHdpbmRvdy0+Zm9yd2FyZF9idXR0b24sIExPTkdQUkVTU19JTlRFUlZBTF9TRUNPTkRT
KTsKIAogICAgIHJldHVybiB3aW5kb3c7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236868</attachid>
            <date>2014-08-20 06:26:30 -0700</date>
            <delta_ts>2014-08-22 04:00:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135795-20140820185656.patch</filename>
            <type>text/plain</type>
            <size>13030</size>
            <attacher name="Tanay">tanay.c</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE3Mjc5NikKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDI0IEBACisyMDE0LTA4LTIwICBUYW5heSBDICA8dGFuYXkuY0BzYW1zdW5nLmNvbT4KKwor
ICAgICAgICBbRUZMXVtXSzJdIE1pbmlicm93c2VyIDogRW5oYW5jZSBhcHBsaWNhdGlvbiB0byBi
ZSBhYmxlIHRvIHN1cHBvcnQgaGlzdG9yeSBsaXN0IG5hdmlnYXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTc5NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWluaUJyb3dzZXIvZWZsL21haW4u
YzogQWRkaW5nIGZ1bmN0aW9uYWxpdHkgZm9yIGxvbmcgcHJlc3MgaGlzdG9yeSBsaXN0IG5hdmln
YXRpb24KKyAgICAgICAgKGhpc3RvcnlfbGlzdF9oaWRlKTogRnVuY3Rpb25hbGl0eSB0byBoaWRl
IHRoZSBoaXN0b3J5IGxpc3QKKyAgICAgICAgKG9uX2tleV9kb3duKToKKyAgICAgICAgKG9uX21v
dXNlX2Rvd24pOgorICAgICAgICAoaGlzdG9yeV9saXN0X2dldCk6IFJldHVybiB0aGUgY3JlYXRl
ZCBsaXN0CisgICAgICAgIChvbl9iYWNrX2J1dHRvbl9jbGlja2VkKToKKyAgICAgICAgKG9uX2Zv
cndhcmRfYnV0dG9uX2NsaWNrZWQpOgorICAgICAgICAobGlzdF9pdGVtX2xhYmVsX2dldCk6IFBv
cHVsYXRlIGl0ZW0gbGFiZWxzCisgICAgICAgIChvbl9saXN0X2l0ZW1fc2VsZWN0KTogTmF2aWdh
dGVzIG9uIHNlbGVjdGlvbiBmcm9tIGhpc3RvcnkgbGlzdAorICAgICAgICAobmF2aWdhdGlvbl9i
dXR0b25fbG9uZ3ByZXNzX3Byb2Nlc3MpOiBQb3B1bGF0ZXMgdGhlIGhpc3RvcnkgbGlzdCBhbmQg
ZGlzcGxheXMgaXQKKyAgICAgICAgKG9uX2ZvcndhcmRfYnV0dG9uX2xvbmdwcmVzcyk6CisgICAg
ICAgIChvbl9iYWNrX2J1dHRvbl9sb25ncHJlc3MpOiAKKyAgICAgICAgKHdpbmRvd19jcmVhdGUp
OiBBZGQgdGhlIHdpZGdldCBmb3IgaGlzdG9yeSBsaXN0CisKIDIwMTQtMDgtMTkgIERhbiBCZXJu
c3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAgICB1cGRhdGUtd2Via2l0IHNob3VsZCBu
b3QgY2hlY2sgZm9yIHRoZSBwcmVzZW5jZSBvZiBBcHBsZeKAmXMgSW50ZXJuYWwgZGlyZWN0b3J5
CkluZGV4OiBUb29scy9NaW5pQnJvd3Nlci9lZmwvbWFpbi5jCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L01pbmlCcm93c2VyL2VmbC9tYWluLmMJKHJldmlzaW9uIDE3Mjc5NikKKysrIFRvb2xzL01pbmlC
cm93c2VyL2VmbC9tYWluLmMJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDggQEAgc3RhdGlj
IGNvbnN0IGludCBTRUFSQ0hfQlVUVE9OX1NJWkUgPSAzMAogc3RhdGljIGNvbnN0IGludCBNQVhf
U0VBUkNIX0NPVU5UID0gMTAwOwogc3RhdGljIGNvbnN0IGludCBERUZBVUxUX1NFQVJDSF9GTEFH
UyA9IEVXS19GSU5EX09QVElPTlNfU0hPV19ISUdITElHSFQgfCBFV0tfRklORF9PUFRJT05TX0NB
U0VfSU5TRU5TSVRJVkUgfCBFV0tfRklORF9PUFRJT05TX1dSQVBfQVJPVU5EOwogc3RhdGljIGNv
bnN0IGRvdWJsZSBUT09MVElQX0RFTEFZX1NFQ09ORFMgPSAxLjA7CitzdGF0aWMgY29uc3QgZG91
YmxlIExPTkdQUkVTU19JTlRFUlZBTF9TRUNPTkRTID0gMS41Oworc3RhdGljIGNvbnN0IGRvdWJs
ZSBMSVNUX0lURU1fSEVJR0hUID0gMjQuMzU7CiAKICNkZWZpbmUgaW5mbyhmb3JtYXQsIGFyZ3Mu
Li4pICAgICAgIFwKICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTU2
LDYgKzU4LDggQEAgc3RhdGljIEVpbmFfQm9vbCB3ZWJfc2VjdXJpdHlfZW5hYmxlZCA9CiBzdGF0
aWMgRWluYV9Cb29sIHRvdWNoX2V2ZW50c19lbmFibGVkID0gRUlOQV9GQUxTRTsKIHN0YXRpYyBF
aW5hX0Jvb2wgZml4ZWRfbGF5b3V0X2VuYWJsZWQgPSBFSU5BX0ZBTFNFOwogc3RhdGljIEVpbmFf
Qm9vbCBzZXBhcmF0ZWRfcHJvY2Vzc19lbmFibGVkID0gRUlOQV9GQUxTRTsKK3N0YXRpYyBFaW5h
X0Jvb2wgbG9uZ3ByZXNzX2VuYWJsZWQgPSBFSU5BX0ZBTFNFOworc3RhdGljIEVpbmFfQm9vbCBm
b3J3YXJkX25hdmlnYXRpb25fZW5hYmxlZCA9IEVJTkFfRkFMU0U7CiBzdGF0aWMgaW50IHdpbmRv
d193aWR0aCA9IDgwMDsKIHN0YXRpYyBpbnQgd2luZG93X2hlaWdodCA9IDYwMDsKIC8qIERlZmF1
bHQgdmFsdWUgb2YgZGV2aWNlX3BpeGVsX3JhdGlvIGlzICcwJyBzbyB0aGF0IHdlIGRvbid0IHNl
dCBjdXN0b20gZGV2aWNlCkBAIC0xMTMsNiArMTE3LDEwIEBAIHR5cGVkZWYgc3RydWN0IF9Ccm93
c2VyX1dpbmRvdyB7CiAgICAgICAgIEV2YXNfT2JqZWN0ICpmb3J3YXJkX2J1dHRvbjsKICAgICAg
ICAgRXZhc19PYmplY3QgKmNsb3NlX2J1dHRvbjsKICAgICB9IHNlYXJjaDsKKyAgICBzdHJ1Y3Qg
eworICAgICAgICBFdmFzX09iamVjdCAqaGlzdG9yeV9ib3g7CisgICAgICAgIEV2YXNfT2JqZWN0
ICpoaXN0b3J5X2xpc3Q7CisgICAgfSBoaXN0b3J5OwogICAgIGludCBjdXJyZW50X3pvb21fbGV2
ZWw7IAogICAgIFRvb2x0aXBfSW5mb3JtYXRpb24gdG9vbHRpcDsKICAgICBDb2xvcl9TZWxlY3Rv
ciBjb2xvcl9zZWxlY3RvcjsKQEAgLTM5OCw2ICs0MDYsMjQgQEAgc2VhcmNoX2JveF9oaWRlKEJy
b3dzZXJfV2luZG93ICp3aW5kb3cpCiAgICAgZXZhc19vYmplY3RfZm9jdXNfc2V0KHdpbmRvdy0+
ZXdrX3ZpZXcsIEVJTkFfVFJVRSk7CiB9CiAKK3N0YXRpYyB2b2lkIAoraGlzdG9yeV9saXN0X2hp
ZGUoQnJvd3Nlcl9XaW5kb3cgKndpbmRvdykKK3sKKyAgICAvKiBIaWRlIGFuZCBjbGVhciB0aGUg
aGlzdG9yeSBsaXN0ICovCisgICAgZXZhc19vYmplY3RfaGlkZSh3aW5kb3ctPmhpc3RvcnkuaGlz
dG9yeV9ib3gpOworICAgIGV2YXNfb2JqZWN0X2hpZGUod2luZG93LT5oaXN0b3J5Lmhpc3Rvcnlf
bGlzdCk7CisgICAgZWxtX2dlbmxpc3RfY2xlYXIod2luZG93LT5oaXN0b3J5Lmhpc3RvcnlfbGlz
dCk7CisKKyAgICAvKiBHaXZlIGZvY3VzIGJhY2sgdG8gdGhlIHZpZXcgKi8KKyAgICBlbG1fb2Jq
ZWN0X2ZvY3VzX3NldCh3aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9ib3gsIEVJTkFfRkFMU0UpOwor
ICAgIGVsbV9vYmplY3RfZm9jdXNfc2V0KHdpbmRvdy0+aGlzdG9yeS5oaXN0b3J5X2xpc3QsIEVJ
TkFfRkFMU0UpOworICAgIGV2YXNfb2JqZWN0X2ZvY3VzX3NldCh3aW5kb3ctPmV3a192aWV3LCBF
SU5BX1RSVUUpOworCisgICAgLyogUmVzZXQgZmxhZ3MgKi8KKyAgICBsb25ncHJlc3NfZW5hYmxl
ZCA9IEVJTkFfRkFMU0U7CisgICAgZm9yd2FyZF9uYXZpZ2F0aW9uX2VuYWJsZWQgPSBFSU5BX0ZB
TFNFOworfSAKKwogc3RhdGljIHZvaWQgc2F2ZV9wYWdlX2NvbnRlbnRzX2NhbGxiYWNrKEV3a19Q
YWdlX0NvbnRlbnRzX1R5cGUgdHlwZSwgY29uc3QgY2hhciAqZGF0YSwgdm9pZCAqdXNlcl9kYXRh
KQogewogICAgIEVldF9GaWxlICplZjsKQEAgLTUwNSw2ICs1MzEsOCBAQCBvbl9rZXlfZG93bih2
b2lkICp1c2VyX2RhdGEsIEV2YXMgKmUsIEV2CiAgICAgfSBlbHNlIGlmICghc3RyY21wKGV2LT5r
ZXksICJFc2NhcGUiKSkgewogICAgICAgICBpZiAoZXZhc19vYmplY3RfdmlzaWJsZV9nZXQod2lu
ZG93LT5zZWFyY2guc2VhcmNoX2JhcikpCiAgICAgICAgICAgICBzZWFyY2hfYm94X2hpZGUod2lu
ZG93KTsKKyAgICAgICAgZWxzZSBpZiAoZXZhc19vYmplY3RfdmlzaWJsZV9nZXQod2luZG93LT5o
aXN0b3J5Lmhpc3RvcnlfYm94KSkKKyAgICAgICAgICAgIGhpc3RvcnlfbGlzdF9oaWRlKHdpbmRv
dyk7CiAgICAgICAgIGVsc2UgaWYgKGVsbV93aW5fZnVsbHNjcmVlbl9nZXQod2luZG93LT5lbG1f
d2luZG93KSkKICAgICAgICAgICAgIGV3a192aWV3X2Z1bGxzY3JlZW5fZXhpdChld2tfdmlldyk7
CiAgICAgfSBlbHNlIGlmIChjdHJsUHJlc3NlZCAmJiAoIXN0cmNtcChldi0+a2V5LCAibWludXMi
KSB8fCAhc3RyY21wKGV2LT5rZXksICJLUF9TdWJ0cmFjdCIpKSkgewpAQCAtNTYzLDYgKzU5MSw4
IEBAIG9uX21vdXNlX2Rvd24odm9pZCAqdXNlcl9kYXRhLCBFdmFzICplLAogICAgIC8qIENsZWFy
IHNlbGVjdGlvbiBmcm9tIHRoZSBVUkwgYmFyICovCiAgICAgZWxtX2VudHJ5X3NlbGVjdF9ub25l
KHdpbmRvdy0+dXJsX2Jhcik7CiAKKyAgICBpZiAobG9uZ3ByZXNzX2VuYWJsZWQpCisgICAgICAg
IGhpc3RvcnlfbGlzdF9oaWRlKHdpbmRvdyk7CiAgICAgaWYgKGV2LT5idXR0b24gPT0gMSkKICAg
ICAgICAgdmlld19mb2N1c19zZXQod2luZG93LCBFSU5BX1RSVUUpOwogICAgIGVsc2UgaWYgKGV2
LT5idXR0b24gPT0gMikKQEAgLTk0Nyw2ICs5NzcsMjIgQEAgdXJsX2Zyb21fdXNlcl9pbnB1dChj
b25zdCBjaGFyICphcmcpCiAgICAgcmV0dXJuIHVybDsKIH0KIAorc3RhdGljIEVpbmFfTGlzdCAq
CitoaXN0b3J5X2xpc3RfZ2V0KHZvaWQgKnVzZXJfZGF0YSkKK3sKKyAgICBCcm93c2VyX1dpbmRv
dyAqd2luZG93ID0gKEJyb3dzZXJfV2luZG93ICopdXNlcl9kYXRhOworICAgIAorICAgIEVpbmFf
TGlzdCAqaGlzdG9yeV9pdGVtcyA9IE5VTEw7CisgICAgRXdrX0JhY2tfRm9yd2FyZF9MaXN0ICps
aXN0ID0gZXdrX3ZpZXdfYmFja19mb3J3YXJkX2xpc3RfZ2V0KHdpbmRvdy0+ZXdrX3ZpZXcpOwor
ICAgIAorICAgIGlmIChmb3J3YXJkX25hdmlnYXRpb25fZW5hYmxlZCkKKyAgICAgICAgaGlzdG9y
eV9pdGVtcyA9IGV3a19iYWNrX2ZvcndhcmRfbGlzdF9mb3J3YXJkX2l0ZW1zX2NvcHkobGlzdCk7
IAorICAgIGVsc2UKKyAgICAgICAgaGlzdG9yeV9pdGVtcyA9IGV3a19iYWNrX2ZvcndhcmRfbGlz
dF9iYWNrX2l0ZW1zX2NvcHkobGlzdCk7CisKKyAgICByZXR1cm4gaGlzdG9yeV9pdGVtczsKK30K
Kwogc3RhdGljIHZvaWQKIG9uX3VybF9iYXJfYWN0aXZhdGVkKHZvaWQgKnVzZXJfZGF0YSwgRXZh
c19PYmplY3QgKnVybF9iYXIsIHZvaWQgKmV2ZW50X2luZm8pCiB7CkBAIC0xMDEyLDYgKzEwNTgs
OSBAQCBvbl9zZWFyY2hfZmllbGRfY2xpY2tlZCh2b2lkICp1c2VyX2RhdGEsCiBzdGF0aWMgdm9p
ZAogb25fYmFja19idXR0b25fY2xpY2tlZCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpi
YWNrX2J1dHRvbiwgdm9pZCAqZXZlbnRfaW5mbykKIHsKKyAgICBpZiAobG9uZ3ByZXNzX2VuYWJs
ZWQpCisgICAgICAgIHJldHVybjsKKyAgICAKICAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0g
KEJyb3dzZXJfV2luZG93ICopdXNlcl9kYXRhOwogCiAgICAgZXdrX3ZpZXdfYmFjayh3aW5kb3ct
PmV3a192aWV3KTsKQEAgLTEwMjIsNiArMTA3MSw5IEBAIG9uX2JhY2tfYnV0dG9uX2NsaWNrZWQo
dm9pZCAqdXNlcl9kYXRhLAogc3RhdGljIHZvaWQKIG9uX2ZvcndhcmRfYnV0dG9uX2NsaWNrZWQo
dm9pZCAqdXNlcl9kYXRhLCBFdmFzX09iamVjdCAqZm9yd2FyZF9idXR0b24sIHZvaWQgKmV2ZW50
X2luZm8pCiB7CisgICAgaWYgKGxvbmdwcmVzc19lbmFibGVkKQorICAgICAgICByZXR1cm47CisK
ICAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0gKEJyb3dzZXJfV2luZG93ICopdXNlcl9kYXRh
OwogCiAgICAgZXdrX3ZpZXdfZm9yd2FyZCh3aW5kb3ctPmV3a192aWV3KTsKQEAgLTEwNzMsNiAr
MTEyNSwxMTIgQEAgb25fcmVmcmVzaF9idXR0b25fY2xpY2tlZCh2b2lkICp1c2VyX2RhdAogICAg
IH0KIH0KIAorc3RhdGljIGNoYXIgKgorbGlzdF9pdGVtX2xhYmVsX2dldCh2b2lkICpkYXRhLCBF
dmFzX09iamVjdCAqb2JqLCBjb25zdCBjaGFyICpwYXJ0KQoreworICAgIGludCBsZW4gPSBzdHJs
ZW4oKGNoYXIgKilkYXRhKTsKKyAgICBjaGFyICpidWYgPSAoY2hhciAqKW1hbGxvYyhzaXplb2Yo
Y2hhcikgKiAobGVuICsgMSkpOworICAgIHNucHJpbnRmKGJ1ZiwgbGVuICsgMSwgIiVzIiwgKGNo
YXIgKilkYXRhKTsKKyAgICByZXR1cm4gc3RyZHVwKGJ1Zik7Cit9CisKK3N0YXRpYyB2b2lkCitv
bl9saXN0X2l0ZW1fc2VsZWN0KHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKm9iaiwgdm9p
ZCAqZXZlbnRfaW5mbykKK3sKKyAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0gZXZhc19vYmpl
Y3RfZGF0YV9nZXQob2JqLCAiQnJvd3Nlcl9XaW5kb3ciKTsKKyAgICBld2tfdmlld19uYXZpZ2F0
ZV90byh3aW5kb3ctPmV3a192aWV3LCB1c2VyX2RhdGEpOyAKKyAgICBoaXN0b3J5X2xpc3RfaGlk
ZSh3aW5kb3cpOworICAgIGV2YXNfb2JqZWN0X2RhdGFfZGVsKG9iaiwgIkJyb3dzZXJfV2luZG93
Iik7Cit9CisKK3N0YXRpYyB2b2lkCituYXZpZ2F0aW9uX2J1dHRvbl9sb25ncHJlc3NfcHJvY2Vz
cyh2b2lkICp1c2VyX2RhdGEpCit7CisgICAgaWYgKGxvbmdwcmVzc19lbmFibGVkKQorICAgICAg
ICByZXR1cm47CisKKyAgICBsb25ncHJlc3NfZW5hYmxlZCA9IEVJTkFfVFJVRTsKKyAgICBCcm93
c2VyX1dpbmRvdyAqd2luZG93ID0gKEJyb3dzZXJfV2luZG93ICopdXNlcl9kYXRhOworICAgIAor
ICAgIEVpbmFfTGlzdCAqbGlzdCA9IGhpc3RvcnlfbGlzdF9nZXQodXNlcl9kYXRhKTsKKyAgICBj
b25zdCBFaW5hX0xpc3QgKmw7CisgICAgdm9pZCAqZGF0YTsKKyAgICBzdGF0aWMgRWxtX0dlbmxp
c3RfSXRlbV9DbGFzcyAqbGlzdF9pdGVtID0gTlVMTDsKKyAgICBjb25zdCBjaGFyICp0aXRsZSA9
IE5VTEw7CisgICAgaW50IGl0ZW1fY291bnQ7CisgICAgaW50IHg7CisgICAgaW50IHk7CisgICAg
aW50IHdpZHRoOworICAgIGludCBoZWlnaHQ7CisgICAgc2l6ZV90IGluZGV4OworCisgICAgZXZh
c19vYmplY3RfZGF0YV9zZXQod2luZG93LT5oaXN0b3J5Lmhpc3RvcnlfbGlzdCwgIkJyb3dzZXJf
V2luZG93Iiwgd2luZG93KTsKKyAgICBldmFzX29iamVjdF9yZWYod2luZG93LT5oaXN0b3J5Lmhp
c3RvcnlfbGlzdCk7CisKKyAgICBpZiAoIWxpc3RfaXRlbSkgeworICAgICAgICBsaXN0X2l0ZW0g
PSBlbG1fZ2VubGlzdF9pdGVtX2NsYXNzX25ldygpOworICAgICAgICBsaXN0X2l0ZW0tPml0ZW1f
c3R5bGUgPSAiZGVmYXVsdCI7CisgICAgICAgIGxpc3RfaXRlbS0+ZnVuYy50ZXh0X2dldCA9IGxp
c3RfaXRlbV9sYWJlbF9nZXQ7CisgICAgICAgIGxpc3RfaXRlbS0+ZnVuYy5jb250ZW50X2dldCA9
IE5VTEw7CisgICAgICAgIGxpc3RfaXRlbS0+ZnVuYy5zdGF0ZV9nZXQgPSBOVUxMOworICAgICAg
ICBsaXN0X2l0ZW0tPmZ1bmMuZGVsID0gTlVMTDsKKyAgICB9CisKKyAgICBpdGVtX2NvdW50ID0g
ZWluYV9saXN0X2NvdW50KGxpc3QpOworICAgIGluZm8oIm5hdmlnYXRpb25fYnV0dG9uX2xvbmdw
cmVzc19wcm9jZXNzIDogSXRlbSBjb3VudCA9ICVkIGZvcndhcmRfbmF2aWdhdGlvbl9lbmFibGVk
ID0gJWQiLCBpdGVtX2NvdW50LCBmb3J3YXJkX25hdmlnYXRpb25fZW5hYmxlZCk7CisKKyAgICBF
SU5BX0xJU1RfRk9SRUFDSChsaXN0LCBsLCBkYXRhKSB7CisgICAgICAgIHRpdGxlID0gZXdrX2Jh
Y2tfZm9yd2FyZF9saXN0X2l0ZW1fdGl0bGVfZ2V0KGRhdGEpOworICAgICAgICBpbmZvKCIgdGl0
bGUgPSAlcyIsIHRpdGxlKTsKKyAgICAgICAgZWxtX2dlbmxpc3RfaXRlbV9hcHBlbmQod2luZG93
LT5oaXN0b3J5Lmhpc3RvcnlfbGlzdCwgbGlzdF9pdGVtLCAodm9pZCopKHRpdGxlKSwgTlVMTCwg
RUxNX0dFTkxJU1RfSVRFTV9OT05FLCBvbl9saXN0X2l0ZW1fc2VsZWN0LCBkYXRhKTsKKyAgICB9
CisgICAgICAgIAorICAgIEVJTkFfTElTVF9GUkVFKGxpc3QsIGRhdGEpOworICAgIAorICAgIGlm
IChpdGVtX2NvdW50ID4gMCkgeworICAgICAgICBldmFzX29iamVjdF9nZW9tZXRyeV9nZXQod2lu
ZG93LT5lbG1fd2luZG93LCAmeCwgJnksICZ3aWR0aCwgJmhlaWdodCk7CisgICAgICAgIGVsbV9s
aXN0X2dvKHdpbmRvdy0+aGlzdG9yeS5oaXN0b3J5X2xpc3QpOworICAgICAgICBldmFzX29iamVj
dF9yZXNpemUod2luZG93LT5oaXN0b3J5Lmhpc3RvcnlfYm94ICwgd2lkdGggLyAzICwgTElTVF9J
VEVNX0hFSUdIVCAqIGl0ZW1fY291bnQpOworCisgICAgICAgIGlmIChmb3J3YXJkX25hdmlnYXRp
b25fZW5hYmxlZCkgeworICAgICAgICAgICAgZXZhc19vYmplY3RfbW92ZSh3aW5kb3ctPmhpc3Rv
cnkuaGlzdG9yeV9ib3ggLCB4ICsgVE9PTF9CQVJfQlVUVE9OX1NJWkUgKyAxLCB5ICsgVE9PTF9C
QVJfQlVUVE9OX1NJWkUpOworICAgICAgICAgICAgZXZhc19vYmplY3RfbW92ZSh3aW5kb3ctPmhp
c3RvcnkuaGlzdG9yeV9saXN0ICwgeCArIFRPT0xfQkFSX0JVVFRPTl9TSVpFICsgMSwgeSArIFRP
T0xfQkFSX0JVVFRPTl9TSVpFKTsgIAorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZXZh
c19vYmplY3RfbW92ZSh3aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9ib3ggLCB4LCB5ICsgVE9PTF9C
QVJfQlVUVE9OX1NJWkUpOworICAgICAgICAgICAgZXZhc19vYmplY3RfbW92ZSh3aW5kb3ctPmhp
c3RvcnkuaGlzdG9yeV9saXN0ICwgeCwgeSArIFRPT0xfQkFSX0JVVFRPTl9TSVpFKTsgIAorICAg
ICAgICB9CisgICAgCisgICAgICAgIGVsbV9nZW5saXN0X21vZGVfc2V0KHdpbmRvdy0+aGlzdG9y
eS5oaXN0b3J5X2xpc3QsIEVMTV9MSVNUX0NPTVBSRVNTKTsKKyAgICAgICAgZXZhc19vYmplY3Rf
c2hvdyh3aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9ib3gpOworICAgICAgICBldmFzX29iamVjdF9z
aG93KHdpbmRvdy0+aGlzdG9yeS5oaXN0b3J5X2xpc3QpOworICAgICAgICBldmFzX29iamVjdF9m
b2N1c19zZXQod2luZG93LT5ld2tfdmlldywgRUlOQV9GQUxTRSk7CisgICAgICAgIGVsbV9vYmpl
Y3RfZm9jdXNfc2V0KHdpbmRvdy0+aGlzdG9yeS5oaXN0b3J5X2xpc3QsIEVJTkFfVFJVRSk7Cisg
ICAgfSBlbHNlCisgICAgICAgIGxvbmdwcmVzc19lbmFibGVkID0gRUlOQV9GQUxTRTsKKyAgICAK
KyAgICBldmFzX29iamVjdF91bnJlZih3aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9saXN0KTsgCit9
CisKK3N0YXRpYyB2b2lkCitvbl9mb3J3YXJkX2J1dHRvbl9sb25ncHJlc3Modm9pZCAqdXNlcl9k
YXRhLCBFdmFzX09iamVjdCAqZm9yd2FyZF9idXR0b24sIHZvaWQgKmV2ZW50X2luZm8pCit7Cisg
ICAgQnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9IChCcm93c2VyX1dpbmRvdyAqKXVzZXJfZGF0YTsK
KworICAgIGZvcndhcmRfbmF2aWdhdGlvbl9lbmFibGVkID0gRUlOQV9UUlVFOworICAgIG5hdmln
YXRpb25fYnV0dG9uX2xvbmdwcmVzc19wcm9jZXNzKHVzZXJfZGF0YSk7CisgICAgZWxtX29iamVj
dF9kaXNhYmxlZF9zZXQoZm9yd2FyZF9idXR0b24sICFld2tfdmlld19iYWNrX3Bvc3NpYmxlKHdp
bmRvdy0+ZXdrX3ZpZXcpKTsKK30KKworc3RhdGljIHZvaWQKK29uX2JhY2tfYnV0dG9uX2xvbmdw
cmVzcyh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpiYWNrX2J1dHRvbiwgdm9pZCAqZXZl
bnRfaW5mbykKK3sKKyAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0gKEJyb3dzZXJfV2luZG93
ICopdXNlcl9kYXRhOworCisgICAgZm9yd2FyZF9uYXZpZ2F0aW9uX2VuYWJsZWQgPSBFSU5BX0ZB
TFNFOworICAgIG5hdmlnYXRpb25fYnV0dG9uX2xvbmdwcmVzc19wcm9jZXNzKHVzZXJfZGF0YSk7
CisgICAgZWxtX29iamVjdF9kaXNhYmxlZF9zZXQoYmFja19idXR0b24sICFld2tfdmlld19iYWNr
X3Bvc3NpYmxlKHdpbmRvdy0+ZXdrX3ZpZXcpKTsKK30KKwogc3RhdGljIHZvaWQKIHF1aXRfZXZl
bnRfbG9vcCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpvYmosIHZvaWQgKmV2ZW50X2lu
Zm8pCiB7CkBAIC0xODA0LDYgKzE5NjIsNyBAQCBzdGF0aWMgQnJvd3Nlcl9XaW5kb3cgKndpbmRv
d19jcmVhdGUoRXZhCiAgICAgLyogQ3JlYXRlIEJhY2sgYnV0dG9uICovCiAgICAgd2luZG93LT5i
YWNrX2J1dHRvbiA9IGNyZWF0ZV90b29sYmFyX2J1dHRvbih3aW5kb3ctPmVsbV93aW5kb3csICJh
cnJvd19sZWZ0Iik7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+
YmFja19idXR0b24sICJjbGlja2VkIiwgb25fYmFja19idXR0b25fY2xpY2tlZCwgd2luZG93KTsK
KyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2luZG93LT5iYWNrX2J1dHRvbiwg
InJlcGVhdGVkIiwgb25fYmFja19idXR0b25fbG9uZ3ByZXNzLCB3aW5kb3cpOwogICAgIGVsbV9v
YmplY3RfZGlzYWJsZWRfc2V0KHdpbmRvdy0+YmFja19idXR0b24sIEVJTkFfVFJVRSk7CiAgICAg
ZXZhc19vYmplY3Rfc2l6ZV9oaW50X3dlaWdodF9zZXQod2luZG93LT5iYWNrX2J1dHRvbiwgMC4w
LCBFVkFTX0hJTlRfRVhQQU5EKTsKICAgICBldmFzX29iamVjdF9zaXplX2hpbnRfYWxpZ25fc2V0
KHdpbmRvdy0+YmFja19idXR0b24sIDAuMCwgMC41KTsKQEAgLTE4MTMsNiArMTk3Miw3IEBAIHN0
YXRpYyBCcm93c2VyX1dpbmRvdyAqd2luZG93X2NyZWF0ZShFdmEKICAgICAvKiBDcmVhdGUgRm9y
d2FyZCBidXR0b24gKi8KICAgICB3aW5kb3ctPmZvcndhcmRfYnV0dG9uID0gY3JlYXRlX3Rvb2xi
YXJfYnV0dG9uKHdpbmRvdy0+ZWxtX3dpbmRvdywgImFycm93X3JpZ2h0Iik7CiAgICAgZXZhc19v
YmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+Zm9yd2FyZF9idXR0b24sICJjbGlja2Vk
Iiwgb25fZm9yd2FyZF9idXR0b25fY2xpY2tlZCwgd2luZG93KTsKKyAgICBldmFzX29iamVjdF9z
bWFydF9jYWxsYmFja19hZGQod2luZG93LT5mb3J3YXJkX2J1dHRvbiwgInJlcGVhdGVkIiwgb25f
Zm9yd2FyZF9idXR0b25fbG9uZ3ByZXNzLCB3aW5kb3cpOwogICAgIGVsbV9vYmplY3RfZGlzYWJs
ZWRfc2V0KHdpbmRvdy0+Zm9yd2FyZF9idXR0b24sIEVJTkFfVFJVRSk7CiAgICAgZXZhc19vYmpl
Y3Rfc2l6ZV9oaW50X3dlaWdodF9zZXQod2luZG93LT5mb3J3YXJkX2J1dHRvbiwgMC4wLCBFVkFT
X0hJTlRfRVhQQU5EKTsKICAgICBldmFzX29iamVjdF9zaXplX2hpbnRfYWxpZ25fc2V0KHdpbmRv
dy0+Zm9yd2FyZF9idXR0b24sIDAuMCwgMC41KTsKQEAgLTE5MDYsNiArMjA2NiwxOCBAQCBzdGF0
aWMgQnJvd3Nlcl9XaW5kb3cgKndpbmRvd19jcmVhdGUoRXZhCiAgICAgZXZhc19vYmplY3Rfc2l6
ZV9oaW50X21pbl9zZXQod2luZG93LT5zZWFyY2guY2xvc2VfYnV0dG9uLCBTRUFSQ0hfQlVUVE9O
X1NJWkUsIFNFQVJDSF9CVVRUT05fU0laRSk7CiAgICAgZWxtX2JveF9wYWNrX2VuZCh3aW5kb3ct
PnNlYXJjaC5zZWFyY2hfYmFyLCB3aW5kb3ctPnNlYXJjaC5jbG9zZV9idXR0b24pOwogCisgICAg
LyogQ3JlYXRlIGhpc3RvcnkgYm94ICovCisgICAgd2luZG93LT5oaXN0b3J5Lmhpc3RvcnlfYm94
ID0gZWxtX2JveF9hZGQod2luZG93LT5lbG1fd2luZG93KTsKKyAgICBldmFzX29iamVjdF9zaXpl
X2hpbnRfYXNwZWN0X3NldCh3aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9ib3gsIEVWQVNfQVNQRUNU
X0NPTlRST0xfVkVSVElDQUwsIDEsIDEpOworICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF93ZWln
aHRfc2V0KHdpbmRvdy0+aGlzdG9yeS5oaXN0b3J5X2JveCwgRVZBU19ISU5UX0VYUEFORCAsIEVW
QVNfSElOVF9FWFBBTkQpOworCisgICAgLyogQ3JlYXRlIGhpc3RvcnkgbGlzdCAqLworICAgIHdp
bmRvdy0+aGlzdG9yeS5oaXN0b3J5X2xpc3QgPSBlbG1fZ2VubGlzdF9hZGQod2luZG93LT5lbG1f
d2luZG93KTsKKyAgICBldmFzX29iamVjdF9zaXplX2hpbnRfd2VpZ2h0X3NldCh3aW5kb3ctPmhp
c3RvcnkuaGlzdG9yeV9saXN0LCBFVkFTX0hJTlRfRVhQQU5ELCBFVkFTX0hJTlRfRVhQQU5EKTsK
KyAgICBldmFzX29iamVjdF9zaXplX2hpbnRfYWxpZ25fc2V0KHdpbmRvdy0+aGlzdG9yeS5oaXN0
b3J5X2xpc3QsIEVWQVNfSElOVF9GSUxMLCBFVkFTX0hJTlRfRklMTCk7CisgICAgZWxtX3dpbl9y
ZXNpemVfb2JqZWN0X2FkZCh3aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9saXN0LCB3aW5kb3ctPmhp
c3RvcnkuaGlzdG9yeV9ib3gpOworICAgIGVsbV9ib3hfcGFja19lbmQod2luZG93LT5oaXN0b3J5
Lmhpc3RvcnlfYm94LCB3aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9saXN0KTsKKyAgICAKICAgICAv
KiBDcmVhdGUgZXdrX3ZpZXcgKi8KICAgICBFd2tfVmlld19TbWFydF9DbGFzcyAqZXdrVmlld0Ns
YXNzID0gbWluaUJyb3dzZXJWaWV3U21hcnRDbGFzcygpOwogICAgIGV3a1ZpZXdDbGFzcy0+cnVu
X2phdmFzY3JpcHRfYWxlcnQgPSBvbl9qYXZhc2NyaXB0X2FsZXJ0OwpAQCAtMTk5OCw2ICsyMTcw
LDExIEBAIHN0YXRpYyBCcm93c2VyX1dpbmRvdyAqd2luZG93X2NyZWF0ZShFdmEKICAgICBldmFz
X29iamVjdF9ldmVudF9jYWxsYmFja19hZGQod2luZG93LT5ld2tfdmlldywgRVZBU19DQUxMQkFD
S19NT1VTRV9PVVQsIG9uX21vdXNlX291dCwgd2luZG93KTsKICAgICBldmFzX29iamVjdF9ldmVu
dF9jYWxsYmFja19hZGQod2luZG93LT5ld2tfdmlldywgRVZBU19DQUxMQkFDS19NT1VTRV9NT1ZF
LCBvbl9tb3VzZV9tb3ZlLCB3aW5kb3cpOwogICAgIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNr
X2FkZCh3aW5kb3ctPmVsbV93aW5kb3csIEVWQVNfQ0FMTEJBQ0tfUkVTSVpFLCBvbl93aW5kb3df
cmVzaXplLCB3aW5kb3cpOworICAgIAorICAgIGVsbV9idXR0b25fYXV0b3JlcGVhdF9zZXQod2lu
ZG93LT5iYWNrX2J1dHRvbiwgRUlOQV9UUlVFKTsKKyAgICBlbG1fYnV0dG9uX2F1dG9yZXBlYXRf
c2V0KHdpbmRvdy0+Zm9yd2FyZF9idXR0b24sIEVJTkFfVFJVRSk7CisgICAgZWxtX2J1dHRvbl9h
dXRvcmVwZWF0X2luaXRpYWxfdGltZW91dF9zZXQod2luZG93LT5iYWNrX2J1dHRvbiwgTE9OR1BS
RVNTX0lOVEVSVkFMX1NFQ09ORFMpOworICAgIGVsbV9idXR0b25fYXV0b3JlcGVhdF9pbml0aWFs
X3RpbWVvdXRfc2V0KHdpbmRvdy0+Zm9yd2FyZF9idXR0b24sIExPTkdQUkVTU19JTlRFUlZBTF9T
RUNPTkRTKTsKIAogICAgIHJldHVybiB3aW5kb3c7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>236979</attachid>
            <date>2014-08-22 04:00:42 -0700</date>
            <delta_ts>2014-08-25 05:36:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135795-20140822163107.patch</filename>
            <type>text/plain</type>
            <size>12651</size>
            <attacher name="Tanay">tanay.c</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE3Mjg1NykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIzIEBACisyMDE0LTA4LTIyICBUYW5heSBDICA8dGFuYXkuY0BzYW1zdW5nLmNvbT4KKwor
ICAgICAgICBbRUZMXVtXSzJdIE1pbmlicm93c2VyIDogRW5oYW5jZSBhcHBsaWNhdGlvbiB0byBi
ZSBhYmxlIHRvIHN1cHBvcnQgaGlzdG9yeSBsaXN0IG5hdmlnYXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTc5NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWluaUJyb3dzZXIvZWZsL21haW4u
YzogQWRkaW5nIGZ1bmN0aW9uYWxpdHkgZm9yIGxvbmcgcHJlc3MgaGlzdG9yeSBsaXN0IG5hdmln
YXRpb24KKyAgICAgICAgKGhpc3RvcnlfbGlzdF9oaWRlKTogSGlkaW5nIGFuZCBkZXJlZmVyZW5j
aW5nIHRoZSBoaXN0b3J5IGxpc3QgYW5kIGl0ZW1zCisgICAgICAgIChvbl9rZXlfZG93bik6Cisg
ICAgICAgIChvbl9tb3VzZV9kb3duKToKKyAgICAgICAgKG9uX2JhY2tfYnV0dG9uX2NsaWNrZWQp
OiBFYXJseSByZXR1cm4gZm9yIGxvbmdwcmVzcyAKKyAgICAgICAgKG9uX2ZvcndhcmRfYnV0dG9u
X2NsaWNrZWQpOiBFYXJseSByZXR1cm4gZm9yIGxvbmdwcmVzcworICAgICAgICAobGlzdF9pdGVt
X2xhYmVsX2dldCk6IFBvcHVsYXRlIGl0ZW0gbGFiZWxzCisgICAgICAgIChvbl9saXN0X2l0ZW1f
c2VsZWN0KTogTmF2aWdhdGVzIG9uIHNlbGVjdGlvbiBmcm9tIGhpc3RvcnkgbGlzdAorICAgICAg
ICAobmF2aWdhdGlvbl9idXR0b25fbG9uZ3ByZXNzX3Byb2Nlc3MpOiBQb3B1bGF0ZXMgdGhlIGhp
c3RvcnkgbGlzdCBhbmQgZGlzcGxheXMgaXQKKyAgICAgICAgKG9uX2ZvcndhcmRfYnV0dG9uX2xv
bmdwcmVzcyk6CisgICAgICAgIChvbl9iYWNrX2J1dHRvbl9sb25ncHJlc3MpOgorICAgICAgICAo
d2luZG93X2NyZWF0ZSk6IEFkZCB0aGUgd2lkZ2V0IGZvciBoaXN0b3J5IGxpc3QKKwogMjAxNC0w
OC0yMSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFtXaW5dIEFub3RoZXIgdW5yZXZpZXdlZCBidWlsZCBmaXguCkluZGV4OiBUb29scy9NaW5p
QnJvd3Nlci9lZmwvbWFpbi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL01pbmlCcm93c2VyL2VmbC9t
YWluLmMJKHJldmlzaW9uIDE3Mjg1NSkKKysrIFRvb2xzL01pbmlCcm93c2VyL2VmbC9tYWluLmMJ
KHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDggQEAgc3RhdGljIGNvbnN0IGludCBTRUFSQ0hf
QlVUVE9OX1NJWkUgPSAzMAogc3RhdGljIGNvbnN0IGludCBNQVhfU0VBUkNIX0NPVU5UID0gMTAw
Owogc3RhdGljIGNvbnN0IGludCBERUZBVUxUX1NFQVJDSF9GTEFHUyA9IEVXS19GSU5EX09QVElP
TlNfU0hPV19ISUdITElHSFQgfCBFV0tfRklORF9PUFRJT05TX0NBU0VfSU5TRU5TSVRJVkUgfCBF
V0tfRklORF9PUFRJT05TX1dSQVBfQVJPVU5EOwogc3RhdGljIGNvbnN0IGRvdWJsZSBUT09MVElQ
X0RFTEFZX1NFQ09ORFMgPSAxLjA7CitzdGF0aWMgY29uc3QgZG91YmxlIExPTkdQUkVTU19JTlRF
UlZBTF9TRUNPTkRTID0gMS41Oworc3RhdGljIGNvbnN0IGRvdWJsZSBMSVNUX0lURU1fSEVJR0hU
ID0gMjQuMzU7CiAKICNkZWZpbmUgaW5mbyhmb3JtYXQsIGFyZ3MuLi4pICAgICAgIFwKICAgICBk
byB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTU2LDYgKzU4LDcgQEAgc3RhdGlj
IEVpbmFfQm9vbCB3ZWJfc2VjdXJpdHlfZW5hYmxlZCA9CiBzdGF0aWMgRWluYV9Cb29sIHRvdWNo
X2V2ZW50c19lbmFibGVkID0gRUlOQV9GQUxTRTsKIHN0YXRpYyBFaW5hX0Jvb2wgZml4ZWRfbGF5
b3V0X2VuYWJsZWQgPSBFSU5BX0ZBTFNFOwogc3RhdGljIEVpbmFfQm9vbCBzZXBhcmF0ZWRfcHJv
Y2Vzc19lbmFibGVkID0gRUlOQV9GQUxTRTsKK3N0YXRpYyBFaW5hX0Jvb2wgbG9uZ3ByZXNzX2Vu
YWJsZWQgPSBFSU5BX0ZBTFNFOwogc3RhdGljIGludCB3aW5kb3dfd2lkdGggPSA4MDA7CiBzdGF0
aWMgaW50IHdpbmRvd19oZWlnaHQgPSA2MDA7CiAvKiBEZWZhdWx0IHZhbHVlIG9mIGRldmljZV9w
aXhlbF9yYXRpbyBpcyAnMCcgc28gdGhhdCB3ZSBkb24ndCBzZXQgY3VzdG9tIGRldmljZQpAQCAt
MTEzLDYgKzExNiwxMSBAQCB0eXBlZGVmIHN0cnVjdCBfQnJvd3Nlcl9XaW5kb3cgewogICAgICAg
ICBFdmFzX09iamVjdCAqZm9yd2FyZF9idXR0b247CiAgICAgICAgIEV2YXNfT2JqZWN0ICpjbG9z
ZV9idXR0b247CiAgICAgfSBzZWFyY2g7CisgICAgc3RydWN0IHsKKyAgICAgICAgRXZhc19PYmpl
Y3QgKmhpc3RvcnlfYm94OworICAgICAgICBFdmFzX09iamVjdCAqaGlzdG9yeV9saXN0OworICAg
ICAgICBFaW5hX0xpc3QgKmhpc3RvcnlfbGlzdF9pdGVtczsKKyAgICB9IGhpc3Rvcnk7CiAgICAg
aW50IGN1cnJlbnRfem9vbV9sZXZlbDsgCiAgICAgVG9vbHRpcF9JbmZvcm1hdGlvbiB0b29sdGlw
OwogICAgIENvbG9yX1NlbGVjdG9yIGNvbG9yX3NlbGVjdG9yOwpAQCAtMzk4LDYgKzQwNiwzMCBA
QCBzZWFyY2hfYm94X2hpZGUoQnJvd3Nlcl9XaW5kb3cgKndpbmRvdykKICAgICBldmFzX29iamVj
dF9mb2N1c19zZXQod2luZG93LT5ld2tfdmlldywgRUlOQV9UUlVFKTsKIH0KIAorc3RhdGljIHZv
aWQgCitoaXN0b3J5X2xpc3RfaGlkZShCcm93c2VyX1dpbmRvdyAqd2luZG93KQoreworICAgIC8q
IEhpZGUgaGlzdG9yeSBsaXN0ICovCisgICAgZXZhc19vYmplY3RfaGlkZSh3aW5kb3ctPmhpc3Rv
cnkuaGlzdG9yeV9ib3gpOworICAgIGV2YXNfb2JqZWN0X2hpZGUod2luZG93LT5oaXN0b3J5Lmhp
c3RvcnlfbGlzdCk7CisgICAgCisgICAgLyogRGVyZWZlcmVuY2UgdGhlIGxpc3QgaXRlbXMgYW5k
IGNsZWFyIHRoZSBoaXN0b3J5IGxpc3QgKi8KKyAgICB2b2lkICpkYXRhOyAgICAKKyAgICBFSU5B
X0xJU1RfRlJFRSh3aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9saXN0X2l0ZW1zLCBkYXRhKSB7Cisg
ICAgICAgIGV3a19vYmplY3RfdW5yZWYoZGF0YSk7CisgICAgfQorCisgICAgZWxtX2dlbmxpc3Rf
Y2xlYXIod2luZG93LT5oaXN0b3J5Lmhpc3RvcnlfbGlzdCk7CisgICAgCisgICAgLyogR2l2ZSBm
b2N1cyBiYWNrIHRvIHRoZSB2aWV3ICovCisgICAgZWxtX29iamVjdF9mb2N1c19zZXQod2luZG93
LT5oaXN0b3J5Lmhpc3RvcnlfYm94LCBFSU5BX0ZBTFNFKTsKKyAgICBlbG1fb2JqZWN0X2ZvY3Vz
X3NldCh3aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9saXN0LCBFSU5BX0ZBTFNFKTsKKyAgICBldmFz
X29iamVjdF9mb2N1c19zZXQod2luZG93LT5ld2tfdmlldywgRUlOQV9UUlVFKTsKKworICAgIC8q
IFJlc2V0IGZsYWdzICovCisgICAgbG9uZ3ByZXNzX2VuYWJsZWQgPSBFSU5BX0ZBTFNFOworfSAK
Kwogc3RhdGljIHZvaWQgc2F2ZV9wYWdlX2NvbnRlbnRzX2NhbGxiYWNrKEV3a19QYWdlX0NvbnRl
bnRzX1R5cGUgdHlwZSwgY29uc3QgY2hhciAqZGF0YSwgdm9pZCAqdXNlcl9kYXRhKQogewogICAg
IEVldF9GaWxlICplZjsKQEAgLTUwNSw2ICs1MzcsOCBAQCBvbl9rZXlfZG93bih2b2lkICp1c2Vy
X2RhdGEsIEV2YXMgKmUsIEV2CiAgICAgfSBlbHNlIGlmICghc3RyY21wKGV2LT5rZXksICJFc2Nh
cGUiKSkgewogICAgICAgICBpZiAoZXZhc19vYmplY3RfdmlzaWJsZV9nZXQod2luZG93LT5zZWFy
Y2guc2VhcmNoX2JhcikpCiAgICAgICAgICAgICBzZWFyY2hfYm94X2hpZGUod2luZG93KTsKKyAg
ICAgICAgZWxzZSBpZiAoZXZhc19vYmplY3RfdmlzaWJsZV9nZXQod2luZG93LT5oaXN0b3J5Lmhp
c3RvcnlfYm94KSkKKyAgICAgICAgICAgIGhpc3RvcnlfbGlzdF9oaWRlKHdpbmRvdyk7CiAgICAg
ICAgIGVsc2UgaWYgKGVsbV93aW5fZnVsbHNjcmVlbl9nZXQod2luZG93LT5lbG1fd2luZG93KSkK
ICAgICAgICAgICAgIGV3a192aWV3X2Z1bGxzY3JlZW5fZXhpdChld2tfdmlldyk7CiAgICAgfSBl
bHNlIGlmIChjdHJsUHJlc3NlZCAmJiAoIXN0cmNtcChldi0+a2V5LCAibWludXMiKSB8fCAhc3Ry
Y21wKGV2LT5rZXksICJLUF9TdWJ0cmFjdCIpKSkgewpAQCAtNTYzLDYgKzU5Nyw4IEBAIG9uX21v
dXNlX2Rvd24odm9pZCAqdXNlcl9kYXRhLCBFdmFzICplLAogICAgIC8qIENsZWFyIHNlbGVjdGlv
biBmcm9tIHRoZSBVUkwgYmFyICovCiAgICAgZWxtX2VudHJ5X3NlbGVjdF9ub25lKHdpbmRvdy0+
dXJsX2Jhcik7CiAKKyAgICBpZiAobG9uZ3ByZXNzX2VuYWJsZWQpCisgICAgICAgIGhpc3Rvcnlf
bGlzdF9oaWRlKHdpbmRvdyk7CiAgICAgaWYgKGV2LT5idXR0b24gPT0gMSkKICAgICAgICAgdmll
d19mb2N1c19zZXQod2luZG93LCBFSU5BX1RSVUUpOwogICAgIGVsc2UgaWYgKGV2LT5idXR0b24g
PT0gMikKQEAgLTEwMTIsNiArMTA0OCw5IEBAIG9uX3NlYXJjaF9maWVsZF9jbGlja2VkKHZvaWQg
KnVzZXJfZGF0YSwKIHN0YXRpYyB2b2lkCiBvbl9iYWNrX2J1dHRvbl9jbGlja2VkKHZvaWQgKnVz
ZXJfZGF0YSwgRXZhc19PYmplY3QgKmJhY2tfYnV0dG9uLCB2b2lkICpldmVudF9pbmZvKQogewor
ICAgIGlmIChsb25ncHJlc3NfZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworICAgIAogICAgIEJy
b3dzZXJfV2luZG93ICp3aW5kb3cgPSAoQnJvd3Nlcl9XaW5kb3cgKil1c2VyX2RhdGE7CiAKICAg
ICBld2tfdmlld19iYWNrKHdpbmRvdy0+ZXdrX3ZpZXcpOwpAQCAtMTAyMiw2ICsxMDYxLDkgQEAg
b25fYmFja19idXR0b25fY2xpY2tlZCh2b2lkICp1c2VyX2RhdGEsCiBzdGF0aWMgdm9pZAogb25f
Zm9yd2FyZF9idXR0b25fY2xpY2tlZCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpmb3J3
YXJkX2J1dHRvbiwgdm9pZCAqZXZlbnRfaW5mbykKIHsKKyAgICBpZiAobG9uZ3ByZXNzX2VuYWJs
ZWQpCisgICAgICAgIHJldHVybjsKKwogICAgIEJyb3dzZXJfV2luZG93ICp3aW5kb3cgPSAoQnJv
d3Nlcl9XaW5kb3cgKil1c2VyX2RhdGE7CiAKICAgICBld2tfdmlld19mb3J3YXJkKHdpbmRvdy0+
ZXdrX3ZpZXcpOwpAQCAtMTA4Miw2ICsxMTI0LDExMCBAQCBvbl9zdG9wX2J1dHRvbl9jbGlja2Vk
KHZvaWQgKnVzZXJfZGF0YSwKICAgICBld2tfdmlld19zdG9wKHdpbmRvdy0+ZXdrX3ZpZXcpOwog
fQogCitzdGF0aWMgY2hhciAqCitsaXN0X2l0ZW1fbGFiZWxfZ2V0KHZvaWQgKmRhdGEsIEV2YXNf
T2JqZWN0ICpvYmosIGNvbnN0IGNoYXIgKnBhcnQpCit7CisgICAgaW50IGxlbiA9IHN0cmxlbigo
Y2hhciAqKWRhdGEpOworICAgIGNoYXIgKmJ1ZiA9IChjaGFyICopbWFsbG9jKHNpemVvZihjaGFy
KSAqIChsZW4gKyAxKSk7CisgICAgc25wcmludGYoYnVmLCBsZW4gKyAxLCAiJXMiLCAoY2hhciAq
KWRhdGEpOworICAgIHJldHVybiBidWY7Cit9CisKK3N0YXRpYyB2b2lkCitvbl9saXN0X2l0ZW1f
c2VsZWN0KHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKm9iaiwgdm9pZCAqZXZlbnRfaW5m
bykKK3sKKyAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0gZXZhc19vYmplY3RfZGF0YV9nZXQo
b2JqLCAiQnJvd3Nlcl9XaW5kb3ciKTsKKyAgICBld2tfdmlld19uYXZpZ2F0ZV90byh3aW5kb3ct
PmV3a192aWV3LCB1c2VyX2RhdGEpOyAKKyAgICBoaXN0b3J5X2xpc3RfaGlkZSh3aW5kb3cpOwor
ICAgIGV2YXNfb2JqZWN0X2RhdGFfZGVsKG9iaiwgIkJyb3dzZXJfV2luZG93Iik7Cit9CisKK3N0
YXRpYyB2b2lkCituYXZpZ2F0aW9uX2J1dHRvbl9sb25ncHJlc3NfcHJvY2Vzcyh2b2lkICp1c2Vy
X2RhdGEsIEVpbmFfQm9vbCBmb3J3YXJkX25hdmlnYXRpb25fZW5hYmxlZCkKK3sKKyAgICBpZiAo
bG9uZ3ByZXNzX2VuYWJsZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGxvbmdwcmVzc19lbmFi
bGVkID0gRUlOQV9UUlVFOworICAgIEJyb3dzZXJfV2luZG93ICp3aW5kb3cgPSAoQnJvd3Nlcl9X
aW5kb3cgKil1c2VyX2RhdGE7CisgICAgCisgICAgRXdrX0JhY2tfRm9yd2FyZF9MaXN0ICpsaXN0
ID0gZXdrX3ZpZXdfYmFja19mb3J3YXJkX2xpc3RfZ2V0KHdpbmRvdy0+ZXdrX3ZpZXcpOworICAg
IGNvbnN0IEVpbmFfTGlzdCAqbDsKKyAgICB2b2lkICpkYXRhOworICAgIHN0YXRpYyBFbG1fR2Vu
bGlzdF9JdGVtX0NsYXNzICpsaXN0X2l0ZW0gPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKnRpdGxl
ID0gTlVMTDsKKyAgICBpbnQgaXRlbV9jb3VudDsKKyAgICBpbnQgeDsKKyAgICBpbnQgeTsKKyAg
ICBpbnQgd2lkdGg7CisgICAgaW50IGhlaWdodDsKKyAgICBzaXplX3QgaW5kZXg7CisgICAgCisg
ICAgZXZhc19vYmplY3RfZGF0YV9zZXQod2luZG93LT5oaXN0b3J5Lmhpc3RvcnlfbGlzdCwgIkJy
b3dzZXJfV2luZG93Iiwgd2luZG93KTsKKworICAgIGlmIChmb3J3YXJkX25hdmlnYXRpb25fZW5h
YmxlZCkKKyAgICAgICAgd2luZG93LT5oaXN0b3J5Lmhpc3RvcnlfbGlzdF9pdGVtcyA9IGV3a19i
YWNrX2ZvcndhcmRfbGlzdF9mb3J3YXJkX2l0ZW1zX2NvcHkobGlzdCk7IAorICAgIGVsc2UKKyAg
ICAgICAgd2luZG93LT5oaXN0b3J5Lmhpc3RvcnlfbGlzdF9pdGVtcyA9IGV3a19iYWNrX2Zvcndh
cmRfbGlzdF9iYWNrX2l0ZW1zX2NvcHkobGlzdCk7CisKKyAgICBpZiAoIWxpc3RfaXRlbSkgewor
ICAgICAgICBsaXN0X2l0ZW0gPSBlbG1fZ2VubGlzdF9pdGVtX2NsYXNzX25ldygpOworICAgICAg
ICBsaXN0X2l0ZW0tPml0ZW1fc3R5bGUgPSAiZGVmYXVsdCI7CisgICAgICAgIGxpc3RfaXRlbS0+
ZnVuYy50ZXh0X2dldCA9IGxpc3RfaXRlbV9sYWJlbF9nZXQ7CisgICAgICAgIGxpc3RfaXRlbS0+
ZnVuYy5jb250ZW50X2dldCA9IE5VTEw7CisgICAgICAgIGxpc3RfaXRlbS0+ZnVuYy5zdGF0ZV9n
ZXQgPSBOVUxMOworICAgICAgICBsaXN0X2l0ZW0tPmZ1bmMuZGVsID0gTlVMTDsKKyAgICB9CisK
KyAgICBpdGVtX2NvdW50ID0gZWluYV9saXN0X2NvdW50KHdpbmRvdy0+aGlzdG9yeS5oaXN0b3J5
X2xpc3RfaXRlbXMpOworICAgIGluZm8oIm5hdmlnYXRpb25fYnV0dG9uX2xvbmdwcmVzc19wcm9j
ZXNzIDogSXRlbSBjb3VudCA9ICVkIGZvcndhcmRfbmF2aWdhdGlvbl9lbmFibGVkID0gJWQiLCBp
dGVtX2NvdW50LCBmb3J3YXJkX25hdmlnYXRpb25fZW5hYmxlZCk7CisKKyAgICBFSU5BX0xJU1Rf
Rk9SRUFDSCh3aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9saXN0X2l0ZW1zLCBsLCBkYXRhKSB7Cisg
ICAgICAgIHRpdGxlID0gZXdrX2JhY2tfZm9yd2FyZF9saXN0X2l0ZW1fdGl0bGVfZ2V0KGRhdGEp
OworICAgICAgICBpbmZvKCIgdGl0bGUgPSAlcyIsIHRpdGxlKTsKKyAgICAgICAgZWxtX2dlbmxp
c3RfaXRlbV9hcHBlbmQod2luZG93LT5oaXN0b3J5Lmhpc3RvcnlfbGlzdCwgbGlzdF9pdGVtLCAo
dm9pZCopKHRpdGxlKSwgTlVMTCwgRUxNX0dFTkxJU1RfSVRFTV9OT05FLCBvbl9saXN0X2l0ZW1f
c2VsZWN0LCBkYXRhKTsKKyAgICB9CisgICAgCisgICAgaWYgKGl0ZW1fY291bnQgPiAwKSB7Cisg
ICAgICAgIGV2YXNfb2JqZWN0X2dlb21ldHJ5X2dldCh3aW5kb3ctPmVsbV93aW5kb3csICZ4LCAm
eSwgJndpZHRoLCAmaGVpZ2h0KTsKKyAgICAgICAgZWxtX2xpc3RfZ28od2luZG93LT5oaXN0b3J5
Lmhpc3RvcnlfbGlzdCk7CisgICAgICAgIGV2YXNfb2JqZWN0X3Jlc2l6ZSh3aW5kb3ctPmhpc3Rv
cnkuaGlzdG9yeV9ib3ggLCB3aWR0aCAvIDMgLCBMSVNUX0lURU1fSEVJR0hUICogaXRlbV9jb3Vu
dCk7CisKKyAgICAgICAgaWYgKGZvcndhcmRfbmF2aWdhdGlvbl9lbmFibGVkKSB7CisgICAgICAg
ICAgICBldmFzX29iamVjdF9tb3ZlKHdpbmRvdy0+aGlzdG9yeS5oaXN0b3J5X2JveCAsIHggKyBU
T09MX0JBUl9CVVRUT05fU0laRSArIDEsIHkgKyBUT09MX0JBUl9CVVRUT05fU0laRSk7CisgICAg
ICAgICAgICBldmFzX29iamVjdF9tb3ZlKHdpbmRvdy0+aGlzdG9yeS5oaXN0b3J5X2xpc3QgLCB4
ICsgVE9PTF9CQVJfQlVUVE9OX1NJWkUgKyAxLCB5ICsgVE9PTF9CQVJfQlVUVE9OX1NJWkUpOyAg
CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBldmFzX29iamVjdF9tb3ZlKHdpbmRvdy0+
aGlzdG9yeS5oaXN0b3J5X2JveCAsIHgsIHkgKyBUT09MX0JBUl9CVVRUT05fU0laRSk7CisgICAg
ICAgICAgICBldmFzX29iamVjdF9tb3ZlKHdpbmRvdy0+aGlzdG9yeS5oaXN0b3J5X2xpc3QgLCB4
LCB5ICsgVE9PTF9CQVJfQlVUVE9OX1NJWkUpOyAgCisgICAgICAgIH0KKyAgICAKKyAgICAgICAg
ZWxtX2dlbmxpc3RfbW9kZV9zZXQod2luZG93LT5oaXN0b3J5Lmhpc3RvcnlfbGlzdCwgRUxNX0xJ
U1RfQ09NUFJFU1MpOworICAgICAgICBldmFzX29iamVjdF9zaG93KHdpbmRvdy0+aGlzdG9yeS5o
aXN0b3J5X2JveCk7CisgICAgICAgIGV2YXNfb2JqZWN0X3Nob3cod2luZG93LT5oaXN0b3J5Lmhp
c3RvcnlfbGlzdCk7CisgICAgICAgIGV2YXNfb2JqZWN0X2ZvY3VzX3NldCh3aW5kb3ctPmV3a192
aWV3LCBFSU5BX0ZBTFNFKTsKKyAgICAgICAgZWxtX29iamVjdF9mb2N1c19zZXQod2luZG93LT5o
aXN0b3J5Lmhpc3RvcnlfbGlzdCwgRUlOQV9UUlVFKTsKKyAgICB9IGVsc2UKKyAgICAgICAgbG9u
Z3ByZXNzX2VuYWJsZWQgPSBFSU5BX0ZBTFNFOworfQorCitzdGF0aWMgdm9pZAorb25fZm9yd2Fy
ZF9idXR0b25fbG9uZ3ByZXNzKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3QgKmZvcndhcmRf
YnV0dG9uLCB2b2lkICpldmVudF9pbmZvKQoreworICAgIEJyb3dzZXJfV2luZG93ICp3aW5kb3cg
PSAoQnJvd3Nlcl9XaW5kb3cgKil1c2VyX2RhdGE7CisKKyAgICBuYXZpZ2F0aW9uX2J1dHRvbl9s
b25ncHJlc3NfcHJvY2Vzcyh1c2VyX2RhdGEsIEVJTkFfVFJVRSk7CisgICAgZWxtX29iamVjdF9k
aXNhYmxlZF9zZXQoZm9yd2FyZF9idXR0b24sICFld2tfdmlld19iYWNrX3Bvc3NpYmxlKHdpbmRv
dy0+ZXdrX3ZpZXcpKTsKK30KKworc3RhdGljIHZvaWQKK29uX2JhY2tfYnV0dG9uX2xvbmdwcmVz
cyh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpiYWNrX2J1dHRvbiwgdm9pZCAqZXZlbnRf
aW5mbykKK3sKKyAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0gKEJyb3dzZXJfV2luZG93ICop
dXNlcl9kYXRhOworCisgICAgbmF2aWdhdGlvbl9idXR0b25fbG9uZ3ByZXNzX3Byb2Nlc3ModXNl
cl9kYXRhLCBFSU5BX0ZBTFNFKTsKKyAgICBlbG1fb2JqZWN0X2Rpc2FibGVkX3NldChiYWNrX2J1
dHRvbiwgIWV3a192aWV3X2JhY2tfcG9zc2libGUod2luZG93LT5ld2tfdmlldykpOworfQorCiBz
dGF0aWMgdm9pZAogcXVpdF9ldmVudF9sb29wKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19PYmplY3Qg
Km9iaiwgdm9pZCAqZXZlbnRfaW5mbykKIHsKQEAgLTE4MTMsNiArMTk1OSw3IEBAIHN0YXRpYyBC
cm93c2VyX1dpbmRvdyAqd2luZG93X2NyZWF0ZShFdmEKICAgICAvKiBDcmVhdGUgQmFjayBidXR0
b24gKi8KICAgICB3aW5kb3ctPmJhY2tfYnV0dG9uID0gY3JlYXRlX3Rvb2xiYXJfYnV0dG9uKHdp
bmRvdy0+ZWxtX3dpbmRvdywgImFycm93X2xlZnQiKTsKICAgICBldmFzX29iamVjdF9zbWFydF9j
YWxsYmFja19hZGQod2luZG93LT5iYWNrX2J1dHRvbiwgImNsaWNrZWQiLCBvbl9iYWNrX2J1dHRv
bl9jbGlja2VkLCB3aW5kb3cpOworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3
aW5kb3ctPmJhY2tfYnV0dG9uLCAicmVwZWF0ZWQiLCBvbl9iYWNrX2J1dHRvbl9sb25ncHJlc3Ms
IHdpbmRvdyk7CiAgICAgZWxtX29iamVjdF9kaXNhYmxlZF9zZXQod2luZG93LT5iYWNrX2J1dHRv
biwgRUlOQV9UUlVFKTsKICAgICBldmFzX29iamVjdF9zaXplX2hpbnRfd2VpZ2h0X3NldCh3aW5k
b3ctPmJhY2tfYnV0dG9uLCAwLjAsIEVWQVNfSElOVF9FWFBBTkQpOwogICAgIGV2YXNfb2JqZWN0
X3NpemVfaGludF9hbGlnbl9zZXQod2luZG93LT5iYWNrX2J1dHRvbiwgMC4wLCAwLjUpOwpAQCAt
MTgyMiw2ICsxOTY5LDcgQEAgc3RhdGljIEJyb3dzZXJfV2luZG93ICp3aW5kb3dfY3JlYXRlKEV2
YQogICAgIC8qIENyZWF0ZSBGb3J3YXJkIGJ1dHRvbiAqLwogICAgIHdpbmRvdy0+Zm9yd2FyZF9i
dXR0b24gPSBjcmVhdGVfdG9vbGJhcl9idXR0b24od2luZG93LT5lbG1fd2luZG93LCAiYXJyb3df
cmlnaHQiKTsKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2luZG93LT5mb3J3
YXJkX2J1dHRvbiwgImNsaWNrZWQiLCBvbl9mb3J3YXJkX2J1dHRvbl9jbGlja2VkLCB3aW5kb3cp
OworICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmZvcndhcmRfYnV0
dG9uLCAicmVwZWF0ZWQiLCBvbl9mb3J3YXJkX2J1dHRvbl9sb25ncHJlc3MsIHdpbmRvdyk7CiAg
ICAgZWxtX29iamVjdF9kaXNhYmxlZF9zZXQod2luZG93LT5mb3J3YXJkX2J1dHRvbiwgRUlOQV9U
UlVFKTsKICAgICBldmFzX29iamVjdF9zaXplX2hpbnRfd2VpZ2h0X3NldCh3aW5kb3ctPmZvcndh
cmRfYnV0dG9uLCAwLjAsIEVWQVNfSElOVF9FWFBBTkQpOwogICAgIGV2YXNfb2JqZWN0X3NpemVf
aGludF9hbGlnbl9zZXQod2luZG93LT5mb3J3YXJkX2J1dHRvbiwgMC4wLCAwLjUpOwpAQCAtMTky
Myw2ICsyMDcxLDE4IEBAIHN0YXRpYyBCcm93c2VyX1dpbmRvdyAqd2luZG93X2NyZWF0ZShFdmEK
ICAgICBldmFzX29iamVjdF9zaXplX2hpbnRfbWluX3NldCh3aW5kb3ctPnNlYXJjaC5jbG9zZV9i
dXR0b24sIFNFQVJDSF9CVVRUT05fU0laRSwgU0VBUkNIX0JVVFRPTl9TSVpFKTsKICAgICBlbG1f
Ym94X3BhY2tfZW5kKHdpbmRvdy0+c2VhcmNoLnNlYXJjaF9iYXIsIHdpbmRvdy0+c2VhcmNoLmNs
b3NlX2J1dHRvbik7CiAKKyAgICAvKiBDcmVhdGUgaGlzdG9yeSBib3ggKi8KKyAgICB3aW5kb3ct
Pmhpc3RvcnkuaGlzdG9yeV9ib3ggPSBlbG1fYm94X2FkZCh3aW5kb3ctPmVsbV93aW5kb3cpOwor
ICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF9hc3BlY3Rfc2V0KHdpbmRvdy0+aGlzdG9yeS5oaXN0
b3J5X2JveCwgRVZBU19BU1BFQ1RfQ09OVFJPTF9WRVJUSUNBTCwgMSwgMSk7CisgICAgZXZhc19v
YmplY3Rfc2l6ZV9oaW50X3dlaWdodF9zZXQod2luZG93LT5oaXN0b3J5Lmhpc3RvcnlfYm94LCBF
VkFTX0hJTlRfRVhQQU5EICwgRVZBU19ISU5UX0VYUEFORCk7CisKKyAgICAvKiBDcmVhdGUgaGlz
dG9yeSBsaXN0ICovCisgICAgd2luZG93LT5oaXN0b3J5Lmhpc3RvcnlfbGlzdCA9IGVsbV9nZW5s
aXN0X2FkZCh3aW5kb3ctPmVsbV93aW5kb3cpOworICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF93
ZWlnaHRfc2V0KHdpbmRvdy0+aGlzdG9yeS5oaXN0b3J5X2xpc3QsIEVWQVNfSElOVF9FWFBBTkQs
IEVWQVNfSElOVF9FWFBBTkQpOworICAgIGV2YXNfb2JqZWN0X3NpemVfaGludF9hbGlnbl9zZXQo
d2luZG93LT5oaXN0b3J5Lmhpc3RvcnlfbGlzdCwgRVZBU19ISU5UX0ZJTEwsIEVWQVNfSElOVF9G
SUxMKTsKKyAgICBlbG1fd2luX3Jlc2l6ZV9vYmplY3RfYWRkKHdpbmRvdy0+aGlzdG9yeS5oaXN0
b3J5X2xpc3QsIHdpbmRvdy0+aGlzdG9yeS5oaXN0b3J5X2JveCk7CisgICAgZWxtX2JveF9wYWNr
X2VuZCh3aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9ib3gsIHdpbmRvdy0+aGlzdG9yeS5oaXN0b3J5
X2xpc3QpOworICAgIAogICAgIC8qIENyZWF0ZSBld2tfdmlldyAqLwogICAgIEV3a19WaWV3X1Nt
YXJ0X0NsYXNzICpld2tWaWV3Q2xhc3MgPSBtaW5pQnJvd3NlclZpZXdTbWFydENsYXNzKCk7CiAg
ICAgZXdrVmlld0NsYXNzLT5ydW5famF2YXNjcmlwdF9hbGVydCA9IG9uX2phdmFzY3JpcHRfYWxl
cnQ7CkBAIC0yMDE1LDYgKzIxNzUsMTEgQEAgc3RhdGljIEJyb3dzZXJfV2luZG93ICp3aW5kb3df
Y3JlYXRlKEV2YQogICAgIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmV3
a192aWV3LCBFVkFTX0NBTExCQUNLX01PVVNFX09VVCwgb25fbW91c2Vfb3V0LCB3aW5kb3cpOwog
ICAgIGV2YXNfb2JqZWN0X2V2ZW50X2NhbGxiYWNrX2FkZCh3aW5kb3ctPmV3a192aWV3LCBFVkFT
X0NBTExCQUNLX01PVVNFX01PVkUsIG9uX21vdXNlX21vdmUsIHdpbmRvdyk7CiAgICAgZXZhc19v
YmplY3RfZXZlbnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+ZWxtX3dpbmRvdywgRVZBU19DQUxMQkFD
S19SRVNJWkUsIG9uX3dpbmRvd19yZXNpemUsIHdpbmRvdyk7CisgICAgCisgICAgZWxtX2J1dHRv
bl9hdXRvcmVwZWF0X3NldCh3aW5kb3ctPmJhY2tfYnV0dG9uLCBFSU5BX1RSVUUpOworICAgIGVs
bV9idXR0b25fYXV0b3JlcGVhdF9zZXQod2luZG93LT5mb3J3YXJkX2J1dHRvbiwgRUlOQV9UUlVF
KTsKKyAgICBlbG1fYnV0dG9uX2F1dG9yZXBlYXRfaW5pdGlhbF90aW1lb3V0X3NldCh3aW5kb3ct
PmJhY2tfYnV0dG9uLCBMT05HUFJFU1NfSU5URVJWQUxfU0VDT05EUyk7CisgICAgZWxtX2J1dHRv
bl9hdXRvcmVwZWF0X2luaXRpYWxfdGltZW91dF9zZXQod2luZG93LT5mb3J3YXJkX2J1dHRvbiwg
TE9OR1BSRVNTX0lOVEVSVkFMX1NFQ09ORFMpOwogCiAgICAgcmV0dXJuIHdpbmRvdzsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>237078</attachid>
            <date>2014-08-25 05:37:10 -0700</date>
            <delta_ts>2014-08-25 06:40:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-135795-20140825180737.patch</filename>
            <type>text/plain</type>
            <size>12694</size>
            <attacher name="Tanay">tanay.c</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE3MjkxOCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDIzIEBACisyMDE0LTA4LTI1ICBUYW5heSBDICA8dGFuYXkuY0BzYW1zdW5nLmNvbT4KKwor
ICAgICAgICBbRUZMXVtXSzJdIE1pbmlicm93c2VyIDogRW5oYW5jZSBhcHBsaWNhdGlvbiB0byBi
ZSBhYmxlIHRvIHN1cHBvcnQgaGlzdG9yeSBsaXN0IG5hdmlnYXRpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTc5NQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTWluaUJyb3dzZXIvZWZsL21haW4u
YzogQWRkaW5nIGZ1bmN0aW9uYWxpdHkgZm9yIGxvbmcgcHJlc3MgaGlzdG9yeSBsaXN0IG5hdmln
YXRpb24KKyAgICAgICAgKGhpc3RvcnlfbGlzdF9oaWRlKTogSGlkaW5nIGFuZCBkZXJlZmVyZW5j
aW5nIHRoZSBoaXN0b3J5IGxpc3QgYW5kIGl0ZW1zCisgICAgICAgIChvbl9rZXlfZG93bik6Cisg
ICAgICAgIChvbl9tb3VzZV9kb3duKToKKyAgICAgICAgKG9uX2JhY2tfYnV0dG9uX2NsaWNrZWQp
OiBFYXJseSByZXR1cm4gZm9yIGxvbmdwcmVzcyAKKyAgICAgICAgKG9uX2ZvcndhcmRfYnV0dG9u
X2NsaWNrZWQpOiBFYXJseSByZXR1cm4gZm9yIGxvbmdwcmVzcyAKKyAgICAgICAgKGxpc3RfaXRl
bV9sYWJlbF9nZXQpOiBQb3B1bGF0ZSBpdGVtIGxhYmVscworICAgICAgICAob25fbGlzdF9pdGVt
X3NlbGVjdCk6IE5hdmlnYXRlcyBvbiBzZWxlY3Rpb24gZnJvbSBoaXN0b3J5IGxpc3QKKyAgICAg
ICAgKG5hdmlnYXRpb25fYnV0dG9uX2xvbmdwcmVzc19wcm9jZXNzKTogUG9wdWxhdGVzIHRoZSBo
aXN0b3J5IGxpc3QgYW5kIGRpc3BsYXlzIGl0CisgICAgICAgIChvbl9mb3J3YXJkX2J1dHRvbl9s
b25ncHJlc3MpOgorICAgICAgICAob25fYmFja19idXR0b25fbG9uZ3ByZXNzKToKKyAgICAgICAg
KHdpbmRvd19jcmVhdGUpOiBBZGQgdGhlIHdpZGdldCBmb3IgaGlzdG9yeSBsaXN0CisKIDIwMTQt
MDgtMjUgIENhcmxvcyBBbGJlcnRvIExvcGV6IFBlcmV6ICA8Y2xvcGV6QGlnYWxpYS5jb20+CiAK
ICAgICAgICAgW0dUS10gSkhCdWlsZCBtb2R1bGUgZ3N0LXBsdWdpbnMtYmFzZSBmYWlscyB0byBi
dWlsZCBvbiB4ODYgd2l0aCBHQ0MgNC45CkluZGV4OiBUb29scy9NaW5pQnJvd3Nlci9lZmwvbWFp
bi5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL01pbmlCcm93c2VyL2VmbC9tYWluLmMJKHJldmlzaW9u
IDE3MjkwMCkKKysrIFRvb2xzL01pbmlCcm93c2VyL2VmbC9tYWluLmMJKHdvcmtpbmcgY29weSkK
QEAgLTM1LDYgKzM1LDggQEAgc3RhdGljIGNvbnN0IGludCBTRUFSQ0hfQlVUVE9OX1NJWkUgPSAz
MAogc3RhdGljIGNvbnN0IGludCBNQVhfU0VBUkNIX0NPVU5UID0gMTAwOwogc3RhdGljIGNvbnN0
IGludCBERUZBVUxUX1NFQVJDSF9GTEFHUyA9IEVXS19GSU5EX09QVElPTlNfU0hPV19ISUdITElH
SFQgfCBFV0tfRklORF9PUFRJT05TX0NBU0VfSU5TRU5TSVRJVkUgfCBFV0tfRklORF9PUFRJT05T
X1dSQVBfQVJPVU5EOwogc3RhdGljIGNvbnN0IGRvdWJsZSBUT09MVElQX0RFTEFZX1NFQ09ORFMg
PSAxLjA7CitzdGF0aWMgY29uc3QgZG91YmxlIExPTkdQUkVTU19JTlRFUlZBTF9TRUNPTkRTID0g
MS41Oworc3RhdGljIGNvbnN0IGRvdWJsZSBMSVNUX0lURU1fSEVJR0hUID0gMjQuMzU7CiAKICNk
ZWZpbmUgaW5mbyhmb3JtYXQsIGFyZ3MuLi4pICAgICAgIFwKICAgICBkbyB7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKQEAgLTU2LDYgKzU4LDcgQEAgc3RhdGljIEVpbmFfQm9vbCB3ZWJf
c2VjdXJpdHlfZW5hYmxlZCA9CiBzdGF0aWMgRWluYV9Cb29sIHRvdWNoX2V2ZW50c19lbmFibGVk
ID0gRUlOQV9GQUxTRTsKIHN0YXRpYyBFaW5hX0Jvb2wgZml4ZWRfbGF5b3V0X2VuYWJsZWQgPSBF
SU5BX0ZBTFNFOwogc3RhdGljIEVpbmFfQm9vbCBzZXBhcmF0ZWRfcHJvY2Vzc19lbmFibGVkID0g
RUlOQV9GQUxTRTsKK3N0YXRpYyBFaW5hX0Jvb2wgbG9uZ3ByZXNzX2VuYWJsZWQgPSBFSU5BX0ZB
TFNFOwogc3RhdGljIGludCB3aW5kb3dfd2lkdGggPSA4MDA7CiBzdGF0aWMgaW50IHdpbmRvd19o
ZWlnaHQgPSA2MDA7CiAvKiBEZWZhdWx0IHZhbHVlIG9mIGRldmljZV9waXhlbF9yYXRpbyBpcyAn
MCcgc28gdGhhdCB3ZSBkb24ndCBzZXQgY3VzdG9tIGRldmljZQpAQCAtMTEzLDYgKzExNiwxMSBA
QCB0eXBlZGVmIHN0cnVjdCBfQnJvd3Nlcl9XaW5kb3cgewogICAgICAgICBFdmFzX09iamVjdCAq
Zm9yd2FyZF9idXR0b247CiAgICAgICAgIEV2YXNfT2JqZWN0ICpjbG9zZV9idXR0b247CiAgICAg
fSBzZWFyY2g7CisgICAgc3RydWN0IHsKKyAgICAgICAgRXZhc19PYmplY3QgKmhpc3RvcnlfYm94
OworICAgICAgICBFdmFzX09iamVjdCAqaGlzdG9yeV9saXN0OworICAgICAgICBFaW5hX0xpc3Qg
Kmhpc3RvcnlfbGlzdF9pdGVtczsKKyAgICB9IGhpc3Rvcnk7CiAgICAgaW50IGN1cnJlbnRfem9v
bV9sZXZlbDsgCiAgICAgVG9vbHRpcF9JbmZvcm1hdGlvbiB0b29sdGlwOwogICAgIENvbG9yX1Nl
bGVjdG9yIGNvbG9yX3NlbGVjdG9yOwpAQCAtMzk4LDYgKzQwNiwzMCBAQCBzZWFyY2hfYm94X2hp
ZGUoQnJvd3Nlcl9XaW5kb3cgKndpbmRvdykKICAgICBldmFzX29iamVjdF9mb2N1c19zZXQod2lu
ZG93LT5ld2tfdmlldywgRUlOQV9UUlVFKTsKIH0KIAorc3RhdGljIHZvaWQgCitoaXN0b3J5X2xp
c3RfaGlkZShCcm93c2VyX1dpbmRvdyAqd2luZG93KQoreworICAgIC8qIEhpZGUgaGlzdG9yeSBs
aXN0ICovCisgICAgZXZhc19vYmplY3RfaGlkZSh3aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9ib3gp
OworICAgIGV2YXNfb2JqZWN0X2hpZGUod2luZG93LT5oaXN0b3J5Lmhpc3RvcnlfbGlzdCk7Cisg
ICAgCisgICAgLyogRGVyZWZlcmVuY2UgdGhlIGxpc3QgaXRlbXMgYW5kIGNsZWFyIHRoZSBoaXN0
b3J5IGxpc3QgKi8KKyAgICB2b2lkICpkYXRhOyAgICAKKyAgICBFSU5BX0xJU1RfRlJFRSh3aW5k
b3ctPmhpc3RvcnkuaGlzdG9yeV9saXN0X2l0ZW1zLCBkYXRhKSB7CisgICAgICAgIGV3a19vYmpl
Y3RfdW5yZWYoZGF0YSk7CisgICAgfQorCisgICAgZWxtX2dlbmxpc3RfY2xlYXIod2luZG93LT5o
aXN0b3J5Lmhpc3RvcnlfbGlzdCk7CisgICAgCisgICAgLyogR2l2ZSBmb2N1cyBiYWNrIHRvIHRo
ZSB2aWV3ICovCisgICAgZWxtX29iamVjdF9mb2N1c19zZXQod2luZG93LT5oaXN0b3J5Lmhpc3Rv
cnlfYm94LCBFSU5BX0ZBTFNFKTsKKyAgICBlbG1fb2JqZWN0X2ZvY3VzX3NldCh3aW5kb3ctPmhp
c3RvcnkuaGlzdG9yeV9saXN0LCBFSU5BX0ZBTFNFKTsKKyAgICBldmFzX29iamVjdF9mb2N1c19z
ZXQod2luZG93LT5ld2tfdmlldywgRUlOQV9UUlVFKTsKKworICAgIC8qIFJlc2V0IGZsYWdzICov
CisgICAgbG9uZ3ByZXNzX2VuYWJsZWQgPSBFSU5BX0ZBTFNFOworfSAKKwogc3RhdGljIHZvaWQg
c2F2ZV9wYWdlX2NvbnRlbnRzX2NhbGxiYWNrKEV3a19QYWdlX0NvbnRlbnRzX1R5cGUgdHlwZSwg
Y29uc3QgY2hhciAqZGF0YSwgdm9pZCAqdXNlcl9kYXRhKQogewogICAgIEVldF9GaWxlICplZjsK
QEAgLTUwNSw2ICs1MzcsOCBAQCBvbl9rZXlfZG93bih2b2lkICp1c2VyX2RhdGEsIEV2YXMgKmUs
IEV2CiAgICAgfSBlbHNlIGlmICghc3RyY21wKGV2LT5rZXksICJFc2NhcGUiKSkgewogICAgICAg
ICBpZiAoZXZhc19vYmplY3RfdmlzaWJsZV9nZXQod2luZG93LT5zZWFyY2guc2VhcmNoX2Jhcikp
CiAgICAgICAgICAgICBzZWFyY2hfYm94X2hpZGUod2luZG93KTsKKyAgICAgICAgZWxzZSBpZiAo
ZXZhc19vYmplY3RfdmlzaWJsZV9nZXQod2luZG93LT5oaXN0b3J5Lmhpc3RvcnlfYm94KSkKKyAg
ICAgICAgICAgIGhpc3RvcnlfbGlzdF9oaWRlKHdpbmRvdyk7CiAgICAgICAgIGVsc2UgaWYgKGVs
bV93aW5fZnVsbHNjcmVlbl9nZXQod2luZG93LT5lbG1fd2luZG93KSkKICAgICAgICAgICAgIGV3
a192aWV3X2Z1bGxzY3JlZW5fZXhpdChld2tfdmlldyk7CiAgICAgfSBlbHNlIGlmIChjdHJsUHJl
c3NlZCAmJiAoIXN0cmNtcChldi0+a2V5LCAibWludXMiKSB8fCAhc3RyY21wKGV2LT5rZXksICJL
UF9TdWJ0cmFjdCIpKSkgewpAQCAtNTYzLDYgKzU5Nyw4IEBAIG9uX21vdXNlX2Rvd24odm9pZCAq
dXNlcl9kYXRhLCBFdmFzICplLAogICAgIC8qIENsZWFyIHNlbGVjdGlvbiBmcm9tIHRoZSBVUkwg
YmFyICovCiAgICAgZWxtX2VudHJ5X3NlbGVjdF9ub25lKHdpbmRvdy0+dXJsX2Jhcik7CiAKKyAg
ICBpZiAobG9uZ3ByZXNzX2VuYWJsZWQpCisgICAgICAgIGhpc3RvcnlfbGlzdF9oaWRlKHdpbmRv
dyk7CiAgICAgaWYgKGV2LT5idXR0b24gPT0gMSkKICAgICAgICAgdmlld19mb2N1c19zZXQod2lu
ZG93LCBFSU5BX1RSVUUpOwogICAgIGVsc2UgaWYgKGV2LT5idXR0b24gPT0gMikKQEAgLTEwMTIs
NiArMTA0OCw5IEBAIG9uX3NlYXJjaF9maWVsZF9jbGlja2VkKHZvaWQgKnVzZXJfZGF0YSwKIHN0
YXRpYyB2b2lkCiBvbl9iYWNrX2J1dHRvbl9jbGlja2VkKHZvaWQgKnVzZXJfZGF0YSwgRXZhc19P
YmplY3QgKmJhY2tfYnV0dG9uLCB2b2lkICpldmVudF9pbmZvKQogeworICAgIGlmIChsb25ncHJl
c3NfZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOworICAgIAogICAgIEJyb3dzZXJfV2luZG93ICp3
aW5kb3cgPSAoQnJvd3Nlcl9XaW5kb3cgKil1c2VyX2RhdGE7CiAKICAgICBld2tfdmlld19iYWNr
KHdpbmRvdy0+ZXdrX3ZpZXcpOwpAQCAtMTAyMiw2ICsxMDYxLDkgQEAgb25fYmFja19idXR0b25f
Y2xpY2tlZCh2b2lkICp1c2VyX2RhdGEsCiBzdGF0aWMgdm9pZAogb25fZm9yd2FyZF9idXR0b25f
Y2xpY2tlZCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpmb3J3YXJkX2J1dHRvbiwgdm9p
ZCAqZXZlbnRfaW5mbykKIHsKKyAgICBpZiAobG9uZ3ByZXNzX2VuYWJsZWQpCisgICAgICAgIHJl
dHVybjsKKwogICAgIEJyb3dzZXJfV2luZG93ICp3aW5kb3cgPSAoQnJvd3Nlcl9XaW5kb3cgKil1
c2VyX2RhdGE7CiAKICAgICBld2tfdmlld19mb3J3YXJkKHdpbmRvdy0+ZXdrX3ZpZXcpOwpAQCAt
MTA4Miw2ICsxMTI0LDExMCBAQCBvbl9zdG9wX2J1dHRvbl9jbGlja2VkKHZvaWQgKnVzZXJfZGF0
YSwKICAgICBld2tfdmlld19zdG9wKHdpbmRvdy0+ZXdrX3ZpZXcpOwogfQogCitzdGF0aWMgY2hh
ciAqCitsaXN0X2l0ZW1fbGFiZWxfZ2V0KHZvaWQgKmRhdGEsIEV2YXNfT2JqZWN0ICpvYmosIGNv
bnN0IGNoYXIgKnBhcnQpCit7CisgICAgaW50IGxlbiA9IHN0cmxlbigoY2hhciAqKWRhdGEpOwor
ICAgIGNoYXIgKmJ1ZiA9IChjaGFyICopbWFsbG9jKHNpemVvZihjaGFyKSAqIChsZW4gKyAxKSk7
CisgICAgc25wcmludGYoYnVmLCBsZW4gKyAxLCAiJXMiLCAoY2hhciAqKWRhdGEpOworICAgIHJl
dHVybiBidWY7Cit9CisKK3N0YXRpYyB2b2lkCitvbl9saXN0X2l0ZW1fc2VsZWN0KHZvaWQgKnVz
ZXJfZGF0YSwgRXZhc19PYmplY3QgKm9iaiwgdm9pZCAqZXZlbnRfaW5mbykKK3sKKyAgICBCcm93
c2VyX1dpbmRvdyAqd2luZG93ID0gZXZhc19vYmplY3RfZGF0YV9nZXQob2JqLCAiQnJvd3Nlcl9X
aW5kb3ciKTsKKyAgICBld2tfdmlld19uYXZpZ2F0ZV90byh3aW5kb3ctPmV3a192aWV3LCB1c2Vy
X2RhdGEpOyAKKyAgICBoaXN0b3J5X2xpc3RfaGlkZSh3aW5kb3cpOworICAgIGV2YXNfb2JqZWN0
X2RhdGFfZGVsKG9iaiwgIkJyb3dzZXJfV2luZG93Iik7Cit9CisKK3N0YXRpYyB2b2lkCituYXZp
Z2F0aW9uX2J1dHRvbl9sb25ncHJlc3NfcHJvY2Vzcyh2b2lkICp1c2VyX2RhdGEsIEVpbmFfQm9v
bCBmb3J3YXJkX25hdmlnYXRpb25fZW5hYmxlZCkKK3sKKyAgICBpZiAobG9uZ3ByZXNzX2VuYWJs
ZWQpCisgICAgICAgIHJldHVybjsKKworICAgIGxvbmdwcmVzc19lbmFibGVkID0gRUlOQV9UUlVF
OworICAgIEJyb3dzZXJfV2luZG93ICp3aW5kb3cgPSAoQnJvd3Nlcl9XaW5kb3cgKil1c2VyX2Rh
dGE7CisgICAgCisgICAgRXdrX0JhY2tfRm9yd2FyZF9MaXN0ICpsaXN0ID0gZXdrX3ZpZXdfYmFj
a19mb3J3YXJkX2xpc3RfZ2V0KHdpbmRvdy0+ZXdrX3ZpZXcpOworICAgIGNvbnN0IEVpbmFfTGlz
dCAqbDsKKyAgICB2b2lkICpkYXRhOworICAgIHN0YXRpYyBFbG1fR2VubGlzdF9JdGVtX0NsYXNz
ICpsaXN0X2l0ZW0gPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKnRpdGxlID0gTlVMTDsKKyAgICBp
bnQgaXRlbV9jb3VudDsKKyAgICBpbnQgeDsKKyAgICBpbnQgeTsKKyAgICBpbnQgd2lkdGg7Cisg
ICAgaW50IGhlaWdodDsKKyAgICBzaXplX3QgaW5kZXg7CisgICAgCisgICAgZXZhc19vYmplY3Rf
ZGF0YV9zZXQod2luZG93LT5oaXN0b3J5Lmhpc3RvcnlfbGlzdCwgIkJyb3dzZXJfV2luZG93Iiwg
d2luZG93KTsKKworICAgIGlmIChmb3J3YXJkX25hdmlnYXRpb25fZW5hYmxlZCkKKyAgICAgICAg
d2luZG93LT5oaXN0b3J5Lmhpc3RvcnlfbGlzdF9pdGVtcyA9IGV3a19iYWNrX2ZvcndhcmRfbGlz
dF9mb3J3YXJkX2l0ZW1zX2NvcHkobGlzdCk7IAorICAgIGVsc2UKKyAgICAgICAgd2luZG93LT5o
aXN0b3J5Lmhpc3RvcnlfbGlzdF9pdGVtcyA9IGV3a19iYWNrX2ZvcndhcmRfbGlzdF9iYWNrX2l0
ZW1zX2NvcHkobGlzdCk7CisKKyAgICBpZiAoIWxpc3RfaXRlbSkgeworICAgICAgICBsaXN0X2l0
ZW0gPSBlbG1fZ2VubGlzdF9pdGVtX2NsYXNzX25ldygpOworICAgICAgICBsaXN0X2l0ZW0tPml0
ZW1fc3R5bGUgPSAiZGVmYXVsdCI7CisgICAgICAgIGxpc3RfaXRlbS0+ZnVuYy50ZXh0X2dldCA9
IGxpc3RfaXRlbV9sYWJlbF9nZXQ7CisgICAgICAgIGxpc3RfaXRlbS0+ZnVuYy5jb250ZW50X2dl
dCA9IE5VTEw7CisgICAgICAgIGxpc3RfaXRlbS0+ZnVuYy5zdGF0ZV9nZXQgPSBOVUxMOworICAg
ICAgICBsaXN0X2l0ZW0tPmZ1bmMuZGVsID0gTlVMTDsKKyAgICB9CisKKyAgICBpdGVtX2NvdW50
ID0gZWluYV9saXN0X2NvdW50KHdpbmRvdy0+aGlzdG9yeS5oaXN0b3J5X2xpc3RfaXRlbXMpOwor
ICAgIGluZm8oIm5hdmlnYXRpb25fYnV0dG9uX2xvbmdwcmVzc19wcm9jZXNzIDogSXRlbSBjb3Vu
dCA9ICVkIGZvcndhcmRfbmF2aWdhdGlvbl9lbmFibGVkID0gJWQiLCBpdGVtX2NvdW50LCBmb3J3
YXJkX25hdmlnYXRpb25fZW5hYmxlZCk7CisKKyAgICBFSU5BX0xJU1RfRk9SRUFDSCh3aW5kb3ct
Pmhpc3RvcnkuaGlzdG9yeV9saXN0X2l0ZW1zLCBsLCBkYXRhKSB7CisgICAgICAgIHRpdGxlID0g
ZXdrX2JhY2tfZm9yd2FyZF9saXN0X2l0ZW1fdGl0bGVfZ2V0KGRhdGEpOworICAgICAgICBpbmZv
KCIgdGl0bGUgPSAlcyIsIHRpdGxlKTsKKyAgICAgICAgZWxtX2dlbmxpc3RfaXRlbV9hcHBlbmQo
d2luZG93LT5oaXN0b3J5Lmhpc3RvcnlfbGlzdCwgbGlzdF9pdGVtLCAodm9pZCAqKSh0aXRsZSks
IE5VTEwsIEVMTV9HRU5MSVNUX0lURU1fTk9ORSwgb25fbGlzdF9pdGVtX3NlbGVjdCwgZGF0YSk7
CisgICAgfQorICAgIAorICAgIGlmIChpdGVtX2NvdW50ID4gMCkgeworICAgICAgICBldmFzX29i
amVjdF9nZW9tZXRyeV9nZXQod2luZG93LT5lbG1fd2luZG93LCAmeCwgJnksICZ3aWR0aCwgJmhl
aWdodCk7CisgICAgICAgIGVsbV9saXN0X2dvKHdpbmRvdy0+aGlzdG9yeS5oaXN0b3J5X2xpc3Qp
OworICAgICAgICBldmFzX29iamVjdF9yZXNpemUod2luZG93LT5oaXN0b3J5Lmhpc3RvcnlfYm94
ICwgd2lkdGggLyAzICwgTElTVF9JVEVNX0hFSUdIVCAqIGl0ZW1fY291bnQpOworCisgICAgICAg
IGlmIChmb3J3YXJkX25hdmlnYXRpb25fZW5hYmxlZCkgeworICAgICAgICAgICAgZXZhc19vYmpl
Y3RfbW92ZSh3aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9ib3ggLCB4ICsgVE9PTF9CQVJfQlVUVE9O
X1NJWkUgKyAxLCB5ICsgVE9PTF9CQVJfQlVUVE9OX1NJWkUpOworICAgICAgICAgICAgZXZhc19v
YmplY3RfbW92ZSh3aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9saXN0ICwgeCArIFRPT0xfQkFSX0JV
VFRPTl9TSVpFICsgMSwgeSArIFRPT0xfQkFSX0JVVFRPTl9TSVpFKTsgIAorICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgZXZhc19vYmplY3RfbW92ZSh3aW5kb3ctPmhpc3RvcnkuaGlzdG9y
eV9ib3ggLCB4LCB5ICsgVE9PTF9CQVJfQlVUVE9OX1NJWkUpOworICAgICAgICAgICAgZXZhc19v
YmplY3RfbW92ZSh3aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9saXN0ICwgeCwgeSArIFRPT0xfQkFS
X0JVVFRPTl9TSVpFKTsgIAorICAgICAgICB9CisgICAgCisgICAgICAgIGVsbV9nZW5saXN0X21v
ZGVfc2V0KHdpbmRvdy0+aGlzdG9yeS5oaXN0b3J5X2xpc3QsIEVMTV9MSVNUX0NPTVBSRVNTKTsK
KyAgICAgICAgZXZhc19vYmplY3Rfc2hvdyh3aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9ib3gpOwor
ICAgICAgICBldmFzX29iamVjdF9zaG93KHdpbmRvdy0+aGlzdG9yeS5oaXN0b3J5X2xpc3QpOwor
ICAgICAgICBldmFzX29iamVjdF9mb2N1c19zZXQod2luZG93LT5ld2tfdmlldywgRUlOQV9GQUxT
RSk7CisgICAgICAgIGVsbV9vYmplY3RfZm9jdXNfc2V0KHdpbmRvdy0+aGlzdG9yeS5oaXN0b3J5
X2xpc3QsIEVJTkFfVFJVRSk7CisgICAgfSBlbHNlCisgICAgICAgIGxvbmdwcmVzc19lbmFibGVk
ID0gRUlOQV9GQUxTRTsKK30KKworc3RhdGljIHZvaWQKK29uX2ZvcndhcmRfYnV0dG9uX2xvbmdw
cmVzcyh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpmb3J3YXJkX2J1dHRvbiwgdm9pZCAq
ZXZlbnRfaW5mbykKK3sKKyAgICBCcm93c2VyX1dpbmRvdyAqd2luZG93ID0gKEJyb3dzZXJfV2lu
ZG93ICopdXNlcl9kYXRhOworCisgICAgbmF2aWdhdGlvbl9idXR0b25fbG9uZ3ByZXNzX3Byb2Nl
c3ModXNlcl9kYXRhLCBFSU5BX1RSVUUpOworICAgIGVsbV9vYmplY3RfZGlzYWJsZWRfc2V0KGZv
cndhcmRfYnV0dG9uLCAhZXdrX3ZpZXdfYmFja19wb3NzaWJsZSh3aW5kb3ctPmV3a192aWV3KSk7
Cit9CisKK3N0YXRpYyB2b2lkCitvbl9iYWNrX2J1dHRvbl9sb25ncHJlc3Modm9pZCAqdXNlcl9k
YXRhLCBFdmFzX09iamVjdCAqYmFja19idXR0b24sIHZvaWQgKmV2ZW50X2luZm8pCit7CisgICAg
QnJvd3Nlcl9XaW5kb3cgKndpbmRvdyA9IChCcm93c2VyX1dpbmRvdyAqKXVzZXJfZGF0YTsKKwor
ICAgIG5hdmlnYXRpb25fYnV0dG9uX2xvbmdwcmVzc19wcm9jZXNzKHVzZXJfZGF0YSwgRUlOQV9G
QUxTRSk7CisgICAgZWxtX29iamVjdF9kaXNhYmxlZF9zZXQoYmFja19idXR0b24sICFld2tfdmll
d19iYWNrX3Bvc3NpYmxlKHdpbmRvdy0+ZXdrX3ZpZXcpKTsKK30KKwogc3RhdGljIHZvaWQKIHF1
aXRfZXZlbnRfbG9vcCh2b2lkICp1c2VyX2RhdGEsIEV2YXNfT2JqZWN0ICpvYmosIHZvaWQgKmV2
ZW50X2luZm8pCiB7CkBAIC0xODEzLDYgKzE5NTksNyBAQCBzdGF0aWMgQnJvd3Nlcl9XaW5kb3cg
KndpbmRvd19jcmVhdGUoRXZhCiAgICAgLyogQ3JlYXRlIEJhY2sgYnV0dG9uICovCiAgICAgd2lu
ZG93LT5iYWNrX2J1dHRvbiA9IGNyZWF0ZV90b29sYmFyX2J1dHRvbih3aW5kb3ctPmVsbV93aW5k
b3csICJhcnJvd19sZWZ0Iik7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdp
bmRvdy0+YmFja19idXR0b24sICJjbGlja2VkIiwgb25fYmFja19idXR0b25fY2xpY2tlZCwgd2lu
ZG93KTsKKyAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2luZG93LT5iYWNrX2J1
dHRvbiwgInJlcGVhdGVkIiwgb25fYmFja19idXR0b25fbG9uZ3ByZXNzLCB3aW5kb3cpOwogICAg
IGVsbV9vYmplY3RfZGlzYWJsZWRfc2V0KHdpbmRvdy0+YmFja19idXR0b24sIEVJTkFfVFJVRSk7
CiAgICAgZXZhc19vYmplY3Rfc2l6ZV9oaW50X3dlaWdodF9zZXQod2luZG93LT5iYWNrX2J1dHRv
biwgMC4wLCBFVkFTX0hJTlRfRVhQQU5EKTsKICAgICBldmFzX29iamVjdF9zaXplX2hpbnRfYWxp
Z25fc2V0KHdpbmRvdy0+YmFja19idXR0b24sIDAuMCwgMC41KTsKQEAgLTE4MjIsNiArMTk2OSw3
IEBAIHN0YXRpYyBCcm93c2VyX1dpbmRvdyAqd2luZG93X2NyZWF0ZShFdmEKICAgICAvKiBDcmVh
dGUgRm9yd2FyZCBidXR0b24gKi8KICAgICB3aW5kb3ctPmZvcndhcmRfYnV0dG9uID0gY3JlYXRl
X3Rvb2xiYXJfYnV0dG9uKHdpbmRvdy0+ZWxtX3dpbmRvdywgImFycm93X3JpZ2h0Iik7CiAgICAg
ZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKHdpbmRvdy0+Zm9yd2FyZF9idXR0b24sICJj
bGlja2VkIiwgb25fZm9yd2FyZF9idXR0b25fY2xpY2tlZCwgd2luZG93KTsKKyAgICBldmFzX29i
amVjdF9zbWFydF9jYWxsYmFja19hZGQod2luZG93LT5mb3J3YXJkX2J1dHRvbiwgInJlcGVhdGVk
Iiwgb25fZm9yd2FyZF9idXR0b25fbG9uZ3ByZXNzLCB3aW5kb3cpOwogICAgIGVsbV9vYmplY3Rf
ZGlzYWJsZWRfc2V0KHdpbmRvdy0+Zm9yd2FyZF9idXR0b24sIEVJTkFfVFJVRSk7CiAgICAgZXZh
c19vYmplY3Rfc2l6ZV9oaW50X3dlaWdodF9zZXQod2luZG93LT5mb3J3YXJkX2J1dHRvbiwgMC4w
LCBFVkFTX0hJTlRfRVhQQU5EKTsKICAgICBldmFzX29iamVjdF9zaXplX2hpbnRfYWxpZ25fc2V0
KHdpbmRvdy0+Zm9yd2FyZF9idXR0b24sIDAuMCwgMC41KTsKQEAgLTE5MjMsNiArMjA3MSwxOCBA
QCBzdGF0aWMgQnJvd3Nlcl9XaW5kb3cgKndpbmRvd19jcmVhdGUoRXZhCiAgICAgZXZhc19vYmpl
Y3Rfc2l6ZV9oaW50X21pbl9zZXQod2luZG93LT5zZWFyY2guY2xvc2VfYnV0dG9uLCBTRUFSQ0hf
QlVUVE9OX1NJWkUsIFNFQVJDSF9CVVRUT05fU0laRSk7CiAgICAgZWxtX2JveF9wYWNrX2VuZCh3
aW5kb3ctPnNlYXJjaC5zZWFyY2hfYmFyLCB3aW5kb3ctPnNlYXJjaC5jbG9zZV9idXR0b24pOwog
CisgICAgLyogQ3JlYXRlIGhpc3RvcnkgYm94ICovCisgICAgd2luZG93LT5oaXN0b3J5Lmhpc3Rv
cnlfYm94ID0gZWxtX2JveF9hZGQod2luZG93LT5lbG1fd2luZG93KTsKKyAgICBldmFzX29iamVj
dF9zaXplX2hpbnRfYXNwZWN0X3NldCh3aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9ib3gsIEVWQVNf
QVNQRUNUX0NPTlRST0xfVkVSVElDQUwsIDEsIDEpOworICAgIGV2YXNfb2JqZWN0X3NpemVfaGlu
dF93ZWlnaHRfc2V0KHdpbmRvdy0+aGlzdG9yeS5oaXN0b3J5X2JveCwgRVZBU19ISU5UX0VYUEFO
RCAsIEVWQVNfSElOVF9FWFBBTkQpOworCisgICAgLyogQ3JlYXRlIGhpc3RvcnkgbGlzdCAqLwor
ICAgIHdpbmRvdy0+aGlzdG9yeS5oaXN0b3J5X2xpc3QgPSBlbG1fZ2VubGlzdF9hZGQod2luZG93
LT5lbG1fd2luZG93KTsKKyAgICBldmFzX29iamVjdF9zaXplX2hpbnRfd2VpZ2h0X3NldCh3aW5k
b3ctPmhpc3RvcnkuaGlzdG9yeV9saXN0LCBFVkFTX0hJTlRfRVhQQU5ELCBFVkFTX0hJTlRfRVhQ
QU5EKTsKKyAgICBldmFzX29iamVjdF9zaXplX2hpbnRfYWxpZ25fc2V0KHdpbmRvdy0+aGlzdG9y
eS5oaXN0b3J5X2xpc3QsIEVWQVNfSElOVF9GSUxMLCBFVkFTX0hJTlRfRklMTCk7CisgICAgZWxt
X3dpbl9yZXNpemVfb2JqZWN0X2FkZCh3aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9saXN0LCB3aW5k
b3ctPmhpc3RvcnkuaGlzdG9yeV9ib3gpOworICAgIGVsbV9ib3hfcGFja19lbmQod2luZG93LT5o
aXN0b3J5Lmhpc3RvcnlfYm94LCB3aW5kb3ctPmhpc3RvcnkuaGlzdG9yeV9saXN0KTsKKyAgICAK
ICAgICAvKiBDcmVhdGUgZXdrX3ZpZXcgKi8KICAgICBFd2tfVmlld19TbWFydF9DbGFzcyAqZXdr
Vmlld0NsYXNzID0gbWluaUJyb3dzZXJWaWV3U21hcnRDbGFzcygpOwogICAgIGV3a1ZpZXdDbGFz
cy0+cnVuX2phdmFzY3JpcHRfYWxlcnQgPSBvbl9qYXZhc2NyaXB0X2FsZXJ0OwpAQCAtMjAxNSw2
ICsyMTc1LDExIEBAIHN0YXRpYyBCcm93c2VyX1dpbmRvdyAqd2luZG93X2NyZWF0ZShFdmEKICAg
ICBldmFzX29iamVjdF9ldmVudF9jYWxsYmFja19hZGQod2luZG93LT5ld2tfdmlldywgRVZBU19D
QUxMQkFDS19NT1VTRV9PVVQsIG9uX21vdXNlX291dCwgd2luZG93KTsKICAgICBldmFzX29iamVj
dF9ldmVudF9jYWxsYmFja19hZGQod2luZG93LT5ld2tfdmlldywgRVZBU19DQUxMQkFDS19NT1VT
RV9NT1ZFLCBvbl9tb3VzZV9tb3ZlLCB3aW5kb3cpOwogICAgIGV2YXNfb2JqZWN0X2V2ZW50X2Nh
bGxiYWNrX2FkZCh3aW5kb3ctPmVsbV93aW5kb3csIEVWQVNfQ0FMTEJBQ0tfUkVTSVpFLCBvbl93
aW5kb3dfcmVzaXplLCB3aW5kb3cpOworICAgIAorICAgIGVsbV9idXR0b25fYXV0b3JlcGVhdF9z
ZXQod2luZG93LT5iYWNrX2J1dHRvbiwgRUlOQV9UUlVFKTsKKyAgICBlbG1fYnV0dG9uX2F1dG9y
ZXBlYXRfc2V0KHdpbmRvdy0+Zm9yd2FyZF9idXR0b24sIEVJTkFfVFJVRSk7CisgICAgZWxtX2J1
dHRvbl9hdXRvcmVwZWF0X2luaXRpYWxfdGltZW91dF9zZXQod2luZG93LT5iYWNrX2J1dHRvbiwg
TE9OR1BSRVNTX0lOVEVSVkFMX1NFQ09ORFMpOworICAgIGVsbV9idXR0b25fYXV0b3JlcGVhdF9p
bml0aWFsX3RpbWVvdXRfc2V0KHdpbmRvdy0+Zm9yd2FyZF9idXR0b24sIExPTkdQUkVTU19JTlRF
UlZBTF9TRUNPTkRTKTsKIAogICAgIHJldHVybiB3aW5kb3c7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>